技术文章版块持续更新本周为您分享的文章是《基于设计需求的单元测试和单元测试详细说明书》,兜兜转转回到了单元测试的知识点,要是有兴趣的话,请继续读下去吧!
1. 何为基于设计需求的单元测试
大部分汽车行业遵循ISO制定的汽车功能安全国际标准ISO 26262所定义的规则。
单元测试用于测试验证对象单元(函数或功能)是否按照设计需求在正常运行,根据ISO 26262标准的Software unit testing(ISO 26262-6-9)内容,针对单元测试提出了如下方法(见图一)。
<图1> ISO 26262 – ASIL各等级Unit Test Method
※ ASIL(Automotive Safety Integrity Level): 每个等级都规定了ISO 26262功能安全标准的要求以及避免出现不可接受的风险所采取的措施。(++:强烈建议 / +: 建议 / o: 无建议事项)。
如上表所示,从ASIL A到D都建议采用"++(强烈建议)"的测试方法。
那么,基于设计需求的单元测试应该如何进行呢?
<图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 Software unit design and implementation"阶段的产物。 在相关阶段的产物中可以确认实现单元(函数或功能)的名称、说明、输入/输出接口信息、算法(控制流程图或状态推移图)等,其中输入/输出接口信息和算法信息等常被用做基于设计需求的单元测试的设计要求。
从图3展示的产物中提取要求事项,基于此制定单元测试详细说明书,并据此详细说明书进行测试。
2
基于设计需求的单元测试所需的单元测试详细说明书
那么现在,让我们通过示例来看一下单元测试详细说明书到底是用哪种形式制作而成的吧。
<图4> Software Unit Design示例
<图4>是根据车辆的控制状态和速度输入值,自动锁定或解锁的汽车BODY相关控制器功能d单元(函数)详细说明书的示例。示例中的说明书已对函数和输入/输出接口信息进行了说明,并标明了Algorithm(State Chart)。
<图5> 基于设计需求的单元测试详细说明书示例
从图4的示例中提取了Interface信息和 Algorithm(State Chart)作为设计需求,并且在<图5>的1.2. I/O List和1.3. State Chart中可以确认这些内容。
<图5>的1.4 Test Case是利用提取后明确的要求事项制作的测试用例。 通过分析各接口具有的意义和值的范围(Scope信息)及Algorithm(State Chart),提出了反映需求的输入值和预期值。将这样制作的测试用例应用于实际源代码的单元(函数)进行测试,从而实现基于设计需求的单元测试。
[参考资料]
- ISO 26262 (Part 6 : Product development at the software level)
本期文章就到这里,如果各路大神若有所疑问或想指点小生一二,就请评论栏留言吧!