parasoft c/c++嵌入式单元测试:安全标准

单元测试和安全完整性等级

根据IEC-61508-3定义的单元测试完整性水平在下表中进行了总结,如下:

  • R —指出IEC-61508标准推荐的与方法匹配的功能
  • HR —指出IEC-61508标准推荐的与方法匹配的功能

表中引用的技术/测量描述由IEC-61508-3标准定义。例如:(表A.3:1)参照IEC-61508-3,表A.3,技术1。

C++test功能 SIL
A B C D
单元测试模块 - 通用
单元测试执行(表A.5:4,表A.7:3) HR HR HR HR
自动生成单元测试模块
自动生成单元测试采用边界值(表B.2:1,表B.3:3) R HR HR HR
准备输入参数的值组,所使用的工厂函数(表B.2:5) R R R HR
采用的随机输入组合(表A.5:1)   R R HR
测试管理模块
使用用户定义的测试案例测试 HR HR HR HR
使用数据源,以有效地提供多种输入 HR HR HR HR
使用测试用例管理器来管理测试用例和审查测试用例状态(表A.5:2) R HR HR HR

 

C++test功能 SIL
A B C D
功能存根
利用存根来控制执行测试的流程,以满足给定的条件 (表A.5:4) HR HR HR HR
使用功能存根来代替自动单元测试执行用户界面(表A.5:6) R R HR HR
使用存根提供故障条件测试(表B.2:2) R R R R
覆盖模块
针对结构测试,分析语句,分支和MC/ DC代码覆盖率(表B.2:6) R R HR HR
温馨提示:
  • 单元测试可以运行在仪表模式和非仪表模式—例如,覆盖工具不会影响测试结果。
  • 执行单元测试可以在目标设备上或模拟器中。

值得一提的是,IEC-61508在第二版中的改进很大。例如,在第一版本表B.2,技术6的引用的是一般的基础测试结构。在第二版中,表B.2有新增了(7A到7D)特定结构的测试覆盖类型并要求100%的覆盖率,这取决于SIL数目。

其他安全标准

IEC-61508不是唯一于功能安全相关的标准。有一些衍生自IEC-61508标准,用来解决特点行业的细节,而另一些是独立于它的。有一些更为严格(例如,与机载系统相关),而另一些则较为宽松。但是基本概念是相似的,所以单元测试已经被证明是必不可少的。下面我们简短的讲一下其他的相关标准,具体详情请自行参阅相关文件或咨询专家。

  • ISO/DIS-26262
    符合IEC-61508标准,适用于道路车辆的电子/电气系统的标准。

  • ASIL(汽车安全完整性等级)
    这是由ISO/ DIS-26262定义的标准,等价于SIL。它规定了必要的安全措施,以避免意外的风险残余。用D 代表最严格的级别,A代表最宽松的级别。

  • DO-178B/C
    飞机和发动机上使用的机载系统和设备软件标准。

  • IEC-60880-2
    符合IEC-61508标准,适用于核电厂安全系统的标准。

  • EN-5012X/EN-50128/EN-50129
    符合IEC-61508标准,适用于轨道交通。

结论

诚然,单元测试是需要投入成本的,但它是必不可少的。对于嵌入式单元测试来说,增加了更多的困难,这可以使用本文中所讨论的方式来解决。

单元测试会为您带来很多益处,如帮助您创建更好的代码,建立回归测试套件,实现所需的安全完整性等级,或获取DO-178B认证。

你可能感兴趣的:(嵌入式,c/c++,安全标准,Parasoft)