分享

符合功能安全要求的软件单元测试

 上下求索___ 2018-12-06

标准的基本要求和概念

       功能安全对于软件单元测试的要求位于ISO26262 6.9部分,标准对于单元测试的目标:在这个子阶段验证软件单元满足软件单元设计规范并且不包含多余的功能。

      一般需要在软件单元详细设计的时候并行进行单元测试,如下流程架构图所示。

ISO26262流程框架图

       ISO26262规定了针对不同ASIL等级的软件测试方法要求,如下图所示

常用的测试方法有:

1、基于需求的测试;

2、 接口测试;

3故障注入测试;

4资源使用测试;

5模型和代码之间的背靠背比较测试

软件单元测试方法

 基于不同的测试方法,测试用例的编写方法又可以分为以下几种:

   1、 基于需求分析

   2、 同类集合的结果和分析

   3、 边界值分析

   4、  错误猜测

软件单元测试测试用例的获取方法

      当上述的一系列测试最终的测试用例所测出的覆盖范围超出了所对应的功能,需要精简去除一些不需要的功能,而当覆盖范围未覆盖所有的范围则需要另外进行补充。获取覆盖率的方法包括以下3种。

1、语句覆盖率

2、分支覆盖率

3、条件覆盖率/决定覆盖率

覆盖率获取方法

        ISO26262中还提及对于测试环境的要求,此处的环境是对于当前单元测试环境与实际产品运行环境之前需要证明,因此当我们利用MBD开发时就需要进行SIL(代码)测试,用来证明单元测试的被测对象所处环境符合最终运行环境要求。

实现单元测试面临的问题

         针对以上ISO26262中各种规定,我们可以编写相应的测试用例,可以采用人工在开发环境下进行相应的测试,但是此时会发现测试任务相当繁琐,同时发现有些测试项无从下手。

  1、基于需求进行测试,此处需要所有的需求被覆盖,所以需要测试用例与需求有依赖,此工作可以进行人工操作,但很难不发现疏漏,此处就需要相应的测试管理工具。接口测试同理。

2、 当基于MBD开发时,背靠背测试成为了难题,此时人工测试无法满足,只能寻求相应的工具。

3、 当测试用例中存在边界值测试时,人工无法手动进行大量的循环测试步骤,普通的测试脚本需要针对每条测试用例,导致工作量巨大,因此专业的自动化软件成为了必选。

4、 当验证覆盖率时,matlab虽然可以进行覆盖率,但是由于本身测试用例的不连续性,导致无法完整测试覆盖率,人为手动又无法进行标准的界定。此时就需要对于matlabsimulink此项功能进行优化。

5、 单元测试需要在后期集成开发过程中不断进行回归测试,大量的测试量光靠手动测试需要消耗大量时间。

使用TestZelaot实现单元测试

       在针对软件单元测试过程中遇到的各种困难,推荐大家一款名叫TestZealot的自动化测试软件。这款软件支持调用多种软件进行相关测试,当选择调用matlab simulink功能部分时,正好符合大家大部分单元测试需求,契合了上述提及的问题。


软件启动页

常规软件单元测试模式

      如图,为一个unit 模型,在测试软件会在运行测试序列时,TestZealot软件会自动生成相应的测试框架。

Uint模型

测试框架

       这款软件采用拖拉控件的方式进行测试用例编写,极大的简化了测试用例编写过程,丰富的控件库满足客户测试需求,同时可进行用户自定义模块。而不同的测试用例编写完成后存在TestSquences文件夹内,可以进行管理和存储。


TestSquences界面

         当客户需求不同的测试用例组合时,可以在TestMarcos进行组合,例如可以利用循环的方式满足客户进行循环边界值测试。

TestMarcos界面

       测试的同时,用户可以在Feedback中对测试步骤进行观测,便于客户及时定位错误位置。

Feedback

       最后,自动化的测试报告,解放测试人员的双手,在有限的人员和测试时间内尽快的完成测试工作。同时,报告中有相应的log数据,capture,VariablProbe等进行数据的详细分析。

测试报告封面

报告log数据页

SIL软件单元测试模式

        ISO26262中需要进行相关的代码背靠背测试,用以验证代码和模型的一致性。TestZealot软件在工程配置页可以进行SIL模式测试模式勾选,切合客户需求。此功能与常规的模型测试共享测试用例,无需进行额外的测试用例二次修改,在测试过程中存在模型的代码生成过程,在模型的路径下可同步生成相应的代码。

工程配置页

     在相关路径中会生成一个LittleDream的中间模型,此模型采用model-refrence的方式生成refrence的模型的代码,对代码进行相关的测试。

SIL测试框架

自动生成的代码

覆盖率测试优化

        另外,ISO26262中需要对测试用例覆盖范围和覆盖层面进行覆盖率测试,用以验证测试工作的全面性。TestZealot对于simulink在覆盖率测试上进行了相应的优化。对于simulink中存在无法连续测试覆盖率问题进行了优化,只需要在TestMarcos内添加测试用例,相应测试用例的覆盖率情况就会出现在覆盖率测试报告上的累积覆盖率区域。

覆盖率报告

累计覆盖率

测试软件验证报告

     这款软件经过符合ISO 26262要求,进行了ISO26262测试软件相关的认证,具有相关的认证报告,报告如下:

ISO 26262 tool Verification report




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多