- 基于需求事项的单元测试是什么?
大多数汽车行业都遵循 ISO 26262 中定义的标准,这是 ISO 制定的汽车功能安全国际标准。
根据 ISO 26262 标准软件单元测试 (ISO 26262-6-9),单元验证是验证要验证的单元(功能或功能)是否按设计运行的程序,建议采用图 1 所示的方法。
<图 1> ISO 26262 - ASIL 各等级 Unit Test Method
※ ASIL(Automotive Safety Integrity Level): 是通过风险安全分析等评价为符合ISO 26262的等级,推荐强度因等级而异(++:强烈推荐/ +:推荐/ o:不推荐)
其中,基于需求的测试(1a Requirement-based test)是一种验证软件的各个单元(功能和功能)是否根据需求设计并按设计运行的方法。如上表所述,在ASIL A 最高 D 的所有项目都被推荐为“++(非常推荐)”。
那么,基于需求的单元验证应该如何进行呢?
下图解释了 ISO 26262 建议的汽车软件开发标准阶段模型。
图2.ISO 26262 - 软件开发的标准阶段模型
<图 2> 底部的 ‘6-9 Software unit testing’ 表示软件的单元测试阶段, 该阶段意味着需要验证 ‘6-8 Software unit design and implementation’ 阶段。
'6-8 Software unit design and implementation’是指软件单元(功能或功能)的设计与实现,在基于需求的单元验证中,利用软件单元(函数或功能)的设计相关文档来处理需求,该文档是相应步骤中生成的输出。
<图 3> ISO 26262 – Work Product of ‘6-8 Software unit design and implementation’
<图 3> 是 ISO 26262 中提出的“6-8 软件单元设计和实施”阶段的输出。 从对应步的输出中可以查到的信息包括名称、描述、输入/输出接口信息、实现单元(函数或功能)的算法(控制流程图或状态转移图)等,输入/输出接口信息和算法信息为必填项,主要作为基于物的单元验证的要求。
基于需求的单元验证从图 3 中指定的输出中提取需求,基于它创建单元验证规范,并根据书面规范执行验证。
2. 基于需求单元验证的验证规范
那么,从现在开始,让我们看一个为基于需求的单元验证而编写的单元验证规范的示例,看看它是用什么格式编写的。
<图 4> Software Unit Design 示例
<图 4>是根据车辆的齿轮状态和速度输入值自动锁定或解锁车门状态的车身控制器功能的单元(函数)的规格示例。 它是通过指定函数描述、输入/输出接口信息和算法(状态图)来编写单元(函数)规范的状态。
<图 5> 基于需求单元验证的验证规范示例
<图 5>는 是根据<图4>中的规范信息提取需求而编写的单元验证规范的示例。 作为要求,从图 4 的示例中提取了接口信息和算法(状态图),并在 [1.2.2] 中找到。 I/O 列表] 和 [1.3. 状态图]。
<图 5>的【1.4 Test Case】是提取后使用指定的需求编写的测试用例。 通过分析各个接口的含义和可能值(Scope information)和Algorithm(State Chart),指定反映需求的输入值和期望输出值。 通过将这样编写的测试用例应用于实际源代码的单元(功能)并进行验证,可以进行基于需求的单元验证。
[参考文献]
- ISO 26262 (Part 6 : Product development at the software level)