上次我们分享了单元测试用例的复用,单元测试的用例可以复用到集成测试,那单元测试的评估是否也可以复用到集成测试?答案是可以的。
TPT中提供了多种多样的评估方式,其中的脚本评估使我们复用测试评估成为可能。脚本评估,使用的是基于Python的类Python语言,能够实现筛选评估区间,评估输出,报告定制化等功能,是一种非常灵活,使用起来十分方便的评估方式。
通过脚本评估,在某些模型测试中,我们可以将单元测试的评估,也复用到集成测试中。
应用场景一:单元测试的测试评估复用到集成测试
针对上次用例篇中的demo模型,我们可以在单元测试时就使用脚本评估来评估整个模型,这里以Cruise Control介绍使用脚本评估来评估计算模块的方法。
一般情况下,对于计算模块我们使用定值来测试评估,为了保证测试的充分性,需要若干组数据,这会导致我们需要多次重复计算过程来得到预期的输出,以完成评估。这是我们在测试计算模块时的痛点,有没有可能通过一些方法来自动化这部分重复的过程?答案是有的!通过脚本评估,我们可以将需求中的计算逻辑复现,以此来实现计算模块的自动化评估。
1.声明评估变量
在脚本评估中声明需要的评估变量,将部分中间计算量赋值给这些评估变量,以方便在后续计算中使用。
2.复现计算逻辑
TPT的脚本评估中内置了很多计算函数,也支持Python基本库中的数学函数,方便我们去复现整个计算逻辑。通过模型中的计算逻辑,使用脚本复现其计算过程。这里以其中一部分逻辑举例介绍,
3.评估
使用一个CruiseControl_output的评估变量,将TPT计算出的Cruise Control单元的理论输出值赋值给CruiseControl_output。
4.对输出进行验证
在最后使用TPT.assertAlways和TPT.hose两个函数的组合来实现验证模型实际输出是否和理论输出值相等,这样就能检查模型实际输出和需求是否一致,并且能够评估输入的所有组合。两个函数中前者检查表达式的返回值是否为真,后者检查目标信号和参考信号的值是否一致,若一致则返回值为0。所以使用TPT.assertAlways检查TPT.hose的返回值等于0,即可证明模型输出值和理论输出值相等。
5.将单元测试的评估复用到集成测试
应用上面的方法,将Vehicle这个单元也使用脚本进行评估。这样在进行集成测试时,单元测试阶段的eng_torque将变成Local量。可以将CruiseControl的脚本评估和Vehicle的脚本评估使用这样的语句进行拼接,即可将单元测试的测试评估,复用集成测试。
1)将两个单元的脚本评估复制到集成测试的工程中。
2)将CruiseControl脚本中的评估输出eng_torque的语句注释掉,因为此时该信号变成了Local。
3)对于Vehicle单元,输入信号eng_trq变成Local量,是由Cruise Control单元计算得到的。所以在Vehicle的脚本中,将CruiseControl脚本中计算出的eng_torque的值赋值给eng_trq,即可将两部分脚本评估拼接,完成评估的复用。
4)运行测试用例得到测试结果。从下图中可以看到用例时间为10s,评估区间也是10s且测试通过。
应用场景二 自定义脚本库
TPT的脚本评估不仅提供了非常多方便我们评估的内置函数,还支持自定义函数库,方便我们自已定义一些个性化的评估函数。这里以饱和模块为例,简述TPT是如何自定义函数库的。
1.编写自定义函数
首先在一个新建的脚本评估中编写我们要定义的函数(主要是方便控制缩进),TPT脚本评估的语法和Python大体类似。
2.保存文件并修改文件格式
新建txt文本,将编写好的自定义函数复制到该文件中保存,将文件后缀名修改为.tptpy。
3.在TPT中加载函数库
1)在Preference/General/Assessment Library中添加自定义函数文件的路径。
2)在工程的Assessment Library中激活函数库。这样就可以在工程中使用我们刚刚编辑好的函数库中的函数了。
3)在脚本评估中使用“自定义函数的文件名+.+函数名称”的语法即可调用刚刚自定义好的函数。
4)使用示例。
总结
本文主要介绍了测试评估从单元测试复用到集成测试和自定义脚本库,这两者同样能帮助我们提升测试时的效率。通过用例复用和评估复用不难发现,TPT在做模型测试时具备巨大的优势,可以通过多种方式提高测试的速度和效率,减少重复的工作。并且TPT支持测试的多个阶段——MiL,SiL,PiL等,能够将同一工程复用到不同的测试阶段,这同样也能提高我们测试的效率!感兴趣的小伙伴快动起来吧!