一种基于RobotFramework的嵌入式软件自动化测试框架

2018-05-17 06:02贠海顺
电子测试 2018年8期
关键词:机端嵌入式软件测试用例

贠海顺

(中国航空工业集团公司西安航空计算技术研究所,陕西西安,710065)

0 引言

通过工具(程序)的方式来代替或辅助手工测试的行为称为自动化测试。自动化测试一般包括测试过程自动化和测试结果分析自动化,自动化测试能够带来的好处包括:

对程序的新版本运行已有的测试(回归测试),能大大降低回归测试的开销;可以运行更多更频繁的测试;可以执行一些手动测试特别费时费力,甚至无法达到测试目的的项目。比如压力测试,大数据或者大量重复数据测试,必须有自动化工具的支持;使测试具有一致性和可重复性;可以增加软件信任度;可以更快地将软件推向市场。

并非所有的软件产品都适用于自动化测试,自动化测试适用的场景为:

(1)软件需求及功能相对稳定

测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,如果脚本维护所花费的成本超过了利用其节省的测试成本,那么在不稳定阶段不适于自动化测试。

(2)项目周期足够长

由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程。

(3)自动化测试脚本可重复使用

如果投入大量资源开发了自动化测试脚本,但是脚本的重复使用率很低,致使其间所耗费的成本大于所创造的经济价值,自动化测试不能真正产生效益。

目前的测试框架及工具主要针对C/S架构或B/S架构的应用,由于嵌入式软件测试目标及运行方式千差万别,没有专门用于嵌入式软件测试的通用测试工具。为了解决嵌入式软件测试过程中自动化测试问题,本文在介绍了已有的测试框架和工具的基础上,提出了一种适合于嵌入式软件的嵌入式软件自动化测试框架,并着重描述了测试框架下的功能划分和测试流程。

1 自动化测试框架与工具

常见测试框架及工具包括:QTP,Rational Robot,Phoenix Framework,selenium,watir,Robot Framework 等。

自动化测试框架与工具主要分为两类:一种是可提供可重用的基础自动化测试模块,如: selenium、watir等,它们主要提供最基础的自动化测试功能,比如打开一个程序,模拟鼠标和键盘来点击或操作被测试对象,最后验证被测对象的属性以判断程序的正确性;另外一种是可以提供自动化测试执行和管理功能的架构模块,如:Phoenix Framework,Robot Framework等,它们本身不提供基础的自动化测试支持,只是用于组织、管理和执行那些独立的自动化测试用例,测试完成后统计测试结果,通常这类框架一般都会集成一个基础自动化测试模块。

2 基于RobotFramework的嵌入式自动化框架

2.1 总体框架

针对嵌入式软件自动测试领域,利用已有的测试框架完成主机端的测试管理工作,如果测试脚本管理,测试报告的生成等;目标机端完成实际测试执行,主机端与目标机端之间的通信与测试运行方案,则需要进行自行开发。

图1 基于Robot Framework的自动化测试软件架构

基于Robot Framework的自动化测试软件架构如图1所示。其中Test Data即测试脚本。Robot Framework启动后,执行Test Data中定义的测试脚本,产生测试日志和测试报告。测试库的函数可以作为测试脚本中的关键字进行使用,由测试库(Test Libraries)与目标机端进行交互。嵌入式自动化测试采用Robot Framework测试框架+测试库,测试库负责与目标机端进行交互,获取目标机端测试用例的运行结果,并返回给测试脚本。

2.2 测试库

测试库主要功能为对目标机端测试用例的运行过程进行控制,具体包括:定义主机端测试用例的映像描述文件,建立描述文件到测试用例映像之间的对应关系;实现对目标机的状态查询、应用映像加载、复位等操作;实现主机端控制软件与目标机软件的底层通信。测试库功能结构如图2所示。

通信层通过低层通信代理完成与目标机端的数据传输。协议控制层主要作用是在通信层的基础上,定义实现主机端和目标机端的命令协议。实现:加载运行命令、重启动命令、目标机状态查询命令,定义测试开始和测试结束的交互信息约定、测试用例结果数据表示格式等规则信息。

(1) 执行测试时,首先读取测试描述文件,根据描述文件,检查测试用例配置的完整性。检查项包括:测试用例在映像文件是否存在,是否完整。

(2) 测试启动后,测试控制层应该检查与目标机端口的连接状态,及是否可以建立连接。

图2 测试库功能结构图

图3 测试库测试用例的执行过程

(3) 在确认目标机端可用以后,读取测试计划中配置的测试用例映像,向目标机发生加载、运行命令。

(4) 目标机端,完成映像加载后,运行进入测试程序的入口,开始运行。运行开始时输出开始测试标识,运行结束后输出测试结束标识。运行过程信息及结果信息,可以通过串口终端、虚拟终端或主机文件系统保存到主机端。

(5) 主机端,等待获取当前测试用例的运行结束标志,在等待过程中,每间隔一段时间,可以查询一下目标机端的状态,防止测试用例运行死机,陷入永久等待的情况。同时主机端在日志文件中记录测试用例运行轨迹信息及主要操作步骤。

当获取到目标机端口发送过来的测试结束状态后,对测试结果进行分析,并向目标机端口发送重启命令,使目标机进行模块重启,完成状态清理。

(6) 当前测试用例完成运行以后,返回当前测试用例的执行结果。

3 总结

本文给出了一种适合于嵌入式软件基于RobotFramework的自动化测试框架,描述了测试框架的功能划分及自动化测试过程。针对项目周期长,需要经过多轮回归测试的复杂嵌入式系统软件,可以有效提升测试效率,降低测试过程中人的工作量,为嵌入式软件功能验证提供有效的测试手段。

参考文献

[1]李夏安,陈志泊.基于STAF的软件自动化测试系统的研究和实现[J].计算机应用,2009.03.

猜你喜欢
机端嵌入式软件测试用例
一起机端断路器非全相合闸案例的分析与思考
某大型水电站2F机组故障录波3U0频繁启动原因分析及处理经过
基于SmartUnit的安全通信系统单元测试用例自动生成
基于人工智能的模块化嵌入式软件开发研究
某电厂#2主变差动保护动作分析及整改
基于混合遗传算法的回归测试用例集最小化研究
全景相机遥控器嵌入式软件V1.0 相关操作分析
基于Eclipse的航天嵌入式软件集成开发环境设计与实现
航天嵌入式软件浮点运算误差分析与控制
基于依赖结构的测试用例优先级技术