0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TPT中脚本评估的使用(上) 强大的内置函数库

北汇信息POLELINK 2022-07-27 11:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

TPT作为一款功能强大的嵌入式软件测试工具,覆盖MiL、SiL、PiL、HiL、ViL等全阶段的测试过程,将测试执行到测试报告生成的所有步骤实现自动化,大大提高我们做软件测试的效率。TPT之所以在嵌入式测试中如此高效,少不了其脚本评估这个特色功能的支撑,今天我就带领大家来了解一下TPT中脚本这个特性。

您将在本文及后续文章了解到的:

  • 通过TPT脚本对任意时间的信号行为进行检查的方法
  • TPT脚本中对信号进行处理以及读写的方法
  • 通过TPT脚本对测试需求、测试报告等内容进行管理的方法
  • TPT脚本与Python标准库、扩展库、MATLAB、以及其它外部软件的交互方案
  • TPT脚本的封装、集成以及团队管理方案

TPT脚本评估的语法构成

poYBAGLgrh6AX1g7AACFIi4y6d0822.png

TPT中的脚本由三个方面组成,分别是Python基本语法、TPT内置函数以及MATLAB等其它程序的接口

首先TPT脚本的语法框架是基于Python 2.7的,所以我们可以在TPT中使用Python2.7中的绝大部分语法特性,比如说Python中的选择语句、循环语句等流程控制语法,列表、元组、字典等数据结构,甚至我们还可以使用Python中的函数、类等语法结构。如下图所示,我们使用上述语法,对信号状态进行判断,同时建立了一个对信号图像进行设置的函数。

pYYBAGLgrkKATFtFAADlof_awD4664.png

除了基础的Python语法框架,TPT针对嵌入式软件测试的特点,提供了一套强大的函数库,覆盖到测试的方方面面。从评估区间查找到信号行为检查,从测试需求管理到测试报告设置,我们都可以通过调用一两个函数去完成。这种用简单几行脚本就完成一个复杂测试步骤的能力,是其它大部分测试软件所没有的。

除了这些特点之外,TPT脚本还提供了与MATLAB等其它工具的交互接口,比如,我们可以使用M语言进行数据处理,这无疑大大提升了工具的使用范畴。

pYYBAGLgrlOAa5Z-AAAtotUsJPg948.png

使用TPT脚本进行信号评估

使用TPT脚本进行信号行为检查的完整流程如下图所示,通过这个流程我们就可以实现对几乎所有测试场景的评估。

poYBAGLgrmqAMRFVAABwlq-8Z3M904.png

声明评估变量

就和大部分的编程语言一样,编写程序的第一步就是变量的声明,TPT提供了如下表所示的多种变量的声明:

poYBAGLgryyAc7iRAACUCXd8sZo149.png

这些评估变量和标准的Python变量有着本质的区别,Python变量都是和时间无关的标量,而这些TPT变量是建立在时间域上的,它们的值随时间变化而变化。

TPT在脚本中之所以做出这样的区别,是为了能让变量更好的表示信号的实际情况。如下图所示,我们首先声明了一个TPT评估变量,之后把一个开关信号赋值给这个评估变量,之后方便我们对信号进行进一步的操作。

poYBAGLgrzmASeNKAAA1FPdEmpY945.png

同其它的编程语言一样,我们可以把多个值组成列表、矩阵等数据结构,TPT提供了列表、矩阵类型的评估变量的声明,如下图所示:

pYYBAGLgr0WAAe2IAABDz8D5sX0832.png

此图中我们就声明了一个列表形式的评估变量,并给列表中的两个元素赋了开关和光强两个不同类型的信号。通过这样的列表形式的评估变量的使用,方便了我们对多个评估变量的声明。假如我们的项目工程中有多个作用类似的信号,我们不妨考虑使用列表形式的评估变量来处理它们,这样可以使评估整洁又便利。

目标信号获取

我们在声明了TPT评估变量之后,就可以去获取评估中需要用到的信号,比如说待检查信号、参考信号、辅助信号等等。这些信号的获取方式也是十分丰富的,可以从TPT工程以及MATLAB模型中获取,可以从各类文件中加载,也可以从信号运算结果中获取。 从TPT工程中直接获取就不用说了,直接输入信号名称就可以了,今天我们来看看后两种方式。

TPT支持用.tptbin、.mdf、 .mat、.csv等多种格式对信号进行读写,如下图所示:

poYBAGLgr1mAV5uQAADsNSgFpZM279.png

我们可以用excel或MATLAB中去定义信号,然后再用TPT去读取这些信号,这无疑方便了TPT和各种工具之间的数据交互。

有时候我们想要的信号是原信号数学处理之后的结果,针对这种情况,TPT也内置了多种信号处理的函数,比如说积分、微分、滤波、两信号时域求差等等。通过这些信号处理函数,我们可以轻松的得到各种我们想要的信号,这条信号的值是两个输入信号在时域上的差值。

poYBAGLgr2iAQVIiAABJkI6mf8I662.png

poYBAGLgr3KAB-6OAADLYofW4nM052.png

