账号:
密码:
智动化 / 文章 /

收集模型测试覆盖程度度量资料的理由
[作者 Pat Canny]   2021年07月22日 星期四 浏览人次: [1396]

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


对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公司)


相关文章
透过压力及应变管理强化高精度倾斜/角度感测性能
使用深度学习网路估算氮氧化物排放
感测融合开启自驾行车新视野
由压力及应变管理提升高精度倾斜/角度感测性能
实现朝向先进马达控制的趋势转变
comments powered by Disqus
  相关新闻
» 以辅助技术维护居家安全 忆起打造失智友善乐活屋
» 提升穿戴医疗性能 ADI推出临床级生命体徵AFE与微型SIMO PMIC
» 新竹马偕导入筑波医电智慧眼科系统
» 两岸台商PCB产值同创高 台制载板比重首见反转
» 安勤启动AI共融计画 携手南台湾赢地创新育成基地
  相关产品
» 艾讯推出全新高效4U机架式GPU工作站iHPC300
» ADI新款Nanopower一次电池健康状态监视器整合精密库仑计数器
» 瑞萨新型热电堆式CO2感测器扩展医疗和工业环境应用
» 意法半导体8x8区测距飞行时间感测器创新应用
» 泓格科技电力通讯闸道器 助力智慧电网设备即时监测快速整合