汽车电子嵌入式开发系列50篇(二)-如何进行集成测试?
软件集成和测试主要对实现的各软件模块进行集成,并验证其嵌入式软件实现是否符合软件架构设计。该阶段的要求和建议如下:
-
软件集成计划应该描述层次化的集成单个软件单元进软件组件中,直到嵌入式软件完全集成,并且应该考虑如下:
-
软件集成功能的相互关系
-
软件集成和软硬件集成的相互关系
注意:对于基于模型的开发,可以先集成各模型,然后对集成好的模型进行自动代码生成以完成整体软件的集成。
-
软件集成测试根据ISO 26262-8:2011,第9章计划,定义并且执行。软件集成测试的测试对象是软件组件。对于基于模型的开发,测试对象可以是和软件组件相关的模型。
-
软件集成测试需要按照下表的方法进行,以完成以下目标:
-
检查集成的软件是否和软件架构设计一致
-
检查集成的软件是否满足软硬件接口规格
-
验证功能的正确性
-
检查其鲁棒性,比如:错误检测、错误处理机制的有效性。
-
检查是否有足够的资源来支持
表1 软件集成测试方法
方法 |
安全等级(ASIL) |
||||
A |
B |
C |
D |
||
1a |
基于需求的测试 |
++ |
++ |
++ |
++ |
1b |
接口测试 |
++ |
++ |
++ |
++ |
1c |
故障注入测试 |
+ |
+ |
+ |
++ |
1d |
资源利用率测试 |
+ |
+ |
+ |
++ |
1c |
模型和代码的比较测试 |
+ |
+ |
++ |
++ |
-
测试案例需要按照下表中的方法进行分析设计。
表2 软件集成测试的测试案例的设计方法
方法 |
|
||||
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
对于软件架构级别的需求测试覆盖度,可以用来衡量测试的完整性,以及用于证明没有设计之外的功能实现。如果有需要,可以增加新的测试案例,或则提供一个合理的理由说明。
-
为了评估测试案例的完整性同时确保没有多余的功能,根据下表列出的指标需要衡量出其结构覆盖率。如果覆盖率不够高,要么需要添加额外的测试案例,或则提供一个合理的理由说明。例如,结构覆盖率的分析可以用于发现测试案例的不足、无用代码、无效代码或则多余功能等。
-
结构覆盖率可以利用工具计算出来。
-
如果是基于模型的开发,结构覆盖率可以通过模型级别的模型结构覆盖率来统一计算。
表3 集成软件的结构覆盖率的衡量方法
方法 |
安全等级(ASIL) |
||||
A |
B |
C |
D |
||
1a |
功能覆盖率 |
+ |
+ |
++ |
++ |
1b |
函数覆盖率 |
+ |
+ |
++ |
++ |
-
作为产品发布的一部分,嵌入式软件需要被验证其包含设计的所有功能。如果嵌入式软件包含了设计之外的功能(比如用于调试的代码),则这些功能需要被验证是不影响软件的安全需求的。如果这些设计之外的功能在真实产品中保证不会被激活执行,那也是符合这个要求的;否则删除这些功能,也需要按照需求变更流程来统一处理。
-
软件集成测试需要尽可能的在真实环境中运行,如果不行,则需要评估测试环境与真实环境的差异性,并针对这些差异,在后续的阶段的真实环境的测试中设计专门的案例来执行。
-
测试环境的不同,会导致源代码或目标代码的不一致,比如不同处理器的位数不一样,会导致编译后的目标代码不一致。
-
针对各种测试,需要建立合适的测试环境。比如目标处理器的测试环境、仿真处理器的测试环境、开发测试环境等。
-
软件集成测试可以利用模型在环测试(MIL)、软件在环测试(SIL)、处理器在环测试(PIL)、硬件在环测试(HIL)等测试手段进行测试。
- 点赞
- 收藏
- 关注作者
评论(0)