汽车电子嵌入式开发系列50篇(三)-单元测试

举报
格图洛书 发表于 2021/12/24 14:53:27 2021/12/24
【摘要】      软件单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。ISO26262中规定了其相对应的要求和建议:软件单元测试需按照“ISO26262-8 章节9中”的验证要求来有计划的定义和执行。软件单元测试的对象是具体的软件实现单元,在基于模型的软件开发过程中,软件单元测试的对象是其单元模型。软件单元测试需要按照下表中列的方法进行...

     软件单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。ISO26262中规定了其相对应的要求和建议:

图片

  • 软件单元测试需按照“ISO26262-8 章节9中”的验证要求来有计划的定义和执行。软件单元测试的对象是具体的软件实现单元,在基于模型的软件开发过程中,软件单元测试的对象是其单元模型。

  • 软件单元测试需要按照下表中列的方法进行,以完成以下目标:

  • 检查是否符合软件单元设计的具体要求

  • 检查是否符合软硬件接口要求

  • 检查功能是否正确实现

  • 检查是否有异常功能

  • 检查软件实现的鲁棒性:比如错误处理效率等

  • 检查功能所需资源的完整性

表 1 软件单元测试的方法

方法

安全等级(ASIL)

A

B

C

D

1a

基于需求的测试

++

++

++

++

1b

接口测试

++

++

++

++

1c

故障注入测试

+

+

+

++

1d

资源利用率测试

+

+

+

++

1e

模型和代码的比较测试

+

+

++

++

 

  • 软件单元测试中的测试案例需要按照下表中的方法进行分析设计。

表2 软件单元测试案例的设计方法

方法

安全等级(ASIL)

A

B

C

D

1a

需求分析

++

++

++

++

1b

等价类划分

+

++

++

++

1c

边界值分析

+

++

++

++

1d

错误推导

+

+

+

+

  • 软件单元测试中,对于需求的覆盖度、代码的覆盖度都需要进行衡量,具体方法如下表所示。如果覆盖度不够,还需要增加其他测试案例。

  • 代码的覆盖度都可以借助一些软件工具来实现;

  • 如果是基于模型的开发,其软件单元测试需要利用类似的模型的结构化覆盖指标来衡量;

  • 如果通代码的打桩来进行测试覆盖度的衡量,必须保证打桩的代码和正常的代码的执行功能是一致的;

  • 对于覆盖度衡量目标,都需要给出一个合理理由来表示其不同的级别,对于无法覆盖的代码,可以通过检查等其他方法来进行验证。

 3 软件单元测试覆盖度衡量指标

方法

安全等级(ASIL)

A

B

C

D

1a

语句覆盖度

++

++

+

+

1b

分支覆盖度

+

++

++

++

1c

MC/DC(修正条件/判定覆盖)

+

+

+

++

  • 软件单元测试需要尽可能的在真实的目标环境上执行,如果利用其他环境,则需要评估其与真实环境的差异、源代码和目标代码的差异,分析设计测试案例,以便在接下来的测试阶段中得到执行。

  • 测试环境的不同,会导致源代码或目标代码的不一致,比如不同处理器的位数不一样,会导致编译后的目标代码不一致。

  • 如果能利用目标环境中的相同处理器来运行软件单元测试案例,那是最有效的,但如果不行,则可以用处理器模拟器来代替,否则软件单元测试只能在开发系统中进行测试。

  • 软件单元测试可以在不同的环境中执行,比如模型在环测试(MIL)、软件在环测试(SIL)、处理器在环测试(PIL)、硬件在环测试(HIL)等。

在基于模型的开发系统中,软件单元测试可以在模型级别进行,但模型与代码的执行比较测试必须要做,以保证模型与自动生成的代码的结果一致性。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。