模型功能测试工具
Model Quality Tester (MQTester)
可点击下方按钮申请免费试用
模型功能测试工具
Model Quality Tester(MQTester)
MQTester 2024已经发布,支持matlab2010a-2024b, TargetLink 3.0-4.2。新版本各方面的性能均得到了广泛的提升,详情请下载MQTester2025亮点说明或者Relea。
Features
功能一览
模型测试工具的用途
MQTester是针对嵌入式系统的基于模型的测试工具,支持所有的测试过程:包括测试建模、测试执行、测试评估以及测试报告的生成。在模型测试中,测试环境生成、测试用例编写及测试结果评估是常见的难点, MQT在这三个方面做出了优化的解决方案,使得测试过程变得简单迅速。
建立测试环境
只要被测对象位于一个子系统中,并且模型能够仿真,MQTester就能检测到模型的各项参数,包括所用参数、所调用库路径、所使用的数据字典等,只需要指定被测子系统,MQTester就能自动生成测试环境。MQTester既能为开环系统生成测试环境,也能为闭环系统生成测试环境,在闭环测试中可以只关心被测对象的结果、覆盖度等指标,并且在SIL测试时能只为被测对象建立SIL模块。
测试用例生成
MQTester提供两种生成测试用例的方式,一种是按照需求使用自定义的脚本语言生成测试用例,这种情况下,系统会自动分析被测对象接口,所有的信号及参数信息都呈现到使用者面前。另一种是按照模型的架构自动生成满足最大覆盖度的测试用例,MQTester中使用一个命令即可自动生成用例。
测试结果评估
MQTester提供多种评估方式,适用于各种规模的测试项目:
人工评估: 通过人工查看输入输出信号判断模型是否满足需求
信号比较:通过配置自动进行MIL SIL PIL 及参考信号之间的比较,自动给出比较结果
期望值:在定义输入信号时为输出信号定义期望值,系统自动和模型输出比较
评估函数:按照需求书写函数以计算输出信号随输入信号变化的期望值,自动和系统输出比较,给出评估结果。
故障注入及标定量修改
标定量修改功能可以高效快速测试模型中的标定量的各种变化情况;故障注入可以用简单的方法测试模型对非法信号的处理功能,同时也是界面测试所必须的功能。MQTester实现了在模型层面的故障注入及参数修改,同时也支持在产生的代码中的修改。
全组合测试用例
测试用例的产生和测试结果的评估在测试过程中往往花费较多的时间,全组合测试用例生成功能可以在相当程度上减轻此工作量。通过撷取模型中输入信号的数据类型及数据范围等信息,系统自动产生配置文件,并选取了输入信号的部分关键点,通过人工干预,增删参与组合的信号及其关健值,加入评估信息,自动生成全组合测试用例。在此过程中还可以为每个组合给出相应输出信号的期望值,从而达到结果评估的自动化
评估函数的自动生成
在定义输入信号值时使用MQTester提供的期望值函数可以由系统自动生成评估函数。MQTester提供了多种期望值函数,覆盖测试工作中的大多数需求。
信号查看
信号查看器提供对测试过程中各种输入输出信号的查看、比较,任意放大缩小,可以任意选择多个信号显示在同一个视图中以方便细节对比。
测试质量监测
一个完整的测试需要各项测试的工作都按照标准的要求完成应有的工作,例如,需要要被测试用例全部覆盖,各项工作都要进行相应的审核工作,测试结果要全部进行评估,结构覆盖度达到一定要求等。 MQTester提供完整的检测指标对测试工作进行评估。
需求追踪
需求是测试人员执行测试的输入条件,测试的目的就是保证设计完成的系统最终能够符合需求,所以对于一个优秀的测试软件而言,与需求系统之间的关联以及追踪是一个必不可缺的特性,现在众多的标准都对需求管理有着严格的要求,例如IEC 61508、DO-178B、EN50128以及ISO 26262。
持续集成支持
MQTester支持在Jenkins中的持续集成,通过配置可以在jenkins中通过多种方式触发MQTester的执行,从而达到模型测试的自动执行,节省时间,提高效率。
FAQs
常见测试难点与解决方案
基于模型的高安全、高复杂性系统开发过程中的多项测试难题提供解决方案
Simulink中的Data Store Memory(DSM)变量是系统的全局变量,在模型中起到在部件之间进行数据交换的作用,通过记录全局变量的变化,可以为快速定位问题提供关键数据支撑,尤其是stateflow中使用的全局变量。
解决方法:自动识别Simulink模型及Stateflow所使用的各种DSM,包括使用DSM模块的情况及使用Simulink.Signal对象的情况,并综合考虑这些DSM的作用范围,针对不同的DSM提供正确的方式自动处理,从而达到对测试对象中使用的 Data Store Memory 变量的进行自动记录的能力。
在实际应用中,并不是所有的DSM都需要记录其内容,因此需要提供用户选择界面,选择需要进行记录的变量。


用户选择后,自动根据变量的使用方式采用不同的方式设置记录属性或在基础工作区生成对应变量,免去手动查找与设置的繁琐,轻松实现信号的记录与参数化。在测试结果评估时需要能够对这些变量的值进行评估,否则,记录值则失去意义。

