Reactis模型及代码测试

基于模型的开发(Model-Based Development)的设计方法以其直观、快速、高效等优势,在汽车、航空航天等的基于模型的开发嵌入式控制系统设计中得到广泛的应用。 它不同于传统的设计方法,不是使用复杂的结构和编程语言,而是使用MBD平台来搭建各种功能的模块。通过模块的仿真工具,可以进行系统测试,产生快速原型等。不仅可以提前和加强测试与验证,而且可以利用Hardware-in-the-loop仿真方法,实现快速高效的系统动态测试。

传统方式的设计方法是先设计的硬件系统原型实体,然后进行测试并在后续的设计中不断改进,但是在硬件阶段发现问题很难,而且需要大量的时间和成本。基于模型的设计就是先建立算法模型、物理模型以及环境模型,然后基于MATLABSimulink平台,进行系统测试与仿真,在后续的设计中不断进行仿真,再用自动代码创建工具产生实际系统所需的软件代码。实际上是将测试提前到了仿真阶段,设计制造人员能尽早发现并解决问题。基于模型的设计在最后阶段要进行硬件原型测试,主要是为了验证良好的设计,并不是要找出不良的设计。


Reactis是针对Simulink/Stateflow环境生成的模型文件*.mdl,产生测试用例,进行仿真、测试和验证的工具。 它使得设计工程师不需要等到V模型的右侧才进行测试验证,而是在模型设计阶段,即系统结构设计和子系统模块设计阶段就能够对系统进行测试验证。在更早的设计阶段保证系统的安全性

和功能的正确。同时,Reactis高效、高覆盖度的测试用例也可以用于独立C代码的测试,单元测试和系统测试。

Reactis主要有三个模块:

1.      Reactis 基于模型的测试、仿真和验证工具。其中包含三个子功能模块:Reactis Tester - 生成精简高效的测试用例;Reactis Simulator --- 对模型进行仿真测试;Reactis Validator --- 对模型与系统要求的一致性进行验证。

2.      Reactis C plug-in –是Reactis软件的插件,可以对系统中通过S-Function连接的C语言代码进行白盒子检查。

3.      Reactis for C Standalone - 是面向C代码的检查、测试软件。它可以完全独立运行,不需要Matlab/Simulink环境。支持静态分析和动态分析两种模式。

Reactis的主要特点

    根据Simulink/StateflowTargetLink的模型自动创建测试用例

    用户可以自定义测试目标

    用户可以自定义测试用例的创建准则

    自动化的测试和验证功能,更快完成模型和系统的详尽分析,帮助客户节约大量的时间和成本

    支持MC/DC (Modified Condition Decision Coverage)准则

    提供详细的覆盖范围报告,包括测试集覆盖到的以及未覆盖的内容

    有断点设置功能,用户可以单步执行或是选择以模块为单位执行

    与传统的调试工具界面相似,用户使用方便

    附有详细的例子和教程,可帮助用户尽快学习并掌握

Reactis子功能模块Tester

