彭珲 张翔 张晓娜 姜林
【摘要】 针对嵌入式软件测试对硬件依赖程度高,而所依托的硬件环境往往在软件故障模拟和故障记录方面困难的问题,研究了采用硬件平台全数字仿真模拟技术,并在嵌入式软件自动化仿真测试基本技术架构下,设计了基于硬件仿真的嵌入式软件自动化测试平台。
【关键词】 嵌入式软件 自动化测试 测试平台
引言:
嵌入式软件由于其本身的复杂性,通用的人工手动测试都具有很大的挑战性,要实现自动化测试,则更是需要突破很多关键技术问题。由于嵌入式软件对硬件环境的依赖程度高,在测试时硬件环境在软件故障的模拟和测试数据的记录上,不灵活、不方便,实现困难。采用硬件环境的全数字仿真测试技术,通过在通用平台上模拟嵌入式软件运行开发的软硬件环境、构建嵌入式软件自动化测试平台,已成为嵌入式软件自动化测试的一个重要研究方向。
一、软件自动化测试的技术架构
软件自动化测试的基础技术主要有测试脚本自动执行技术、测试用例自动运行技术、数据驱动被测软件自动运行技术以及关键字驱动被测软件自动运行技术。这四种主要基础技术中,在嵌入式软件测试领域应用最多、效果最明显的是后两种。
1.1软件自动化测试的技术基础
这里对数据驱动被测软件自动运行技术和关键字驱动被测软件自动运行技术这两中自动化测试基础技术进行比较,可以看出这两种技术还是有很多区别的,比较结果见表1。
表1表明,数据驱动被测件自动运行技术框架中,测试脚本对测试的描述级别为整个测试用例,测试脚本中包含有测试用例的业务信息。当被测软件的业务信息发生后,数据驱动被测软件运行技术架构下的所有相关测试脚本都需要重新编写,以与变化后软件的测试需求相呼应。关键字驱动被测软件自动运行技术将被测软件的界面组件统一映射成组件映射表,对界面中的各个组件进行操作时,不是直接操作各个组件,而是操作组件映射表中的逻辑组件名。这种技术特别适应用户界面经常会发生变化软件测试。
1.2嵌入式软件组合自动化测试技术
本文结合嵌入式软件测试的特点,基于对上述两种驱动被测软件自动运行的技术基础,设计一种组合型的嵌入式软件自动化测试技术架构,如图1所示。该架构能较好地适用于通用嵌入式软件系统的自动化测试。
该技术架构主要由接口定义表、底层函数库、脚本驱动模块和数据驱动模块等组成。传送到目标机端的用例脚本由脚本驱动模块执行,测试用例执行过程中一般会涉及到对下一级操作脚本的调用,也就是说要调用下一层级的脚本,照此类推,直到调用的都是操作脚本,能够自动运行即可。当操作脚本运行时需要对被测嵌入式软件的接口进行调用时,可通过查询接口定义表,找到关于该接口属性与参数的描述,进而完成接口调用与执行,实现接口的自动测试;在测试执行脚本需要读取测试数据时,数据驱动模块就从数据文件中读取输入数据和期望的输出值,并通过执行操作脚本,将数据传递给被测软件,执行自动化测试。
二、嵌入式软件自动化测试平台
2.1嵌入式软件自动化测試平台总体设计
根据国内嵌入式软件普遍采用的宿主机+目标机共同构建测试环境的测试技术路线,结合基于数据驱动和关键字驱动的嵌入式软件全数字仿真自动化技术,设计宿目一体的嵌入式软件通用自动化仿真测试平台的总结框架如图2所示。
该平台主要采用嵌入式软件全数字仿真测试技术构建被测嵌入式软件的仿真运行环境,采用“宿目一体”(即,宿主机和目标机在同一个通用计算机环境中运行)的测试基本技术路线,构建基于全数字仿真的目标机运行环境,以便于执行基于数据驱动和基于关键字驱动的嵌入式软件自动化测试。
图2 宿目一体的嵌入式软件自动化仿真测试平台总体架构
从测试应用顶层上看,该平台核心功能的实现主要有两个测试辅助工具软件,即测试管理工具和测试代理软件。测试管理工具运行在宿主机中。测试代理软件运行在全数字仿真测试平台的目标机中。
这两个工具软件实现该平台在一个物理机上构建宿主机/目标机测试环境的核心功能。解决了利用该平台实现宿主机/目标机测试过程中一个核心难点:目标机端的数据如何与宿主机端数据进行交互的问题。
这种问题的解决途径一般为:开发一些嵌入式软件测试工具的虚拟接口功能,将实际物理通道中的数据与目标机的内存数据进行交互。若是在真实环境中,这种方式受制于目标机物理资源的限制。但是在采用全数字仿真目标机的架构中,由于目标机的物理硬件全部是仿真模拟的,受实际物理硬件资源的限制较小,该问题不再是影响测试的关键问题。但是如何提高效率、如何提高自动化程度,是在此平台上需要解决的关键问题。
在同一个物理机上实现宿主机与全数字仿真目标机的信息交换的一个基础部件是数据通信组件。宿主机与全数字仿真的目标机实际上是在同一台物理机上,通过适当的技术手段,例如内存共享、文件共享等手段,实现宿主机与目标机之间的高效通信从原理上讲不再是关键问题。
2.2宿目一体的嵌入式软件自动化仿真测试平台典型运行流程
测试人员需要进行的是开机启动系统、执行编译命令、进行测试设计和分析测试报告;测试管理工具负责自动进行插桩、将目标码传送给目标机、配置目标机、解析用户测试脚本和对测试数据进行记录和对故障库的调取及生成测试报告;测试代理软件实现全数字目标机与宿主机之间信息转换工作,主要完成命令的解析、数据转换、测试用例执行、故障注入执行、测试手机收集等。在这个流程中,目标机实际上就是测试的一个执行环境。
从测试执行的全过程看,宿目一体的嵌入式软件自动化仿真测试平台运行主要分为三个阶段:测试准备阶段、测试执行阶段和测试报告生成阶段。
在测试准备阶段,测试平台需要完成源代码插桩、配置文件的解析与设置。源代码插桩主要为覆盖测试做准备。在该阶段,必须完成源代码的插桩、将源代码编译成目标码,然后再将目标码部署到测试目标机中,为目标码的运行做好测试前的准备。测试配置文件是由测试人员设计好的,提交给测试平台进行解析后,按配置的内容对测试平台的参数和环境进行设置,完成各种测试运行前的各种信息配置工作。
在测试执行阶段,平台将已经通过编译的包含测试脚本的被测嵌入式软件目标码,发动给目标机,部署的在目标机的测试代理软件接收到目标码以后,将其存放在内存特定的区域内,等待执行指令。测试代理软件在控制测试脚本运行的同时,记录测试结果和测试的覆盖信息,暂时将这些信息存放在内存区域,按照测试人员配置的数据记录策略,在固定时间点,由目标机向宿主机发送测试结果和覆盖信息。
测试执行完成以后,进入报告生成阶段,该阶段平台根据目标机和宿主传送的测试结果数据,汇总分析并生成最终的测试报告的状态。
三、结束语
在通用计算机环境中构建宿目一体的嵌入式软件自动化测试平台,对嵌入式软件进行开发调试与测试,是提高嵌入式软件开发效率的通用方法。本文重点研究了嵌入式软件全数字仿真测试策略,设计了嵌入式软件自动化测试框架,并设计了宿目一体的嵌入式软件自动化仿真测试平台。由于受到论文篇幅的限制,该平台架构中的数据通信与测试代理的设计内容,尚未展开。相关内容,笔者另有专门论文进行研究。
参 考 文 献
[1]陈琳,嵌入式软件自动化测试平台的研究与实现,《南京航空航天大学硕士论文》,2010.12
[2]陈琳、张育平、倪红英、崔玉美,嵌入式软件自动化测试平台的研究与实现,《航空电子技术》,2011.03
[3]彭珲、张晓娜、张翔、于鑫,DSP6x架构的嵌入式CPU模拟技术研究与实现,《中国新通信》,2021.07
[4] Len Bass, Paul Clements, Rick Kazman. Software architecture inpractice[M] . MA: Addison-Wesley Professional, 1998