Simulink模型覆盖度分析是一种用于评估软件质量的重要方法,它可以帮助开发人员确定软件中存在的问题,并且可以有效地提高软件的可靠性。汽车电子软件对模型覆盖度的需求也很大,因为它们必须能够确保所有功能都能正常工作,而不会出现意外情况。
【资料图】
覆盖度分析包括三种不同的覆盖度:行覆盖度、判断覆盖度和条件覆盖度。行覆盖度是测试用例中所有代码行都已执行过的情况。判断覆盖度是测试用例中所有判断条件都已正确执行过的情况。条件覆盖度是测试用例中所有条件流都已正确执行过的情况。
Simulink模型覆盖度分析可以使用一些工具或者方法来实现,如Simulink Coverage、MATLAB Code Coverage、Simulink Test、MATLAB Unit Test Framework、Model Advisor Checker 等。这些工具或方法可以帮助开发人员快速准确地评估代码中存在的问题,并提供有效的修复方法。
为了实现100%的覆盖度,开发人员必须设计出尽可能多的测试用例,根据代码中存在的特定问题、关联性来创建测试用例,并根据不同情况选择合适的测试方法来实施测试。例如:对于一个特定功能,开发人员可以根据其特性和使用场景来设计出尽可能多的测试用例;对于一个特定代码行或者判断条件,开发人员也可根据其特性和使用场景来设计出尽可能多的测试用例。此外,开发人员还必须根据不同情况选择合适的测试方法来实施测试;如单元测试、集成测试、站体测试、回归测试、性能测试等。
使用Simulink Coverage或MATLAB Code Coverage时,开发人员还必须考虑如何将测试数据集合导入Simulink或MATLAB中去运行测试套件。一般考虑使用MATLAB Unit Test Framework或Model Advisor Checker将数据集合导入Simulink或MATLAB中去运行测试套件。然后通过将生成的日志文件抓取回来并放入Excel文件中去生成一个易于理解并清理整理出关联性、特征之间关系图形化显示出来即可得出100% 覆盖度判断 。
为了实施上述步骤:
1. 需要先明白代码特性;
2. 根据代码特性选出适当的浪涛样例;
3. 在Simulink中将样例导入;
4. 运行Simulink Coverage或MATLAB Code Coverage;
5. 检验生成的Coverage Report;
6. 改进Coverage Report中存在间隙;
7. 重复上述步骤, 直到Coverage Report结果满足要求为止。
为了帮助大家更好理解上述方法, 举一个具体例子: 在一个Simulink Model中, 有一个if-else-endif 语句, 其中if-else-endif 语句包含三个判断条件: A>B, A=B, A<B. 为了保障100% 的判断覆盖度, 需要将三个判断条件改写成三个独立样例: 样例1: A>B; 样例2: A=B; 样例3: A<B. 然后将三个样例导入Simulink Model, 运行Simulink Coverage或MATLAB Code Coverage, 检阅生成Coverage Report, 判断是否存在遗留尚未覆盖的分支(或称间隙), 并改进遗留间隙。
HuaZhang是一位开发人员,她正在使用 Simulink 来开发一个新功能——“无人驾驶汽车” 的远程仿真控制系统。为了保障无人驾驶汽车能够正常工作并提升其安全性,她必须对 Simulink 求真控制系统100%的覆盖度。她采用 MATLAB Unit Test Framework 来生成大量不同情况的Case, 然后将生成日志文件抓回,并放入Excel文件,通过图形化显示出间隙,特征,关联性之间的关系,最后得出100%的覆盖度。通过上述方法,Li Hua 有效节省了大量时间,也保障交上去无人驾驶汽车能够正常且安全地运行。
Copyright © 2015-2022 全球健康网版权所有 备案号:豫ICP备20009784号-11 联系邮箱:85 18 07 48 3@qq.com