移动终端应用层软件自动化测试系统设计与实现
2016-01-14张恩海王铎于晋瑄
张恩海+王铎+于晋瑄
摘要:随着移动互联行业和物联网的兴起,应用层软件比之以往无论在功能还是结构的复杂程度上都有很大的提高,随之而来的质量问题也大大增多。故对应用层软件的高效测试工作变得尤为重要。本文设计与实现了一种高效的自动化软件测试系统。本系统利用云管理平台的高性能计算能力实现对整个测试系统的监控管理。在测试脚本编写方面,采用流行的Python和JavaScript脚本语言,并建立了灵活安全的脚本管理系统,适用性广泛。测试应用模块,通过图像匹配,成功兼容不同移动终端。对于测试结果,采用实时上报、分类存储的模式。测试结果显示,该系统工作良好,能够满足高效软件测试的要求。
关键词:智能移动终端应用层软件自动化测试云管理平台
中图分类号:TP31 文献标识码:A 文章编号:1672-3791(2015)01(c)-0000-00
引言
随着4G网络的快速发展,智能终端的迅速普及,数十万的App应用、不计其数的移动Web和HTML5的蓬勃兴起,人们正在享受越来越便捷的移动互联生活。随着应用的普及,用户对App、移动Web、HTML应用的体验要求也越来越高,各个服务提供商在比拼客户服务质量时候,愈发关注用户使用的真实体验。Android平台以其良好的开放性,各类基于Android的智能移动终端在快速发布。故对于Android App的开发也日趋热门。然而各类Android App因为智能终端不能正常安装、意外错误、强制退出等严重影响用户体验的缺陷越来越多[1],开发者对于全球移动设备的质量和性能掌握甚少,App与移动设备的兼容性问题常常导致用户投诉。App测试与服务质量保障矛盾十分突出,最显著的情况是,APP无法与移动终端有效适配,这给开发者带去大量的损失。
1 系统概述
为解决上述问题,故建设基于云平台的自动化拨测系统,实现对不同应用的功能与性能的测试,实现根据脚本进行的定制的功能性测试,使其具有良好的可扩展性和可重复性[2]。所谓软件自动化测试就是执行由某种程序设计语言编制的自动测试程序控制被测软件的行为, 模拟手工测试步骤,完成全自动或半自动测试[3]。系统由两部分组成,分别是云管理平台和移动应用软件测试客户端。云管理平台是整个系统的核心,完成包括与中央平台通信,下载测试脚本及测试任务,上报测试结果,以及管理和驱动整个测试过程的任务[4];客户端部分即是真正实现测试行为的部分,完成包括测试脚本解析,测试任务执行,测试用例实现,测试结果上报,测试日志记录的任务,并具有一定的差错控制能力,保障整个测试过程的完整与精确。
系统功能架构如下图1所示。
图1 自动化测试系统功能架构
2 系统设计方案
本系统的设计重点就着眼于以比较小的维护代价有效地帮助用户降低测试成本,同时提高软件产品的质量监控,并降低测试工程师的工作强度和复杂度。
本自动化测试系统将分为三个部分,测试管理服务器(Test Management & Repository),测试PC客户端(IDE & Test Runner)和智能移动设备测试代理程序(Test Agent)。系统覆盖了设计开发测试脚本,测试资源(测试PC,测试设备,测试脚本和测试日志)管理,测试任务运行,测试任务管理,测试状态监控,测试日志管理和测试报告上报的全部测试流程。系统架构如下图2所示。
图2 系统架构图
2.1测试管理服务器
负责管理系统中所有的测试资源,包括测试PC,测试设备,测试脚本和测试日志;管理测试任务;监控测试状态;发送测试报告;保存测试日志。
用户登陆到服务器,选择测试脚本,配置测试PC和测试设备后,创建测试集合,启动自动化测试。测试进行过程中,用户可以登陆到服务器监控当前的测试状态。同时测试管理服务器将会增加测试脚本版本控制功能,帮助用户高效的管理开发设计的测试脚本。测试集合由1个或多个测试工程组合而成,测试工程之间可以由一定逻辑关系组合而成,方便用户自定义所需的测试集合内容。
2.2 测试PC客户端
由两部分组成,IDE和Test Runner。支持Python和JavaScript两种流行脚本引擎,监控当前连接的测试设备运行状态。其中IDE为用户提供开发设计测试脚本的环境,并同步显示测试设备的屏幕内容,提高用户开发效率。Test Runner接受并运行测试管理服务器下达的测试任务,同步更新测试状态和测试日志到服务器端。
2.3 智能移动设备测试代理程序
安装在测试设备上,负责接收测试指令,解析并执行测试指令,返回测试结果。系统支持目前市场上流行的智能移动设备,包括Android、Symbian、BlackBerry和WinCE系统的设备,可使用USB或WIFI的通讯方式和测试PC客户端进行数据通讯。
3 系统实现
系统根据测试需求的逻辑编写测试脚本[5],可支持Python和JavaScript两种流行脚本引擎。系统通过测试脚本驱动测试接口,测试设备根据测试接口执行测试动作并回馈测试结果,并根据回馈的测试接口的执行结果判定测试结果。同时系统采取分布式结构来部署整体测试系统,各个模块的功能相对独立,以通信协议方式进行联动工作,形成高效自动化测试系统。本系统是开放式系统,即任何符合通信协议的被测试终端都可以被此自动化测试系统所支持。
3.1 自动化测试脚本编写工作流程
测试脚本编写流程,具体分为6个步骤,每个步骤的工作描述如下。
1)用户使用IDE进行测试脚本编写调试工作。用户根据测试需求和当前的测试设备编写调试测试脚本和录制测试验证点,按测试需求填写测试数据到测试用例描述表中。
2)执行测试脚本。IDE根据编写好的测试脚本执行测试脚本。
3)IDE发送测试指令到测试设备。IDE按通信协议格式发送测试指令到测试设备。
4)测试设备解析并执行测试指令。测试设备按通信协议规则解析出测试指令并执行测试指令。
5)测试设备回馈测试指令执行结果。测试设备按通信协议规则打包发送测试指令的执行结果数据。
6)IDE传输完成编写调试的测试脚本工程到测试管理服务器。IDE按通信协议打包压将完成编写调试的测试脚本工程上传到测试管理服务器。
3.2 自动化测试工作流程
自动化测试工作流程,具体分为8个步骤,每个步骤的工作描述如下。
1) 用户通过测试管理服务器创建测试规则、测试任务、启动测试。用户根据已有或新建的测试规则创建应用于某一测试设备的测试任务并填写发送测试报告的邮箱地址等信息后开始这一测试任务。
2) 测试管理服务器发送测试任务数据包到测试执行单元。测试管理服务器根据用户创建的测试任务将需要测试的测试数据压缩包发送给测试执行单元。
3) 测试执行单元解析测试任务数据,开始测试。测试执行单元解析出测试任务中包含的测试脚本并执行测试脚本。
4) 测试执行单元发送测试指令到测试设备。测试执行单元按通信协议格式发送测试指令到测试设备。
5) 测试设备解析并执行测试指令。测试设备按通信协议规则解析出测试指令并执行测试指令。
6) 测试设备回馈测试指令执行结果。测试设备按通信协议规则打包发送测试指令的执行结果数据。
7) 测试执行单元同步传输测试日志到测试管理服务器。测试执行单元按通信协议规则打包发送测试日志到测试管理服务器。
8) 测试管理服务器展示测试日志和发送测试报告给用户。测试管理服务器展示测试日志信息,根据测试日志信息汇总为测试报告发送给用户指定邮箱。
4 系统运行结果分析
选取一些待测应用软件进行测试脚本的编写,并在实体设备上进行测试。分析测试过程和测试结果可见,本自动化测试系统可以大大提高测试效率,降低测试成本,并将系统维护成本最小化。原本手动测试需要600分钟的工作,本系统只需要300分钟,且完全自动化测试,不需要人工操作,大大节省的劳工成本。
相比于目前流行测试系统的TestQuest[6],本系统可降低自动化测试脚本的维护成本,提高自动化测试脚本的重用度。下举例说明。当测试点的图片发生改变时,TestQuest系统需重新录制所有测试用例所需的测试点图片;但是本系统只需要修改相应的发生改变的测试点图片匹配率即可满足测试用例的新的要求,大大提高了自动化测试脚本的重用度。
5 总结与展望
本文针对应用层软件无法与移动终端有效适配的问题,设计与实现了移动终端应用层软件的自动化测试系统,在保证移动终端软件质量和友好的用户体验的同时,大大降低了软件工程师工作的强度和复杂度,并且起到了帮助企业降低测试成本的作用。未来可对此系统进行进一步的优化,根据用户需求的改变来适配,并推广到更广阔的市场中去。同时也可以考虑对测试步骤进行进一步的精简,以使测试系统更加灵活简洁。
本文所实现的自动化测试系统,支持所有目前市场上流行的智能移动设备,并且覆盖智能移动设备的软件功能测试、软件性能测试、设备基本功能测试等多种测试种类,应用广泛。随着移动互联网的飞速发展,智能终端应用层软件在功能和结构上的复杂程度都大大提高了,应用本文所提出的测试系统对其进行自动化测试,可大大提高软件测试效率,故本文所提出的软件自动化测试系统有较大的实际意义与设计价值。
参考文献:
[1] 常远. 手机软件自动化测试的研究与实现[D]. 北京邮电大学, 2010.
[2] FEWSTER Mark,GRAHAM Dorothy.软件测试自动化技术[M].北京:电子工业出版社,2000.
[3]蔡建平,李金凤.软件测试大学教程[M].北京:清华大学出版杜,2009:240~269.
[4] 张新玲, 赵霞, 张东. 云管理平台自动化测试框架研究[J]. 软件导刊, 2013, 12(10): 15-17.
[5] 陈计喜, 姜丽红. 自动化功能测试的方法与实现[J]. 计算机工程, 2005, 30(B12): 168-169.
[6]陆澄澹, 周华, 闻宏强. 浅析基于TestQuest的移动终端应用软件测试方法[J]. 电子世界, 2014 (16): 114-114.