| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 天啦噜!Stateflow动态测试竟然so easy -> 正文阅读 |
|
[开发测试]天啦噜!Stateflow动态测试竟然so easy |
作为美国MathWorks公司的知名产品,Stateflow具有软件架构清晰、模型复杂度低、可读性和可维护性强等优势,因此被大量应用于设计有关监控、任务调度以及故障管理应用程序的逻辑,在汽车电控领域也有着非常广泛的应用。 基于支持客户的Stateflow测试经验,北汇信息总结了一套针对Stateflow的具有普适性的测试方法。下面就以Fan Management单元模块的动态测试为例,和大家一起分享。 被测模型Fan Management 单元模块通过VPM(整车高低压状态)、FanErr(风扇故障)、FanTemp(风扇温度)信号,对FanEn(风扇使能)、FanErrBack(风扇故障反馈)信号进行计算。 那么,当拿到这样一个单元模型和功能需求描述,应该如何去开展我们的动态测试工作呢?首先,为了防止在测试过程中深陷到Stateflow错综复杂的跳转逻辑中无法自拔,应该明确我们的测试思路。 围点打援 中心开花其实无论多复杂的Stateflow模型,其基本组成都可拆分为初始状态、跳转条件和目标状态三个部分。正是基于这样的基本结构,我们建立了“围点打援”的测试思路。
假设以Normal状态最为初始状态:
测试用例编写方法当确定好测试思路之后,下面就正式的搭建测试工程。这里,我们搭建测试工程用的是一款自动化的软件动态测试工具——TPT。 围点:控制Stateflow跳转至初始状态在进入初始状态的过程中,并不需要考虑MCDC覆盖度的要求。因此,只需要控制信号按照最短的路径进入到初始状态即可。 以Normal作为初始状态为例,直接使VPM = 8,跳入Normal状态。由于每次状态跳转会占用一个步长,我们给入足够的等待时间保证状态跳转至初始状态。 按照以上的搭建方法,分别对模型中的5个功能状态搭建了测试用例,并按照模型中的状态块名称对用例进行了命名。 由于这5个初始状态在后面测试用例搭建的过程中需要多次调用,TPT可以将编写好的测试用例进行封装,生成Variants,在搭建测试用例的过程中直接选择想要的状态即可。这会大大提升测试用例的搭建效率。 打援:给入状态跳转条件信号按照OriginalState分组封装的思路,将模型中的跳转条件也进行了Variants的搭建。这里针对信号Variants的划分会用到在测试过程中常用到的一种方法:等价类划分。 按照测试中常用的等价类划分方法,对Fan Management单元模型中的输入信号进行了等价类的划分:
划分好跳转条件上信号的等价类之后,为了方便复用,同样在TPT中搭建了相应的Variants。 当OrigianlState 和ObjState上的Variants都搭建好之后,接下来就是选择需要的Variants,让他们组合成我们想要的测试用例。为了减少用例运行过程中的资源占用情况,在用例的末尾加了一个300ms的最大跳出时间限制。
当然,TPT本着“万物皆Variants”的原则,测试用例中States的跳转条件也可以封装成Variants,便于我们的复用。 在运行用例的时候,TPT可以调用Simulink的V&V工具箱对模型的覆盖度进行统计分析。我们可以方便的查看MCDC覆盖度是否实现了“中心开花”的效果:以初始状态为中心,跳出初始状态的条件实现MCDC全覆盖。这样可以大大减少我们在为了满足MCDC覆盖度去补充测试用例的工作量。 在这个过程中,TPT还可以进行一些测试用例分组管理、测试需求管理、设置测试用例属性信息的工作,篇幅所限,这里就不给大家详述了。 一招从天而降的掌法–测试用例自动生成在搭建测试工程的过程中,有没有一种能减轻测试工程师的工作量,自动生成测试用例的方案呢? 为了提升大家的测试效率,TPT也提供了多种自动生成测试用例的方法。当我们搭建出OriginalState和ObjState的Variants之后,只需要动动手指,TPT就能自动生成我们想要的测试用例。 并且,在保证测试用例数量可控的前提下,自动生成的用例MCDC覆盖度达到了100% ! 在我们的测试过程中,巧妙的利用TPT提供的自动生成测试用例的方法,能够大大较少测试工程师的重复性劳动,实现真正意义的自动化测试。 关于评估用例搭建完成之后,我们还需要搭建测试评估,这里就可以利用TPT强大的脚本评估去实现。TPT的脚本评估使我们彻底摆脱了传统时间域上的评估,转向了复用性、自适应性更强的逻辑评估方式,同时也便于我们对模型和测试工程的debug。 对于Stateflow的评估,我们同样采用了“围点打援”的思路,先用正则表达式regexp定位至Normal状态,然后筛选出高压故障区间进行评估。 篇幅所限,这里只给大家介绍了一个简单Stateflow模型的测试方法,对于多层嵌套、含调度模块、复杂跳转条件、延迟逻辑等复杂模型,都可以在此基础上进行扩展。如果大家测试过程中存在疑问,欢迎留言评论哦。 PikeTec公司是全球知名的基于模型的嵌入式系统测试工具TPT的软件供应商,总部位于德国柏林,其创始人均在戴姆勒公司拥有十多年的软件测试经验。TPT产品曾被评为2005年戴姆勒最佳创新软件,并在戴姆勒、大众、奥迪、保时捷、通用等汽车整车厂及多家零部件企业(博世、大陆、海拉等)中得到广泛应用,如戴姆勒的多个车型的混合动力汽车的动力总成、电池管理控制器的测试,博世的汽油机和柴油机控制系统测试等。 北汇信息作为PikeTec在中国的独家合作伙伴,致力于帮助中国客户提升嵌入式控制系统的开发效率。目前,TPT已被众多国内知名主机厂和零部件企业认可,在新能源(VCU/BMS/MCU)以及ADAS等领域中被广泛应用。 注:产品图片源自MathWorks和PikeTec。 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 0:15:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |