在上篇中,我们讲述了TPT脚本的一些基础操作,例如时间区间筛选、测试评估等等。但是仅仅掌握这些基础的操作是无法满足我们在复杂测试项目中的需求的,在本文中您将了解到TPT脚本的一些高级特性,例如测试管理、脚本封装、与其它软件交互等等。相信在阅读本文之后,您将在TPT脚本使用方面更上一层楼。
文章阅读导图:
使用脚本对需求和报告进行管理
使用脚本进行测试需求管理
在软件测试项目中,测试需求是我们工作的轴心。测试需求不仅是我们编写测试用例与评估的重要依据,同时也是测试工作完成程度的一项重要指标,那么开展测试需求管理工作就是十分重要的了。TPT在脚本中提供了许多强大的函数接口帮助我们进行测试需求的管理,下图就列举了测试需求管理函数库中的一个常用模块——REQUIREMENTS模块的功能。
我们可以通过checked()对测试需求是否满足进行检查,检查的结果会反映到测试结果之中。
之后,我们也可以使用report ()函数将我们的需求满足结果反馈到我们的报告之中。
使用脚本进行测试报告管理
测试报告基本是我们测试工作的最后的一个环节,也是极为重要的一个环节。一份合理美观的测试报告可以充分的体现测试流程和测试结果,可以将关键的测试数据保存下来。
TPT脚本中提供了充分的接口,让我们按自己的需求将报告定制化。例如我们可以在报告的指定位置添加图像、文章段落、各类信号图像、信号表格等模块,下图脚本就展示了其中一些函数的用法以及执行结果。
同时在TPT16中,我们还可以为整个报告添加一些测试总述信息。注意这样的脚本需要在测试执行界面的Global Assessment处编写。如下图所示,我们通过脚本的编写,在测试报告的Over View处添加了图像与段落。
使用TPT脚本与外界程序进行交互
TPT脚本中提供了较为丰富的与外界程序进行交互的接口,我们可以利用这些接口对TPT的功能进行扩展,去实现我们在实际项目中想要达到的效果。
在TPT脚本中调用Python标准库
我们在TPT脚本中可以使用import;from…import…;from…import *等语句导入Python中的标准函数库。由于TPT的Python版本是2.7,所以我们只能使用Python2.7中的标准库,而其它一些扩展库需要通过下文(与扩张库进行交互部分)中介绍的方法导入。
在TPT脚本中调用外部Python脚本
我们可以通过TPT脚本去调用外部的Python脚本,这样可以对我们原有的Python脚本进行复用,实现编写一个脚本在多个评估中使用的效果。
如图所示,我们使用include ()这个函数调用了外部的一个脚本,这个脚本在控制台上打印输出一段文字。这个函数类似于C和C++中#include这个语法特性,都起到了加载外部文件的作用。
值得注意的是,我们在编写外部脚本的时候要注意其语法特性要满足TPT内部的语法特性,不能使用TPT中不包含的语法特性。
通过TPT脚本与MATLAB进行交互
TPT提供了与MATLAB进行交互的接口,我们可以通过runMScript()函数在MATLAB工作区写入或者读取变量,也可以去执行M语言程序,在MATLAB中对信号进行计算与处理,或者针对不同的测试用例对模型本身进行改变。
下图是这个函数的使用示例。首先我们在MATLAB工作区创建了IN和OUT两个变量,IN是TPT写入MATLAB的变量,OUT是TPT从MATLAB读取的变量。同时TPT把这个函数的第一个参数的内容作为M脚本在MATLAB中执行。这个M脚本的执行结果是赋予OUT信号以IN信号的时域与值域的数值,之后将模型中的AUTO_MODE参数的值置为3。
除此之外,我们还可以用TPT脚本中的setMatlabSettings()函数对MATLAB平台进行设置,让测试环境达到我们的要求。
通过TPT脚本与其它应用程序或Python扩展库进行交互
我们之前在脚本中调用了Python2.7的标准库,那如何在TPT脚本中使用例如numpy、pandas、matplotlib这些较为常用的扩展库呢?TPT的execute()这个函数为我们提供了实现的可能。
我们调用execute()这个函数,TPT就会自动创建一个我们指定的进程,同时TPT解释器会在execute()函数调用语句处暂停,等待外部进程的结束。那么我们就可以通过共享内存的方法,为TPT和外部进程创建一个共同的数据缓存区,通过这个缓存区实现TPT和外部进程的数据交互。外部进程结束后,我们的TPT脚本可以根据其返回的结果来进行下一步的操作,原理如下图所示。
整个脚本的执行流程是TPT内部进程和外部进程交叉进行的,由于交互的速度很快,所以可以近似于是TPT内部库的调用,整个过程类似于“并发”这种调度方式。
TPT脚本的封装与管理
TPT提供了对脚本进行封装和管理的功能。在一个项目中,有时候我们会有一些重复的计算步骤或者程序流程,这时候我们可以把这些计算步骤封装成函数,需要时我们可以对函数进行调用,简洁了代码提高了效率。
同样的,我们在项目中可能会有一些功能相似或者相互补充的函数,这时候我们可以把这些函数进一步封装,把同类型的函数封装成外部函数库,我们在TPT中可以把这些函数库加载进来,方便我们的调用,加速整个项目流程。
举个简单的例子,如下图所示,我们把绘图和绘表这些固定的脚本步骤封装成了两个函数。通过这两个函数的调用,我们可以轻而易举的添加多个信号的图像或者表格。
同样的,我们假如定义了多个与图形绘制有关的函数,我们可以进一步的把图形绘制的函数归类成一个函数库,步骤如下图所示。这时候我们就可以在多个项目中去使用这个函数库,或者分享给团队成员,提高了代码的复用性。
我们建立自己的外部函数库也方便我们对工程的管理。把一些固定的步骤标准化,无疑提高了整个团队代码的规范性。同时,我们还可以通过Git或SVN对团队的脚本库进行管理与共享,提高了团队协作性。
毫无疑问,我们需要对TPT脚本进行一定的管理,这在大型测试项目中尤为重要,有管理的脚本比没有管理的脚本要优越很多。
关于PikeTec和北汇信息
PikeTec公司是全球知名的基于模型的嵌入式系统测试工具TPT的软件供应商,总部位于德国柏林,其创始人均在戴姆勒公司拥有十多年的软件测试经验。TPT产品曾被评为2005年戴姆勒最佳创新软件,并在戴姆勒、大众、奥迪、保时捷、通用等汽车整车厂及多家零部件企业(博世、大陆、海拉等)中得到广泛应用,如戴姆勒的多个车型的混合动力汽车的动力总成、电池管理控制器的测试,博世的汽油机和柴油机控制系统测试等。
北汇信息作为PikeTec在中国的独家合作伙伴,致力于帮助中国客户提升嵌入式控制系统的开发效率。目前,TPT已被众多国内知名主机厂和零部件企业认可,在新能源(VCU/BMS/MCU)以及ADAS等领域中被广泛应用。
-
TPT
+关注
关注
0文章
23浏览量
6966
发布评论请先 登录
相关推荐
评论