单元测试和安全完整性等级
根据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认证。
购买最新正版授权Parasoft赠送Macbook!"咨询在线客服"
慧都年终盛典火爆开启,一年仅一次的最强促销,破冰钜惠不容错过(12.01~12.31)!!
本站文章除注明转载外,均为本站原创或翻译