如今Autosar AP模型的应用范围越来越广,而一些传统测试工具仅支持 Autosar CP 模型,AP 模型测试环境生成困难,有些软件即使能勉强产生,产生的测试环境往往无法仿真运行。这种情况下,只能将模型中的核心模块摘取出来,进行修改后才能测试,这种方式不仅效率低下,而且准确性及有效性不能保证,因为被测对象与原始模型并不等价。
解决方案:深度解析AP模型,针对基于端口的函数定义,自动构建完整的测试环境:为基于端口的函数原型在另外的模型中产生相应的函数调用,并增加函数的输入输出信号,然后连接到主模型中的正确函数调用端口;如果原模型中所调用的函数原型不存在,根据调用信息在另外的模型中自动产生函数原型,并连接到主模型中的正确的函数端口,无需手动干预,提高效率并保障测试完整性。在此过程中,需要针对函数所使用的数据类型定义做相应的处理,保证测试环境生成后能正确仿真运行。

测试时不仅要测试正常工况,还要测试各种瞬时故障、永久性故障等各类异常情况,验证系统对非法信号的处理能力,这就需要故障注入的测试功能,特别是在接口测试时,故障注入是必不可少的手段。
解决方案:通过在模型中直接记录中间信号,测试用例直接对故障注入点的信号注入异常值来实现故障注入。确定故障注入点后要增加测试用例中可输入的信号,要能够在任意时刻注入任意异常值,并且在故障注入结束能立即采用原来的信号,同时要保证故障注入点的中间值能同样被评估。利用simulink信号线属性可以为需要进行故障注入的点做标记,自动判断信号线的数据类型等各种属性保证注入信号属性的正确性。相比于传统手动修改模型的方式,故障注入大幅提升异常测试效率,补充正常测试无法覆盖的边界场景和异常工况,确保系统在真实环境中遇到故障时仍能保持稳定运行。

测试标定量不同取值时需要对标定量定义的域中修改其值,目前的测试工具只能在一条测试用例仿真之前修改,因此每条测试用例只能测试一个值,这就需要为多个不同的值建立多个测试用例,导致类似测试用例增加并使测试时间变长,也不能在一个图中显示标定量取不同值时对应的结果。
解决方案:在仿真过程中,需要修改标定量值时暂停仿真,修改标定量值后继续进行当前仿真,这样就可实现在一条测试用例中将所有变化情况全部测试完成,极大提升了测试效率。
举例说明:以模型中一个由变量赋值的Gain模块为例,在测试用例中可以直接、动态地调整其值,并实时取得结果。无需修改模型或中断仿真,即可快速模拟多种情况,极大提升测试效率与覆盖度。

在模型中,Simulink Function与function caller、goto与from、data store write/memory与data store read模块是成对出现使用的,但有可能不在同一层级,在测试时如测试对象中仅有Function Caller、From、Data Store Read等“孤立元素”时,因缺失配对模块,会导致仿真无法进行。
解决方案:针对孤立元素出现的不同情况,如:模型中存在而被测对象中不存在对应模块的情况及模型中不存在对应模块的情况,采取不同的措施自动补全对应模块或者增加对应的输入信号,使仿真顺利进行。
举例说明:(以Goto与From模块为例)当测试对象中仅有From模块而缺失对应的Goto时,自动识别此孤立信号,并为其在测试环境中补齐Goto模块,并把该变量作为输入信号,在编写测试用例时可以随时修改。在确保仿真连贯性的同时又使测试无缝进行。

传统手动编写测试用例的方式不仅耗时长,且严重依赖个人经验,同时组合过多,人工穷举数量太大导致组合不完整,难以保证测试的充分性,这直接导致测试覆盖度不足。
解决方案:提供多模式、高效率的测试用例生成方案,满足一切要求:
脚本/列表式用例生成:直观的表格填写,智能继承信号初始值,仅需定义随时间变化的信号值,提供辅助函数和Matlab表达式,自动生成评估函数,大幅提升编写效率。

全组合测试用例(等价类组合用例):自动选择信号取值(可人工修改),智能构建测试组合,并支持嵌入评估函数或期望值函数,实现各种状况的全覆盖测试。
高覆盖度用例自动生成:基于模型自动生成覆盖度最高的测试用例,可使用评估函数进行自动结果评估,从根本上保证测试的充分性与客观性。
添补覆盖度:根据现有测试用例的覆盖度情况,自动产生测试用例补足缺失的覆盖度
举例说明:用户在MQTester界面创建测试组时可自由选择脚本式/列表式,多样化的用例书写方式,使测试更灵活。

用户在测试用例菜单下可以看到一系列关于组合测试用例的选项,选择新建后组合配置文件会自动生成并打开,文件中罗列了当前测试对象进行排列组合所需的所有配置信息。配置文件内容可根据需求设置期望值或评估函数。
MQT中使用“自动测试”命令即可自动生成覆盖度最高的测试用例, 选择下拉菜单 仿真配置à添补覆盖度,即可基于当前的测试覆盖度生成新的测试用例。
在输入信号数量较多时,组合数量很容易变得非常巨大,例如,13个输入信号,每个信号有3个值,则组合数量是3^13=1594323,这已经超出了Excel表格所能保存的最大行数(1百万),MATLAB处理此类非矩阵数据的速度也很慢。
解决方案:根据组合中的元素及可选值数量,利用正交表理论自动选择合适的正交表,按照正交表自动选择其中有代表性的测试用例组合,去掉冗余的组合,在组合数量非常庞大时这会显著减少组合数量,提高测试用例效率,降低时间成本。当元素数量大于4时,正交表可减少超过90%的测试量,利用正交表,上面的例子中只需要选择其中的27个组合。
举例说明:在MQTester提供了自动选择正交表并根据选择的正交表自动选择正交组合的功能。

目前MQTester支持在Speedgoat硬件上的HiL仿真,可以直接在matlab环境下生成目标环境及代码,并使用MQTester管理的测试用例在目标机上进行HiL仿真,仿真结果可以使用MQTester信号查看器进行查看,也可以产生在测试报告中。详情请接洽我们的技术支持。