1 基于模型的测试和验证工具
基于模型的开发(Model-Based Development)的设计方法以其直观、快速、高效等优势,在汽车、航空航天等的基于模型的开发嵌入式控制系统设计中得到广泛的应用。 它不同于传统的设计方法,不是使用复杂的结构和编程语言,而是使用MBD平台来搭建各种功能的模块。通过模块的仿真工具,可以进行系统测试,产生快速原型等。不仅可以提前和加强测试与验证,而且可以利用Hardware-in-the-loop仿真方法,实现快速高效的系统动态测试。
传统方式的设计方法是先设计的硬件系统原型实体,然后进行测试并在后续的设计中不断改进,但是在硬件阶段发现问题很难,而且需要大量的时间和成本。基于模型的设计就是先建立算法模型、物理模型以及环境模型,然后基于MATLAB/Simulink平台,进行系统测试与仿真,在后续的设计中不断进行仿真,再用自动代码创建工具产生实际系统所需的软件代码。实际上是将测试提前到了仿真阶段,设计制造人员能尽早发现并解决问题。基于模型的设计在最后阶段要进行硬件原型测试,主要是为了验证良好的设计,并不是要找出不良的设计。
Reactis是针对Simulink/Stateflow环境生成的模型文件*.mdl,产生测试用例,进行仿真、测试和验证的工具。 它使得设计工程师不需要等到V模型的右侧才进行测试验证,而是在模型设计阶段,即系统结构设计和子系统模块设计阶段就能够对系统进行测试验证。在更早的设计阶段保证系统的安全性和功能的正确。同时,Reactis高效、高覆盖度的测试用例也可以用于独立C代码的测试,单元测试和系统测试。
Reactis是一款基于模型的测试、仿真和验证工具。其中包含三个子功能模块:Reactis Tester——生成精简高效的测试用例;Reactis Simulator —— 对模型进行仿真测试;Reactis Validator —— 对模型与系统要求的一致性进行验证。
2 Reactis的主要特点
• 根据Simulink/Stateflow或TargetLink的模型自动创建测试用例
• 用户可以自定义测试目标
• 用户可以自定义测试用例的创建准则
• 自动化的测试和验证功能,更快完成模型和系统的详尽分析,帮助客户节约大量的时间和成本
• 支持MC/DC (Modified Condition Decision Coverage)准则
• 提供详细的覆盖范围报告,包括测试集覆盖到的以及未覆盖的内容
• 有断点设置功能,用户可以单步执行或是选择以模块为单位执行
• 与传统的调试工具界面相似,用户使用方便
• 附有详细的例子和教程,可帮助用户尽快学习并掌握
3 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.
4 Reactis子功能模块——Simulator
Reactis Simulator使用户能够可视化执行Simulink/Stateflow模型。模拟器的用户界面是与传统的编程语言调试界面相似,用户在仿真模型时可选择单步执行(step-by-step)或者以模块为单位执行(block-by-block) ,也可以设置断点。模拟器还可以
• 在仿真时反向执行
• 可控的重播Reactis Tester创建的测试
• 图形化显示不同的测试准则
• 微调Tester产生的测试案例
示意图:Reactis Simulator提供Simulink模型高级调试环境
5 Reactis子功能模块Validator
Reactis Validator自动在模型中搜索违反了用户指定规则的部分,当Validator发现有违规发生,就会自动创建一个测试用例来证明该违规事件,然后就可以在Reactis Simulator中执行该测试,了解事件发生的顺序来查找问题的原因。这个工具可以早期发现设计错误和不一致之处,并减少了设计审查所需的手工工作。