[转]SIMULINK与模型覆盖测试

来源:互联网 发布:js 调用java代码 编辑:程序博客网 时间:2024/05/17 15:21

下面文章引自网络,后续计划写一写模型测试的具体实现方法,先收藏一下。

 

原文地址: http://foundy.blog.163.com/blog/static/2633834420104934512915/ 

 

   在其他博文中,一直在强调测试问题,到底要测试些什么内容呢(看后面)?有一个同事说,你要解决的关于系统性能分析的模型问题代价也太大了,他说的代价,无非是又要学习一堆SIMULINK的工具箱的功能了,这算是代价吗?我真的看到一群有点愚的老板用金钱堆出的技术血泪史(呵,同事间吹牛玩的),那种老板,你跟他说不行,他总是说你不试怎么知道行不行,你跟他说可以先用仿真技术,他觉得你在电脑前用鼠标点那些奇怪的东西还不如立马去挑一桶大粪种点大白菜来得实在(打个比方,其实他不知道什么才是实在的技术开发)。再说,SIMULINK提供的关于系统测试验证的工具已经让使用者无需在那些基本的数学原理上下功夫了,这就是国内技术和国外技术的差距,我们仅仅在人家的基础上搞,还搞不好。

       当我们用SIMULINK建立起一个系统模型,SIMULINK里有两个几个相关的工具可以用来做测试,1、SimulinkVerification and Validation tools,2、Simulink Design Verifier3、SystemTesttools  

        我想,关于模型覆盖测试最直观而简单的问题是,是否能提供一个手段,了解一下系统的各种输入测试是否是完备的或者说完备的程度,同时能改善测试方案使得测试完备,在这个测试过程中同时监视系统的性能,这就是上面所说工具要解决的问题。要不然,你自己做出的程序,结果你得背着个象买卖牛马的小贩那样的挎包大江南北遍地跑,这就是很多小公司的现实。

         SIMULINK关于模型覆盖是这样解释的: 通过测量被测试模型如何被彻底测试的程度,模型覆盖帮助你验证你的模型测试实验,模型覆盖计算模型测试实验 经过了一个模型的模拟路径次数有多少,模型覆盖是一个模型测试实例到底有多彻底和测试路径百分率的测度。

        SIMULINK Verificationand Validation tools的几个覆盖分析概念(下面来自MATLB帮助):

1.序复杂性

    序复杂性是模型结构复杂性的度量 为了计算对象的序复杂性,模型覆盖用下面的公式:

  SIMULINK与模型覆盖测试 - foundy - 李会先博客

   N是对象表示的决策点数,On是第N个决策点的输出数。

2.决策覆盖(DC)

     决策覆盖分析模型中表示决策点的要素,比如开关模块或者状态流状态,对于这些项,模型覆盖确定模拟测试时实际通过这些路径的百分率。

3.条件覆盖(CC)

    条件覆盖分析组合逻辑(比如逻辑操作)和状态转移,条件覆盖分析报告是否模型中的每个模块被完全覆盖了。

      当收集模型覆盖,可能达不到100%的条件覆盖,比如如果确定短路逻辑模块(一种处理方式),就不能达到100%的条件覆盖。  

4. 改进条件/决策覆盖(MDCD)

    改进的条件/决策覆盖分析扩展了决策和条件覆盖能力,它确定测试实验测试逻辑模块输入和转移条件独立性的程度。

  • 一个测试实验达到模型的完全覆盖,当改变模块的一个独立于其它输入的输入,引起了模块的输出改变。
  • 一个测试实验到到状态流转移的完全覆盖,也就是每个转移条件在一个条件触发时,状态至少转移一次。

        MCDC也不保证100%的决策覆盖和条件覆盖。

SIMULINK的一些模块支持MCDC覆盖,一些仅支持条件覆盖,一些仅支持决策覆盖。关于这更细致的MCDC,可以研究一下DO-178B标准。 

5. 查询表条件覆盖

   查询表覆盖用表实体的输入、输出、内插、外推信息来分析模块,它记录每个内插间隙被使用的频率,要达到完全覆盖,每个内插和外推间隙至少被执行一次。

6. 信号范围覆盖

     信号范围覆盖是在模拟期间记录模型中没个模块的最大最小值。

7. 信号宽度覆盖

     信号宽度覆盖记录可变宽度信号的最大最小值。

0 0
原创粉丝点击