账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
收集模型测试覆盖程度度量资料的理由
 

【作者: Pat Canny】2021年07月22日 星期四

浏览人次:【4201】

在以要求为基础的模拟测试当中,有一部分的设计可能会因为细微的设计错误、不完整的测试、或者遗漏的要求而没有运行。本文以范例阐述三重选择演算法的设计测试,因为要求的遗漏而被认定为不完整的重要环节。


对Simulink设计进行有系统的测试,可以帮助确保在产生程式码之前能够对设计的预期与非预期行为更有把握。在以要求为基础的模拟测试当中,有一部分的设计,可能会因为细微的设计错误、不完整的测试、或者遗漏的要求而没有运行。模型测试的覆盖度可以藉由测量有多少的Simulink设计确实在测试过程中执行,来协助确认这些测试的缺口。


要求遗漏是在以要求为基础测试过程中模型测试覆盖不完整的一种常见的原因。这种类型的模型测试覆盖遗漏,通常是因为有些设计元件无法被追溯到更高层级要求。收集模型测试覆盖可以协助处理这样的情况。本文将阐述范例,其中的三重选择(triplex selection)演算法的设计测试,因为要求的遗漏而被认定为不完整。


三重选择演算法:概述与要求

三重的讯号选择演算法常使用于航太控制系统软体。在三重讯号选择,会由三个独立感测器「投票」选出一个讯号,然后在飞行器的控制使用这个被选择出来的讯号。当一个感测器没有被侦测出任何故障,则该感测器会被视为「有效」。


在这个范例,要选择的是飞行器的空速(Airspeed)讯号。空速讯号选择演算法的要求如下:


HLR_1 从三个感测器选择空速讯号:当三个空速感测器皆为有效时,飞行控制电脑应选择三个感测讯号的中间值。


HLR_2 从两个感测器选择空速讯号:当只有两个空速感测器有效时,飞行控制电脑应选择两个感测讯号的平均值。


HLR_3 从单一感测器选择空速讯号:当只有一个空速感测器有效时,飞行控制电脑应选择有效的讯号。


图1呈现了这三项要求在Simulink的执行。



图1 : Simulink执行空速讯号选择演算法。
图1 : Simulink执行空速讯号选择演算法。

执行演算法并收集模型测试覆盖测量资料

在模型内一个专用的子系统执行每一项要求,并且为每一次的执行撰写单独的测试案例。在执行这些测试之前,需要确认模型测试覆盖的测量资料有被记录下来。


模型测试覆盖的测量资料可以是个别的(为单一测试收集)或累计的(多次测试的总计)。我们会收集以要求为基础的测试的累计覆盖来衡量设计是否在完整的测试套件完全地执行。


模型测试覆盖的衡量有许多类型,像是执行覆盖(execution coverage)、判断覆盖(decision coverage)、讯号范围覆盖(signal rage coverage)、以及关系边界覆盖(relational boundary coverage)。在这个范例,我们关心的是判断覆盖,也就是一种测量在模型中执行所有可能的逻辑结果来进行判断的结构覆盖。如果所有被送到切换开关(switch)的输入值,在模拟当中至少被选择了一次,则像是Switch blocks等Simulink模型物件会接收完整的判断覆盖。


我们使用Simulink工具列Apps页签下的Coverage Analyzer app启动模型测试覆盖的收集(图2)。



图2 : Simulink工具列的Apps页签。
图2 : Simulink工具列的Apps页签。

开启了Coverage Analyzer app,可以使用Coverage页签下Coverage ON/OFF按钮来的开启覆盖资料的收集。此外,也使用Cumulative Collection按钮来启动累计的覆盖。接着在覆盖的收集被启动的状态下按下现在被标记为Analyze Coverage 的Play按钮来模拟模型(图3)。在每一次的模拟使用不同的测试向量来模拟数次。



图3 : 覆盖收集已被启用的Coverage Analyzer app。
图3 : 覆盖收集已被启用的Coverage Analyzer app。

图4为覆盖的结果。绿色标示的区域表示模型测试覆盖完整,包含每一个子系统内的所有的模型物件,红色区域则代表覆盖完整度不足。



图4 : 空速讯号选择演算法的测试覆盖结果。
图4 : 空速讯号选择演算法的测试覆盖结果。

判断覆盖似乎在Multiport Switch block遗漏了。为了了解发生的原因,打开Simulink的覆盖细节(Coverage Details)窗格,检查个别模块模型测试覆盖细节(图5)。



图5 : 打开Simulink覆盖细节窗格。
图5 : 打开Simulink覆盖细节窗格。

图6 : Multiport Switch模块的覆盖细节窗格
图6 : Multiport Switch模块的覆盖细节窗格

第一个送到Multiport Switch的输入值在模拟当中从未为0。回想图1的模型,当时第一个送到Multiport Switch的输入值为有效讯号的数值。由此可见,并没有测试到所有的空速讯号皆为无效的案例。


这项遗漏的模型测试覆盖是因为缺少了更高层级的要求。没有要求指出在未有任何空速讯号为有效的情况下,仍然必须选择出讯号。然而,看起来设计已经纳入了处理这类情况的逻辑。


因此,加上了这项遗漏的要求:


HLR_4 无有效感测器时的空速讯号选择:当三个空速讯号皆为无效时,飞行控制电脑应暂停空速讯号的选择。


接下来,加上一个新的测试案例并重新执行测试。这时达到完整的判断覆盖(图7)。



图7 : 加上新的要求后的覆盖结果。
图7 : 加上新的要求后的覆盖结果。

如同这个范例所示,模型测试的覆盖是一项确认在以要求为基础的测试当中是否有要求遗漏的可靠方法。可以使用模型测试覆盖的结果,以确保设计之中正确部位的运行。


另一种模型测试覆盖不完整常见的原因为死逻辑(dead logic)。 「死逻辑」指的是Simulink模型或Stateflow图表,其中任何一个部分从未在模拟过程中被执行,例如一个送到Switch模块的输入值可能从未被选择,或者一个状态机的转换可能从未被采用。


最佳的实作途径是在编写或执行以要求为基础的测试之前,先使用Simulink Design Verifier(为Simulink设计验证工具)来分析模型,并且解决死逻辑的情况。也可以使用Simulink Check(为Simulink验证标准检测工具)里面的Model Slicer功能,进行死逻辑的调整或除错。


(本文由钛思科技提供;作者Pat Canny任职于MathWorks公司)


相关文章
BMS的未来愿景:更安全、更平价的电动车
利用边缘运算节约能源和提升永续性
Arduino推出支援Elastic的函式库
电学、光学PPG感测器应用在健康穿戴的设计与挑战
NASA太空飞行器任务开发光学导航软体
comments powered by Disqus
相关讨论
  相关新闻
» 意法半导体入选「2024全球百大创新机构」榜单
» GTC 2024:所罗门与NVIDIA合作加速生成式AI应用
» 日月光半导体与文藻外大携手培育高科技跨域人才
» 帆宣与隹世达合组「达宣智慧」公司 启动智慧医疗引擎
» 镭洋叁与美国华盛顿卫星展 展示立方卫星成果和地面设备追星技术


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK83JB3LXZWSTACUKY
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw