《测试技术学报》
1 嵌入式软件自动化测试模型
1.1 测试终端
测试终端模拟了软件需要运行的基本嵌入式硬件环境,将其作为整个自动化。
图1 嵌入式软件自动化测试模型框架
测试执行框架的环境基础在如图1所示的QEMU半虚拟仿真环境基础上,可以将测试终端细化为两部分,一是被测软件部分,二是测试控制部分,两者之间以共享内存区域作为数据交互,从而达到测试的实时性以及稳定性。
1.2 测试控制中心
测试控制中心是EATM框架的核心控制部分,主要对测试用例库进行管理;对测试用例进行筛选以及分布式任务调度;对测试结果进行检验并统计等。测试控制中心采用基于JavaSwing框架技术开发,具有较强的可移植性。
测试终端和测试控制中心之间采用网络通信方式,主要采用可靠的TCP/Socket通信形式,建立端到端的连接,用于测试数据的发送以及测试结果报告的反馈。该框架结构的优点是能充分发挥分布式架构的处理能力,具体表现在以下两点:
(1)测试终端轻负载在测试控制中心对测试用例进行筛选,对高性能的测试终端分配重要度高、较复杂的测试用例,并且采用多测试终端来减少单个测试终端的测试负荷,极大程度地提高测试的效率[1]。
(2)测试用例协同处理。对高负载的测试用例可以拆分成多个子任务,并采用一定的调度规则调度协同多个测试终端处理,可以减少单个测试终端的负荷,在很大程度上增加了并行处理测试数据的能力。
2 嵌入式软件自动化测试模型设计
2.1 用例分发引擎
用例分发引擎可以抽象的概括为“分发-收集”的过程,即将大量的测试数据按照一定调度原则分解成多个子任务,每个子任务分配给各个终端节点,最后收集每个测试终端执行后的测试结果。对于每个子任务,可以由一个或者多个终端节点分工完成,即采用“功能分布”原则。对于给定任务的调度分配,描述了分布式测试环境中的行为信息,提供了描述分布式测试中的测试节点运行调度功能,比如不同的测试节点启动的先后顺序以及它们之间的同步关系,使框架具有扩展能力。
(1)分发数据格式。可扩展标记语言(XML)作为当前处理结构化信息的主流工具,具有高扩展性、强移植性以及强可控性等突出优点,本文基于XML设计了测试用例的结构化格式。一个测试用例文件由测试包、测试用例和测试结果构成,以下给出这三者的概念:测试包:所有测试用例的集合,根据产品的逻辑模块或者测试模式(功能、性能或压力)构成不同的测试用例集;测试用例:完成一个明确的测试需求所需要的执行逻辑以及须给出的过程参数;测试结果:对一个测试用例最后的测试结果[2]。
(2)分发调度原则。在本文中的系统实时分发调度采用静态的、不可抢占的分布式调度原则。在EATM框架中,每个测试终端节点都是异构的,同一时刻每个节点的性能是不同的。因此根据各节点的性能情况给各个测试终端分配不同数量以及不同“优先级”的任务,使得分布式中各节点负载基本均衡的同时达到效率最优。
2.2 虚拟仿真引擎
本文中采用QEMU仿真软件对运行平台为ARM架构嵌入式软件进行仿真,例如UAV无人机机载软件,QEMU仿真软件是目前较为先进且可开发源代码的跨平台仿真软件,具有模拟适配度广、速度快及跨平台等特性,可以较优秀的仿真出基于ARM架构的虚拟化环境。对于各个模块的仿真:采用TCG动态二进制翻译技进行指令的解析翻译工作实现嵌入式软件的CPU虚拟化;通过影子内存对嵌入式软件内存虚拟化;通过设备模拟对嵌入式软件的I/O虚拟化。
经过测试,所有的测试用例执行结果99.51%的测试数据测试成功,说明绝大部分测试用例成功执行且测试结果与测试期望相一致;失败测试用例只占0.49%,具体的失败情况可以再进一步地分析[3]。对39条测试失败的情况进行详细地分析,所有失败的用例均为测试执行结果与期望值不相匹配所致,造成该错误原因是给出测试用例不能正确有效地模拟真实环境中数据所致,与EATM框架执行无关[4]。
本文提出的自动化测试框架进行验证。实验结果表明,本框架执行方式正确,验证方法有效。该结果有助于对嵌入式软件系统进行自动化测试和分析。今后本人将对进一步提高系统的执行能力、优化测试用例调度、完善测试结果测评等方面开展研究。