筛选时间区间

我们在检查信号行为之前,首先要确定要检查的时间点,这点是很多测试工具的痛点。它们一般让测试工程师直接指定要检查的时间点,但是有时候我们想要检查的时间点是无法直接用数值来给定的,我们很多情况下是要检查某种状况下的信号行为。

TPT在时间区间的筛选上是比较强大的,内置多个时间筛选函数,帮助我们快速的确定一个或多个时间点或时间段。

这些函数中最有亮点的就是regexp()这个时间匹配函数。这个函数是 Regular Expression这个词组的缩写,看到这里大家应该就明白了,这个函数使用的正是大名鼎鼎的正则表达式。

正则表达式的历史可以追溯到二十世纪五十年代,它被多种系统以及编程语言广泛使用,是上个世纪计算机领域的一项重要成就。我们经常用正则表达式去搜索匹配一些字符串,TPT创新地将这种方法运用在时间匹配上面,大大提高了我们时间筛选的效率。

poYBAGLgr8eAU6oYAAAjvZWNLwM477.png

如上图所示,这个正则表达式就匹配了首先信号的值等于3,接着值选择性的等于5,最后等于4这样一段信号。例如34或354这样的时间区间。可以想到,假如我们想要直接去找这样一段信号是极为困难的,但正则表达式帮助我们轻松的匹配到了,这就是正则表达式的优势所在。

假如您是正则表达式的高手,那么在复杂的时间区间中去找待评估的时间段对您来说是轻而易举,因为TPT中的正则表达式的特性和标准正则表达式的特性几乎相同,下图就是TPT中的正则表达式的元素。

pYYBAGLgr9-AC3WMAAC3oUNSvbY517.png

除了regexp()这个函数外,TPT还内置了其它许多时间匹配的函数,帮助您快速地匹配时间区间。比如说trigger()函数通过信号上升沿和下降沿去匹配时间区间,Interval()通过指定时间点去匹配时间区间等等,这些特性您可以在TPT脚本中去感受探索。

信号行为检查

我们在匹配到了待检测的时间段之后,接着就是对这个时间段的信号行为进行检查,去评判信号的变化是否符合我们的预期,这也决定了被测系统对应部分的功能是否满足我们的需求。这个环节无疑是测试中很重要的一部分,所以TPT提供了丰富的信号检查函数,帮助我们轻松的评判信号的行为。

这些检查函数可以去评判一个表达式的正确性,也可以去检查一个信号是否处于某个区间,甚至可以帮助我们检查两个信号的相似程度。下面我们就来看几个较为典型的例子。

我们在测试中最简单、最常用的是checkAlways()assertAlways()这两个函数,如下图所示。这两个函数会直接检查待检查表达式的正确性,并根据检查结果决定与之链接的测试用例的通过与否。

poYBAGLgsA6AbkXJAACPrUkF_X8201.png

还有一个值得一提的是hose( )函数,如下图所示,这个函数可以根据参考信号生成一个误差带,之后检查目标信号是否在误差带范围之类。这个函数的应用场景也是很多的,比如我们在做back-to-back测试的时候,需要将两次的信号进行对比,这时候我们就可以用到这个函数。

poYBAGLgsByAYogiAACgf5JbRT0260.png

下期预告

在本篇文章中,我们介绍了TPT脚本的语法构成以及使用它进行测试评估的方法。在下篇文章中,我们将介绍其它的扩展部分,其中包括有:使用TPT脚本进行测试需求管理、测试报告管理;TPT脚本与其它库与软件的交互与集成;TPT脚本的封装与管理等等。相信通过下篇的阅读,您能通过TPT轻松地解决测试中的一些相关难点。

PikeTec公司是全球知名的基于模型的嵌入式系统测试工具TPT的软件供应商,总部位于德国柏林,其创始人均在戴姆勒公司拥有十多年的软件测试经验。TPT产品曾被评为2005年戴姆勒最佳创新软件,并在戴姆勒、大众、奥迪、保时捷、通用等汽车整车厂及多家零部件企业(博世、大陆、海拉等)中得到广泛应用,如戴姆勒的多个车型的混合动力汽车的动力总成、电池管理控制器的测试,博世的汽油机和柴油机控制系统测试等。


