构建高效嵌入式软件测试需要几步?这份锦囊“建议照抄”(嵌入式软件测试 方法、案例与模板详解)
近年来,随着嵌入式系统的功能和复杂性不断增加,其开发时间和成本也随之不断上升。对于安全关键领域的嵌入式系统和软件来说,其稳定性和可靠性往往需要通过大量的测试和验证来保证。
一、一般软件测试VS嵌入式软件测试
嵌入式软件测试针对嵌入式软件进行,建立在一般软件测试的基础之上,大多数软件的测试方法都可以直接或间接用于嵌入式软件的测试。但由于嵌入式系统专用性强、实时性要求高,嵌入式软件测试与一般软件测试也存在一些不同之处。
表1:一般软件测试与嵌入式软件测试的区别
二、嵌入式软件测试需求
根据测试阶段和重点的不同,嵌入式软件测试需要考虑多个层面的因素:
第一层:不同测试阶段的测试需求。嵌入式软件测试通常分为单元测试、软件集成测试、系统测试及验收维护四个阶段。对不同的测试阶段的测试需求分析往往是不同的,采取的测试方法及进行测试的程度也不相同。测试通常需要满足“需求可追溯”:不同的测试阶段会验证不同的设计/编码是否符合需求,以确保该软件能够实现预期的功能,并且仅构建了所需的功能。需求可分为低层级需求和高层级需求,各行各业存在的功能安全标准即为满足高层级需求的存在,如汽车领域的ISO 26262,测试人员通常会以满足本领域高层级需求的功能安全标准来分析测试需求,并通过简单测试来解释和测试所有未发现的测试案例。嵌入式软件的开发通常遵循V模型,如下图所示,测试贯穿整个开发过程中。
图1:嵌入式软件开发过程的V模型
第二层:待测软件的特性。不同的嵌入式软件应用背景不同,所要求的特性也不相同,测试的侧重点自然也不同。航空、航天领域的嵌入式软件一般需要具备很强的实时性——飞行控制系统必须快速调整飞机姿态以确保飞行安全性。对航空、航天领域的嵌入式软件进行测试时,需要格外关注输入、运算、输出的时效性。
第三层:测试需求的优先级。根据所测的功能点进行分析、分解,从而得出哪些功能点为主要功能点、哪些为次要功能点。测试需求优先级别的确定,需要测试人员清晰了解核心的功能、特性及测试流程,有利于测试工作有的放矢地展开。
第四层:测试需求的覆盖程度。如果一个软件的需求已经与测试需求存在一对一或一对多的对应关系,可以说测试需求已经覆盖了该功能点,测试需求的覆盖率达到100%,并不意味着测试需求的覆盖程度高。测试需求的覆盖率只计算了显性因素,而隐性因素并未被计算在内。因此,测试人员需要不断了解系统的隐性需求,对测试需求进行补充和优化。
第五层:不同的测试环境。由于执行故障注入、覆盖率分析等测试步骤需要在不同的测试环境中进行,在进行测试需求分析时就需要考虑到相应的搭建、数据准备及接口等变量。
第六层:测试工具的选择。根据测试的要求和测试阶段,选择成熟且可靠的测试工具也非常重要。
三、嵌入式软件测试工具
(一)静态测试工具
单元测试阶段作为完整测试过程的最初阶段,需要确保各个组件都能够正常工作。在此过程中,测试人员需要对较低级别的需求进行定义,以确保每个功能和功能集都能被正常使用并为系统其余部分提供合适的接口。第二层:待测软件的特性。不同的嵌入式软件应用背景不同,所要求的特性也不相同,测试的侧重点自然也不同。航空、航天领域的嵌入式软件一般需要具备很强的实时性——飞行控制系统必须快速调整飞机姿态以确保飞行安全性。对航空、航天领域的嵌入式软件进行测试时,需要格外关注输入、运算、输出的时效性。
第三层:测试需求的优先级。根据所测的功能点进行分析、分解,从而得出哪些功能点为主要功能点、哪些为次要功能点。测试需求优先级别的确定,需要测试人员清晰了解核心的功能、特性及测试流程,有利于测试工作有的放矢地展开。
第四层:测试需求的覆盖程度。如果一个软件的需求已经与测试需求存在一对一或一对多的对应关系,可以说测试需求已经覆盖了该功能点,测试需求的覆盖率达到100%,并不意味着测试需求的覆盖程度高。测试需求的覆盖率只计算了显性因素,而隐性因素并未被计算在内。因此,测试人员需要不断了解系统的隐性需求,对测试需求进行补充和优化。
第五层:不同的测试环境。由于执行故障注入、覆盖率分析等测试步骤需要在不同的测试环境中进行,在进行测试需求分析时就需要考虑到相应的搭建、数据准备及接口等变量。
第六层:测试工具的选择。根据测试的要求和测试阶段,选择成熟且可靠的测试工具也非常重要。
(二)半实物仿真测试平台
在系统级测试阶段,半实物仿真测试平台是目前常用的测试工具之一。
半实物仿真测试在目标机上测试软件,用仿真器模拟外部环境,以提供激励信息和接收反馈信息。该环境下测试接近实装测试,可靠性强。具有较好地收集数据、更容易地进行故障重现、可控性强且能实现自动化测试,风险小,收益大。半实物仿真允许在系统中接入部分实物,意味着可以把部分实物放在系统中进行考察,从而使部件能在满足系统整体性能指标的环境中得到检验,因此半实物仿真是提高系统设计的可靠性和研制质量的必要手段。国内半实物仿真技术在导弹制导、火箭控制、卫星姿态控制等应用研究方面也达到了较高水平。
ETest,嵌入式系统半实物仿真测试集成开发环境,是首款符合ATML标准的国产自主可控的半实物仿真测试系统集成开发环境,具有跨平台的运行能力,可利用ETest开发出运行于国产计算平台测试系统,广泛应用于第三方测试机构的测试环境搭建、装备研制部门的测试工装开发以及检测设备研发单位的产品研制。
图2:ETest测试开发环境图
ETest作为工业基础软件,填补了我国在通用半实物仿真测试系统方面的空白:
◆ 提出的ETL语言具有完善的工具链;
◆ 测试系统的设计与开发模式便捷灵活;
◆ 突破了领域语言定义与应用、异步事件循环调度、动态脚本实时处理、跨平台的IDE架构设计与开发等多项关键技术;
◆ 显著提高了测试系统的开发效率;
◆ ETest支持各种国产CPU 国产操作系统的部署方案,已在龙芯CPU和中标麒麟操作系统下完成适配,同时兼容Windows、linux、Mac等多种操作系统。
图3:ETest系统架构图
基于ETest完成的航空航天、兵器船舶领域的开发应用,试验结果表明,ETest具有1ms级实时响应性能,为用户提供异步操作的测试程序开发模式,显著提高了各类仿真测试系统及检测维修设备的开发效率,对于建立国产自主可控的测试系统研发生态具有重要的战略意义。