tag 标签: TPT

相关帖子
相关博文
  • 热度 4
    2022-7-15 17:41
    1328 次阅读|
    0 个评论
    TPT 作为PikeTec公司的嵌入式软件测试工具,具有很高的扩展性和便捷性。随着软件测试日趋复杂并且需求多样化,TPT不断改进以满足与时俱进的要求。您可以在所有开发阶段使用TPT进行测试。无论是简单的单元测试还是复杂的系统测试,TPT都能够使得测试变得快捷、简单和直观。 那么,TPT18是如何让测试变得简单快捷呢? TPT18 更新总体预览: 1、新增形式化需求评估,实现需求和评估强相关; 2、更灵活的需求管理,支持自定义功能需求; 3 、基于TASMO工具箱,自动生成满足MC/DC要求的测试用例; 4、新增覆盖度统计工具TPT Coverage; 5 、丰富MATLAB平台功能; 6 、新增给定激励信号的方式(TPT内置函数); 7、Batch Runner界面和功能更新; 8 、ASAM XiL及Vector 系列平台相关更新。 其他: 1、新增SimulinkReal-Time XiL 平台,支持新一代Speedgoat硬件; 2、CarmakerPlatform优化接口交互,并且当前测试可通过IPG可视化; 3、新增评估函数,TPT.getConstant和TPT.isConstant(),支持任意表达式; 4、全局评估可添加到Assesslet中,可针对任意平台激活; 5、测试执行前后,可添加Python Script,实现自定义功能; 6、在TestCase Details/Description中可导出评估条件; 7、TestCase Summary中可显示链接的需求ID。 …… 详细介绍: 一、形式化需求评估 想不想只编辑需求而不写评估?现在TPT18形式化需求评估能够满足这一要求。 形式化需求具有简洁、明确和可评估的特点。在TPT18中,可将导入的Excel需求翻译成形式化需求评估。形式化需求不仅仅是靠链接关系完成的需求覆盖,而是更直接的对需求进行评估。 比如,灯控模型需求SPEC-17,可以翻译成如下形式化需求评估。 图 1 形式化需求评估 测试结果如下: 图 2 测试结果 二、更灵活的需求管理 TPT18 前,功能需求只能从外部导入,不能在TPT中更改。虽然这样能保证需求的统一,但也为功能需求的更改带来不便。在TPT18中,可直接在Requirements中更改/新建功能需求/子功能需求,并且该需求不会随着功能需求的导入而改变。 图 3 功能需求更新 三、TASMO支持MC/DC自动生成测试用例 测试覆盖度不能达到要求怎么办?这时候可以考虑使用TASMO。TASMO可根据模型/代码结构生成测试用例,提高测试覆盖度。 TPT18 除了支持CC和DC覆盖外,还支持MC/DC覆盖,更容易达到理想覆盖度。 例如模型中OR模块,如须满足MC/DC,须包含如下情况: 图 4 模型中的Or结构 1 、所有输入为False; 2 、一个输入为True,其余均为False。 在TPT18中,可分析出如下结构,并根据此结构自动生成测试用例。 图 5 TPT18 Or 模块结构 四、新增代码覆盖度统计工具——TPT Coverage TPT 在统计覆盖度时,提供了多种选择,在测试时按照自身情况决定即可。 在模型阶段,可以调用Targetlink、CTC++ for Targetlink和Simulink V&V统计覆盖度。 在代码阶段,除了CTC++和GNU gcov外,还提供了TPTCoverage统计覆盖度。 图 6 TPT Coverage 图 7 覆盖度报告 图 8 覆盖度报告 五、丰富MALTAB平台功能 (1)MATLAB/Simulink Platform加速运行模式 你能想象一条测试用例运行后的数据达到将近10G吗? 超大的数据量也就意味着一个字——慢,而且是超级慢。 现在,这种情况得到缓解,TPT18的“MATLAB/Simulink Platform”新增选项“Simulation Mode”,可使用“Normal”、“Accelerator”、“Rapid Accelerator”和“Software in the loop”模式运行测试,可加快测试运行速度。 Tip :针对测试用例数量较多情况,TPT支持多核模式加速运行。 图 9 加速运行模式 (2)检测特定系统覆盖度 TPT18 前,如果需要分析特定子层级覆盖度时,需要将其它子层级注释掉。但是,如果子层级之前存在交互,需要进行接地等调试,较为复杂。现在,TPT18免去这一烦恼,因为可以直接排除掉不想检测的子层级。 图 10 Advanced setting 图 11 选择特定子系统 (3)直接导入Stateflow中间变量 TPT18 前导入Stateflow中间变量需要手动新建并设置Import Measurements,还需在测试平台中加入脚本。TPT18的可直接点击“offline logging”导入,方便快捷。 图 12 导入Stateflow 中间变量 (4)自动生成TPT Simulink Function Handler 当模型中使用了Simulink Function,但是测试目标层级的 Function Caller与Simulink Function不在同一层级,运行测试时会报错(找不到SimulinkFunction)。 面对此种情况,TPT18在测试框架中可自动生成TPT Simulink Function Handler。 图 13 TPT Simulink Function Handler 六、丰富给定激励信号的方式(TPT内置函数) TPT18增加了激励信号的给定方式,例如:TPT.impulse()、TPT.step()、TPT.sinwave()等,更方便实现想要的信号。 图 14 TPT 内置函数 七、Batch Runner界面和功能更新 当有多个TPT工程需要运行时,可以使用Batch Runner同时运行。 在TPT18中,更新了界面,并且增加了如下步骤: ▲TPT API-script ▲Execute Tests ▲Generate Testframe ▲ Generate Overview RePort 支持如下平台生成测试框架: ▲AUTOSAR ▲C/C++ ▲MATLAB ▲ASCET@FUSION ▲ ASCET 图 15 Batch Runner 八、ASAM XiL及Vector相关更新 (1)扩展了ASAM XiL支持 服务项中增加了ASAM XiL Diag Port,可直接在测试用例中对DTC进行操作,如下: ▲Read DTCs ▲Clear DTCs ▲Read/Write Values ▲ Execute Services 图 16 增加的服务步骤 (2)支持导入DBC中枚举类型信号 在DBC中如果定义并关联了Value Table,TPT18支持导入。 图 17 导入枚举 (3)XCP通信控制 不仅在测试用例执行前可以控制XCP通信,而且在测试用例中也可以控制,方便进行测试。 图 18 XCP 控制 图 19 测试用例中控制 篇幅所限,不能一一介绍TPT18的改变,如想了解更多内容,请点击此处。 北汇信息携手PikeTec,共同促进软件测试发展。欢迎各位同学提出宝贵意见, 让软件测试变得越来越“方便”和“简单”!
  • 热度 9
    2022-6-18 18:36
    1754 次阅读|
    0 个评论
    Simulink是美国Mathworks公司推出的一种强大的可视化仿真工具,现已应用到包括汽车、航空、工业自动化等领域。Simulink不仅提供了多种特定功能的模块,还提供Simulink Function,Function Caller等模块,便于用户在开发过程中,定制化一些常用函数,摆脱了Simulink中固有Block的功能限制,有效的提升了开发效率。 这个功能无疑十分强大,但这却给测试工作提出了很大的挑战:受软件开发架构限制,Function的定义可能放置在软件底层,以便于上层软件进行多次调用。但当用户对上层软件的单元层级进行测试时,往往面临着无法调用底层定义的Function的窘态(有枪无弹)。此外,当客户在测试底层单元模块时,由于Function只有定义没有被调用,往往无法对Function的内部逻辑进行测试(有弹无枪)。 针对这两种测试场景,自动化的软件动态测试工具——TPT提供了便捷的解决方案。 图 1 模型 有枪无弹: 顾名思义,空有Function Caller而没有Function。如图1所示,如果要测试Calculate这个单元,这个单元调用了Function,而Function却定义在更底层,针对这种情况,TPT支持函数的插桩,提供Function Caller的接口,模拟函数的返回值。 TPT支持函数的插桩,在对这种只有Caller没有Function的层级(如图2)进行测试时,非常高效。在TPT的Platform Configuration中提供了这样的选项:Simulink Functions,如图3: 图2 单元模块内部结构 图 3 Simulink Functions 回到图4平台配置窗口,加载好模型后 Import 模型接口, TPT 将以server 形式识别 callFunc 函数,如图5。 图 4 Import 模型接口、参数 图 5 识别callFunc函数 该函数会被直接加载到 Functions 中, 以便于在编写测试用例时调用。 图 6 callFunc被加载到Functions中 可以在Declaration Editor中添加一个 channel形式的本地变量return_Func模拟函数的返回值,然后编写图 8所示用例来验证: 图 7 添加channel本地变量 图 8 测试用例 运行结果和信号曲线如下图所示,compare是简单的评估,结果可见模型的输出符合期望,由信号曲线可以观察到local量的值即函数的输出值。 图 9 测试结果 图 10 Signal Viewer观测结果 有弹无枪: 上述方法并不能测到函数内部的逻辑,而实际上函数可以定义在模型的底层,如图1所示的模型wind_drag,Function定义在底层,没有对应的Function Caller,这就是有“弹”而无“枪”了。在单元测试阶段想要测试该函数的逻辑,因其没有相关的接口信息,测试工作无疑非常困难。 图 11 被测函数逻辑 自动化测试工具TPT提供了m文件的接口,可以在配置测试环境或者测试执行过程中进行一些预处理,这就为测试该函数逻辑提供了绝佳的途径。 图 12 TPT提供的m文件接口 此处用m脚本编写一个函数,可以在TPT中实现对Function的调用。该函数主要有两个参数: 参数1:测试层级,可直接用TPT环境变量’${tpt.matlab.block.name}’ 参数2:被调函数,例如:' F = wind_drag(Density,Speed) ' 可以在 TPT\Platform Configuration\Original Model 中可以编写相应的代码来加载m文件,并使用simulink_function_caller函数对模型中的SimulinkFunction进行调用,这无疑大大提升了测试的效率。 图 13 m文件加载及函数调用 图 14 模型中自动配置FunctionCaller 依次在TPT中配置测试环境,导入接口时即可发现模型中出现了Simulink Function调用的相关接口信息。上一步中加载的m文件,实现了自动创建所测Function对应接口信息,以及Function Caller模块的功能,这些新建的模块和Function在同一层级,这样就能够对Simulink Function逻辑进行测试。 图 15 导入接口信息 编写测试用例来测试该函数: 图 16 测试用例 该函数是简单的计算风阻的函数, ,其中C取0.3,S取2.05,编写评估验证该用例: 图 17 测试评估 测试结果显示模型输出与函数运算结果一致: 图 18 测试结果 两者的信号曲线也是完全重合: 图 19 信号曲线 总结 本文介绍了使用TPT测试Simulink Function模块的两种方案,TPT还支持MATLAB Function的测试。 PikeTec公司是全球知名的基于模型的嵌入式系统测试工具TPT的软件供应商,总部位于德国柏林。北汇信息作为PikeTec在中国的独家合作伙伴,致力于帮助中国客户提升嵌入式控制系统的开发效率。目前,TPT已被众多国内知名主机厂和零部件企业认可,在新能源(VCU/BMS/MCU)以及ADAS等领域中被广泛应用。
  • 热度 7
    2022-6-5 17:03
    607 次阅读|
    0 个评论
    Piketec嵌入式测试工具TPT的最新版本现已发布。TPT17为嵌入式系统开发阶段的所有用户以多重新特性上线。ECU测试变得更加快捷,简单与直观,因此您可节省宝贵的测试时间。用TPT做更好的测试! 1. 深色模式与新外观 图标减少,DPI提升且GUI可被切换为深色模式 2. 用于Simulink模型测试的MATLAB工具箱 从Simulink中直接控制TPT 3. 更多自动化 API 与DevOps 通过API进行的自动测试增加额外功能 4. 在云端使用TPT 通过Docker 的云端测试可提高计算能力的可扩展性 5. 读写ReqIF 无缝交换需求及其相应元数据 6. 自动化测试用例生成-优化 减少点击量与加快报告以改进实用性及性能 7. 使用GCOV-R优化覆盖范围 改善实用性以促进测量各种覆盖率 8. 全面支持 ASCET-DEVELOPER 使用 ASCET-DEVELOPER完成MiL测试, 替换以往的ASCET 6.x 版本 9. 服务步骤 更加便捷使用服务调用 10. 通过 RT-LAB 节点 完成SiL-HiL 测试 将TPT 链接 RT-LAB, 导入接口并在模型上运行测试 11. 通过 TPT控制 CarMaker Carmaker中的车辆及对象仿真可通过TPT控制 12. 通过DiagRA-D使用TPT进行测试 在测试执行期间连接到 DiagRA-D 来执行诊断请求
  • 热度 4
    2022-6-4 20:48
    1253 次阅读|
    2 个评论
    在上篇 TPT中脚本评估的使用(上) 强大的内置函数库 中,我们讲述了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等领域中被广泛应用。
  • 热度 5
    2022-6-4 18:34
    817 次阅读|
    0 个评论
    TPT作为一款功能强大的嵌入式软件测试工具,覆盖MiL、SiL、PiL、HiL、ViL等全阶段的测试过程,将测试执行到测试报告生成的所有步骤实现自动化,大大提高我们做软件测试的效率。TPT之所以在嵌入式测试中如此高效,少不了其脚本评估这个特色功能的支撑,今天我就带领大家来了解一下TPT中脚本这个特性。 您将在本文及后续文章了解到的: 通过TPT脚本对任意时间的信号行为进行检查的方法 TPT脚本中对信号进行处理以及读写的方法 通过TPT脚本对测试需求、测试报告等内容进行管理的方法 TPT脚本与Python标准库、扩展库、MATLAB、以及其它外部软件的交互方案 TPT脚本的封装、集成以及团队管理方案 TPT 脚本评估的语法构成 TPT中的脚本由三个方面组成,分别是Python基本语法、TPT内置函数以及MATLAB等其它程序的接口。 首先TPT脚本的语法框架是基于Python 2.7的,所以我们可以在TPT中使用Python2.7中的绝大部分语法特性,比如说Python中的选择语句、循环语句等流程控制语法,列表、元组、字典等数据结构,甚至我们还可以使用Python中的函数、类等语法结构。如下图所示,我们使用上述语法,对信号状态进行判断,同时建立了一个对信号图像进行设置的函数。 除了基础的Python语法框架,TPT针对嵌入式软件测试的特点,提供了一套强大的函数库,覆盖到测试的方方面面。从评估区间查找到信号行为检查,从测试需求管理到测试报告设置,我们都可以通过调用一两个函数去完成。这种用简单几行脚本就完成一个复杂测试步骤的能力,是其它大部分测试软件所没有的。 除了这些特点之外,TPT脚本还提供了与MATLAB等其它工具的交互接口,比如,我们可以使用M语言进行数据处理,这无疑大大提升了工具的使用范畴。 使用TPT脚本进行信号评估 使用TPT脚本进行信号行为检查的完整流程如下图所示,通过这个流程我们就可以实现对几乎所有测试场景的评估。 声明评估变量 就和大部分的编程语言一样,编写程序的第一步就是变量的声明,TPT提供了如下表所示的多种变量的声明: 这些评估变量和标准的Python变量有着本质的区别,Python变量都是和时间无关的标量,而这些TPT变量是建立在时间域上的,它们的值随时间变化而变化。 TPT在脚本中之所以做出这样的区别,是为了能让变量更好的表示信号的实际情况。如下图所示,我们首先声明了一个TPT评估变量,之后把一个开关信号赋值给这个评估变量,之后方便我们对信号进行进一步的操作。 同其它的编程语言一样,我们可以把多个值组成列表、矩阵等数据结构,TPT提供了列表、矩阵类型的评估变量的声明,如下图所示: 此图中我们就声明了一个列表形式的评估变量,并给列表中的两个元素赋了开关和光强两个不同类型的信号。通过这样的列表形式的评估变量的使用,方便了我们对多个评估变量的声明。假如我们的项目工程中有多个作用类似的信号,我们不妨考虑使用列表形式的评估变量来处理它们,这样可以使评估整洁又便利。 目标信号获取 我们在声明了TPT评估变量之后,就可以去获取评估中需要用到的信号,比如说待检查信号、参考信号、辅助信号等等。这些信号的获取方式也是十分丰富的,可以从TPT工程以及MATLAB模型中获取,可以从各类文件中加载,也可以从信号运算结果中获取。从TPT工程中直接获取就不用说了,直接输入信号名称就可以了,今天我们来看看后两种方式。 TPT支持用.tptbin 、.mdf、 .mat 、.csv等多种格式对信号进行读写,如下图所示: 我们可以用excel或MATLAB中去定义信号,然后再用TPT去读取这些信号,这无疑方便了TPT和各种工具之间的数据交互。 有时候我们想要的信号是原信号数学处理之后的结果,针对这种情况,TPT也内置了多种信号处理的函数,比如说积分、微分、滤波、两信号时域求差等等。通过这些信号处理函数,我们可以轻松的得到各种我们想要的信号,这条信号的值是两个输入信号在时域上的差值。 筛选时间区间 我们在检查信号行为之前,首先要确定要检查的时间点,这点是很多测试工具的痛点。它们一般让测试工程师直接指定要检查的时间点,但是有时候我们想要检查的时间点是无法直接用数值来给定的,我们很多情况下是要检查某种状况下的信号行为。 TPT在时间区间的筛选上是比较强大的,内置多个时间筛选函数,帮助我们快速的确定一个或多个时间点或时间段。 这些函数中最有亮点的就是 regexp() 这个时间匹配函数。这个函数是Regular Expression这个词组的缩写,看到这里大家应该就明白了,这个函数使用的正是大名鼎鼎的正则表达式。 正则表达式的历史可以追溯到二十世纪五十年代,它被多种系统以及编程语言广泛使用,是上个世纪计算机领域的一项重要成就。我们经常用正则表达式去搜索匹配一些字符串,TPT创新地将这种方法运用在时间匹配上面,大大提高了我们时间筛选的效率。 如上图所示,这个正则表达式就匹配了首先信号的值等于3,接着值选择性的等于5,最后等于4这样一段信号。例如34或354这样的时间区间。可以想到,假如我们想要直接去找这样一段信号是极为困难的,但正则表达式帮助我们轻松的匹配到了,这就是正则表达式的优势所在。 假如您是正则表达式的高手,那么在复杂的时间区间中去找待评估的时间段对您来说是轻而易举,因为TPT中的正则表达式的特性和标准正则表达式的特性几乎相同,下图就是TPT中的正则表达式的元素。 除了 regexp() 这个函数外,TPT还内置了其它许多时间匹配的函数,帮助您快速地匹配时间区间。比如说 trigger() 函数通过信号上升沿和下降沿去匹配时间区间 ,Interval() 通过指定时间点去匹配时间区间等等,这些特性您可以在TPT脚本中去感受探索。 信号行为检查 我们在匹配到了待检测的时间段之后,接着就是对这个时间段的信号行为进行检查,去评判信号的变化是否符合我们的预期,这也决定了被测系统对应部分的功能是否满足我们的需求。这个环节无疑是测试中很重要的一部分,所以TPT提供了丰富的信号检查函数,帮助我们轻松的评判信号的行为。 这些检查函数可以去评判一个表达式的正确性,也可以去检查一个信号是否处于某个区间,甚至可以帮助我们检查两个信号的相似程度。下面我们就来看几个较为典型的例子。 我们在测试中最简单、最常用的是 checkAlways() 和 assertAlways() 这两个函数,如下图所示。这两个函数会直接检查待检查表达式的正确性,并根据检查结果决定与之链接的测试用例的通过与否。 还有一个值得一提的是 hose( ) 函数,如下图所示,这个函数可以根据参考信号生成一个误差带,之后检查目标信号是否在误差带范围之类。这个函数的应用场景也是很多的,比如我们在做back-to-back测试的时候,需要将两次的信号进行对比,这时候我们就可以用到这个函数。 下期预告 在本篇文章中,我们介绍了TPT脚本的语法构成以及使用它进行测试评估的方法。在下篇文章中,我们将介绍其它的扩展部分,其中包括有:使用TPT脚本进行测试需求管理、测试报告管理;TPT脚本与其它库与软件的交互与集成;TPT脚本的封装与管理等等。相信通过下篇的阅读,您能通过TPT轻松地解决测试中的一些相关难点。 PikeTec 公司是全球知名的基于模型的嵌入式系统测试工具TPT的软件供应商,总部位于德国柏林,其创始人均在戴姆勒公司拥有十多年的软件测试经验。TPT产品曾被评为2005年戴姆勒最佳创新软件,并在戴姆勒、大众、奥迪、保时捷、通用等汽车整车厂及多家零部件企业(博世、大陆、海拉等)中得到广泛应用,如戴姆勒的多个车型的混合动力汽车的动力总成、电池管理控制器的测试,博世的汽油机和柴油机控制系统测试等。 北汇信息作为PikeTec在中国的独家合作伙伴,致力于帮助中国客户提升嵌入式控制系统的开发效率。目前,TPT已被众多国内知名主机厂和零部件企业认可,在新能源(VCU/BMS/MCU)以及ADAS等领域中被广泛应用。