北汇信息作为PikeTec在中国的独家合作伙伴,致力于帮助中国客户提升嵌入式控制系统的开发效率。目前,TPT已被众多国内知名主机厂和零部件企业认可,在新能源(VCU/BMS/MCU)以及ADAS等领域中被广泛应用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TPT
    TPT
    +关注

    关注

    0

    文章

    25

    浏览量

    7567
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MAX9259评估套件:助力GMSL评估强大工具

    MAX9259评估套件:助力GMSL评估强大工具 在电子工程领域,对于Gigabit Multimedia Serial Link(GMSL)技术的评估和应用至关重要。MAX9259
    的头像 发表于 06-01 13:25 131次阅读

    EVAL - ADM2795EEBZ评估板:强大的RS - 485/RS - 422收发器评估解决方案

    广泛应用。但在复杂的工业环境,设备需要具备强大的电磁兼容性(EMC)和故障保护能力。今天,我们就来详细了解一下EVAL - ADM2795EEBZ评估板,它为评估ADM2795E 5
    的头像 发表于 05-28 15:30 160次阅读

    探索ADM1266评估板:强大的电源管理解决方案

    探索ADM1266评估板:强大的电源管理解决方案 在电子工程师的日常工作,电源管理是一个至关重要的环节。今天,我们就来深入了解一下ADM1266评估板,看看它能为我们带来怎样的惊喜。
    的头像 发表于 05-23 16:10 1008次阅读

    【分享】结构函数分析对TTV的重要性

    分析(StructureFunctionAnalysis)被业界公认为TTV热性能评估强大、最具洞察力的技术。它能“透视”热路径内部结构,被称为TTV质量控制与失效分析的“X光机”。1.什么是结构函数分析?结
    的头像 发表于 05-21 09:43 154次阅读
    【分享】结构<b class='flag-5'>函数</b>分析对TTV的重要性

    嵌入式开发常用函数速查表

    在嵌入式开发,掌握常用函数的用法可以大大提高开发效率。无论是单片机初学者还是有一定经验的工程师,熟悉函数库和调用方式都是必备技能。今天,我们为大家整理一份嵌入式开发常用函数速查表,覆
    的头像 发表于 01-19 09:06 584次阅读
    嵌入式开发常用<b class='flag-5'>函数</b>速查表

    请问怎么封装函数库

    怎么封装函数库,只留一些回调函数和引脚定义,完整程序不让人看
    发表于 12-22 13:49

    TriBoard TC3X9:功能强大评估板深度解析

    TriBoard TC3X9:功能强大评估板深度解析 在电子设计的领域中,拥有一款功能强大且灵活的评估板对于开发人员来说至关重要。TriBoard TC3X9就是这样一款值得深入研究
    的头像 发表于 12-19 11:20 1124次阅读

    NORDIC蓝牙芯片NRF54l15的dsp支持分享

    Cortex-M 系列处理器的 DSP 函数库。 ? 2. 开发环境集成 (nRF Connect SDK) 当你使用 Nordic 官方推荐的nRF Connect SDK (基于 Zephyr RTOS
    发表于 12-17 16:03

    LUA例程-常用的回调函数使用说明

    详细说明LUA脚本函数功能和对应的应用实例。对于LUA脚本编程有很大的帮助和提高技能。
    发表于 11-24 16:43 0次下载

    关于系统链接脚本的介绍

    起来后所处于的地址,程序的相对寻址都会遵从此虚拟地址。 四、关于ITCM和DTCM(若使用FLASH下载模式) (1) 代码段上载到ITCM,ITCM起始地址(0x80000000)存储的代码就是主函数的入口。 (2)数据段上载到DTCM,DTCM起始地址(0x
    发表于 10-30 08:26

    TPT-X-2025.09 焕新上线!汽车电子测试效率再升级,解决测试痛点!

    在软件定义汽车浪潮下,汽车电子系统复杂度与日俱增,对测试工具的自动化与兼容性提出了更高要求。作为专注汽车嵌入式软件的测试工具,TPT始终紧跟技术发展趋势,持续优化自身产品。此次
    的头像 发表于 10-29 10:02 840次阅读
    <b class='flag-5'>TPT</b>-X-2025.09 焕新上线!汽车电子测试效率再升级,解决测试痛点!

    【技术分享】正确编写SysV Init脚本以实现Systemd兼容()

    /),但在Systemd系统,这些脚本需通过systemd-sysv-generator换为原生服务单元。若脚本未遵循LinuxStandardBase(LSB)规范
    的头像 发表于 10-28 11:45 982次阅读
    【技术分享】正确编写SysV Init<b class='flag-5'>脚本</b>以实现Systemd兼容(<b class='flag-5'>上</b>)

    16位语言工具函数库

    纯分享帖,点击下方附件免费获取完整资料~~~ 内容有帮助可以关注、点赞、评论支持一下,谢谢! 【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容,谢谢!
    发表于 07-18 14:40

    深入理解C语言:函数—编程的“积木块”艺术

    在编程的世界里,函数就像建筑的“积木块”——它们是构建复杂程序的基石。通过灵活组合这些模块,开发者能打造出功能强大且结构清晰的代码。函数之所以成为C语言的核心,正是因为它解决了编程
    的头像 发表于 06-30 17:26 2201次阅读
    深入理解C语言:<b class='flag-5'>函数</b>—编程<b class='flag-5'>中</b>的“积木块”艺术

    自己写:构建库函数雏形

    实际,构建固件是一件费时费力的事情,并且它对开发者对芯片的熟悉程度有一定的要求。甚至,当一个固件的封装程度很高时,想要阅读并理解该固件的底层代码也会变成一件有较高难度的事情。瑞
    的头像 发表于 06-19 11:19 1521次阅读
    自己写<b class='flag-5'>库</b>:构建库<b class='flag-5'>函数</b>雏形