模型单元测试

软件单元:在基于模型的软件设计中,软件单元指软件架构中最小的单元。而软件架构划分的颗粒度视情况不同而定,最大粒度为各功能模块之间耦合度最低,即单个模块所涉及的变量对其他模块的影响度最小,非不可剥离出去的变量。如BMS系统中的高压上下电模块和诊断事件管理模块,前者的输入信号BMS系统故障状态来源于后者的输出,但该变量剥离出去,对前者无功能影响。

 

按照软件架构划分好的单元,如果做软件单元测试,再将其细分,有必要吗?

A:非有无必要,而是无意义。该单元已经是最小的软件模块,属于完整的单个功能,内部的变量是有逻辑关联的。如果再拆分成更小的单元,类似于一个加法计算,这样的测试测完之后,还得对整个单元进行测试,才能说该单元模块测试充分了。还有一点,像更小的单元,开发人员在调试时已经完成了。

 

如何做单元测试?

A:充分理解单元模块的需求,基于软件需求进行测试。注意:单元测试非白盒测试,不需要去关注模型内部的运行逻辑。把单元模块视为一个黑盒,按照需求,给定输入条件验证输出结果对其进行验证。用黑盒测试的方法设计测试用例,用白盒测试方法补充用例,验证程序结构是否有未覆盖到的逻辑路径。

 

单元测试是否要关注模型的结构覆盖率?

A1:No. 一个模型单元,基于需求设计的测试用例难以覆盖模型中的各个分支和语句(同时,软件中出于设计考虑,会留下本就无法达到的分支和语句),而基于需求,并不清楚软件内部的结构,且复杂的内部结构,难以通过人工设计用例来满足覆盖要求。故无法根据需求来设计满足结构覆盖率要求的用例。而需要借助工具完成,如simulink中本身能自动生成用例去跑结构覆盖率测试。

A2:Yes. 模型的结构覆盖率测试是对基于黑盒测试方法设计测试用例的有效补充测试。

 

2018/10/7更新:

单元测试的目标:测试软件单元是否与软件规格说明书相符?包含两个层面:1)是否实现了所需功能?(预期);2)是否出现软件规格说明书中没有说明的功能?(非预期)

单元测试与集成测试的功能划分:单元测试的对象是较小的软件单元,当软件分模块并行开发时,对单个较小单元进行测试,发现错误的概率更大,同时开发人员进行软件调试的难度更小。

 

你可能感兴趣的:(模型测试)