Reactis以其专利的算法,快速生成高覆盖度的测试用例,并删除冗余的测试用例。这样生成的测试用例不仅可以用于模型测试,也可以导出*.m/*.mat/*.csv等格式文件,用于后期的代码测试,单元测试和系统测试。 Reactis的测试用例生成器可以对已有的测试用例进行扩展,可以随机生成测试用例,可以根据系统的特定方面,如分支,MC/DC等等进行扩展。如下图所示:

覆盖规则包括:Decision, Condition, and Modified Condition/Decision Coverage (MC/DC).

针对Simulink的覆盖规则:Conditional Subsystem Coverage, Branch Coverage, Lookup Table Coverage.

针对Stateflow的覆盖规则:State, condition-action, transition-action.

Reactis子功能模块Simulator

Reactis Simulator使用户能够可视化执行Simulink/Stateflow模型。模拟器的用户界面是与传统的编程语言调试界面相似,用户在仿真模型时可选择单步执行(step-by-step)或者以模块为单位执行(block-by-block ,也可以设置断点。模拟器还可以

    在仿真时反向执行

    可控的重播Reactis Tester创建的测试

    图形化显示不同的测试准则

    微调Tester产生的测试案例

Reactis子功能模块Validator

Reactis Validator自动在模型中搜索违反了用户指定规则的部分,当Validator发现有违规发生,就会自动创建一个测试用例来证明该违规事件,然后就可以在Reactis Simulator中执行该测试,了解事件发生的顺序来查找问题的原因。这个工具可以早期发现设计错误和不一致之处,并减少了设计审查所需的手工工作。


模块Reactis for C Plugin

Reactis for C Plugin 无缝集成Reactis,提供模型中C代码(S-函数或Stateflow中的自定义C代码)的白盒分析。可以在C Plugin的仿真过程中从SimulinkStateflow中跳入C代码的程序中,跟踪其中数值的变化,遍历程度,设置断点等。Reactis C Plugin 同样支持 TargetLink® C 代码的测试。

Reactis for C Standalone - C 代码测试和验证

Reactis for C 基于C代码自动生成全面的、简洁的测试,发现运行错误,追踪覆盖(Statement, Decision, Condition, MC/DC)。当检测到错误后,你可以很容易重新运行导致问题的指定执行序列,从而理解、诊断、修正bug

Reactis for C Standalone 子功能模块Tester

Reactis Tester基于覆盖规则生成测试套数组,检查和标记C代码中的运行错误。C代码中很容易发审内存错误,而且很难调试。内存错误通常发生在程序读取或写入到一个无效的地址。由于C语言允许程序员直接访问程序内存,好处是可以提高性能,但也允许软件访问任意的内存位置,因此内存错误发生的几率特别高。典型的内存错误包括索引超出范围、缓冲区溢出、悬浮堆指针(内存释放后访问堆分配内存),悬浮栈指针(内存释放后访问栈分配内存)、使用指向不正确数值的指针等。Reactis Tester不仅可以检测到这些错误,并且返回可以运行在Reactis Simulator中的测试套件,精确找到错误的潜在原因

覆盖规则包括:Statement, Decision, Condition, 以及 Modified Condition/Decision Coverage (MC/DC).

Reactis for C Standalone 子功能模块Simulator

Simulator功能包括:

    执行单个语句;进入、跳过、跳出函数;一次执行所有步或多步。

    逆向运行。

    通过移动鼠标、打开scope、或添加到变量观察器中,查看数据值。

    红色高亮显示未执行的语句部分。

    生成详细的覆盖报告。

    断点设置。


Reactis for C Standalone 子功能模块Validator 

消除运行错误是很重要的一个环节,但仅仅做这一件事并不能得到高质量的软件。一个程序不崩溃,但完成不正确的动作是不能接受的。Reactis Validator提供了工具,制定和执行检查你的程序是否运行良好,实现期望的功能。执行检查的方式类似于C的警告机制。


应用

客户行业:汽车、地面运输、航天、军事、半导体、重型装备等行业。

客户分布:加拿大、法国、德国、英国、匈牙利、印度、日本、韩国、美国、中国大陆、中国台湾等国家和地区。

日本客户:AISINAISIN AWDENSOHITACHIHONDA ELESYSISUZUJATCOMAZDANISSANSUZUKITOYOTATRANSTRONTTDC等。

用户案例

福特汽车公司

根据福特汽车公司发布的报告,Reactive Systems, Inc. (RSI)Reactis工具使工程师能够侦测细微的设计错误,而这些错误在使用传统的验证方法时未被发现。

该报告描述了在电动座椅控制器和自动变速器设计这两个汽车应用中使用了Reactis。该报告指出,对座椅控制器软件进行测试是令人难以想象的复杂和富有挑战性:“这种复杂程度的模型,通常需要大量的时间来创建合适的输入,来保证模型中得所有部分都能被执行到。” Reactis通过自动创建这些输入从而大幅度加快了这一进程的速度。该报告还指出,在分析了座位控制器软件时, Reactis “直接发现了一个变量溢出错误,进而发现了两个逻辑错误……而这些错误在之前进行的人工测试中完全没被发现。”报告还介绍了使用Reactis为自器模型创建高品质的测试数据,这些数据用来确保最终实现的软件与模型相一致。

作为美国国防高级研究项目署( DARPA )赞助的基于模型的嵌入式软件设计项目(Model-Based Integration of Embedded Software MoBIES)报告的一部分,福特公布了他们的这个成功经历,报告名称为"Automated Unit Test Vector Generation",在Berkeley维护的MoBIES网站上可以找到。


手机:18610567442(陈先生)座机:0531-88289902

邮箱: support@fuelcellin.com

地址: 山东省济南市历下区齐鲁文化创意基地17号楼