康彩彩
摘要:为了提高回归测试效率,节省人力成本,越来越多的中小IT企业开始引入自动化测试,除了web自动化测试、APP自动化测试外,Android自动化测试也是当下的自动化测试热门方向,基于Android平台的测试工具层出不穷,有CTS测试框架,monkey测试框架,appium测试框架等,该文将针对四类测试框架进行研究和分析,选择一款适用于Android嵌入式平台的测试框架,用于导入企业Android平台嵌入式终端项目,解决应用功能和通讯接口复杂导致的测试方案实现难度高,回归测试工作量大等项目的实际问题。
关键词:Android1;动化测试2;框架3
中图分类号:TP31 文献标识码:A 文章编号:1009-3044(2018)22-0284-02
近年来我国嵌入式行业快速发展,嵌入式智能终端在金融IT行业存在着较为广泛的应用,嵌入式软件开发平台众多,其中Android平台应用占比不可小觑,随着金融IT市场的快速发展,客户对Android平台嵌入式终端产品的质量需求和交付周期也在不断提高,促使交付产品的企业对质量控制人员的测试技术、测试覆盖率、测试速率将有更高的要求,导入自动化测试将势不可挡,而选择开源自动化测试框架还是自主开发自动化测试工具,选择什么开源框架将是质量控制人员需要决策的课题。
1 Android自动化测试框架研究
1.1 Android系统结构
android的系统架构采用了分层的架构。如Android系统构架图,共分为四个层,从高层到低层分别是应用层、应用软件框架层、系统运行库层和Linux内核层。应用层提供了一些核心应用程序包,应用软件框架层是Android应用开发的基础,系统运行库包括九个子系统,Android核心系统服务依赖于Linux内核。
1.2 自动化测试的好处
自动化测试可以代替大量的手工机械重复性操作,测试人员可以把更多精力花在更全面的用例设计和新功能测试上;自动化测试可以大幅提升回归测试的效率;自动化测试可以更好地利用无人值守时间,去更频繁地执行测试;自动化测试可以高效地实现某些手工测试无法完成或者代价巨大的测试类型,比如高并发场景的压力测试;自动化测试还可以保证每次测试执行的操作一致性和可重复性,避免人为的遗漏或疏忽。
1.3 Android嵌入式终端的通信方式
Android嵌入式终端作为主机的从设备,与主机的通讯方式有两种:USB Device HID通讯、蓝牙4.0协议+2.1 EDR通信。(EDR:蓝牙EDR是蓝牙增强速率(Enhanced Data Rate)的英文缩写,其特色是大大提高了蓝牙技术的数据传输速率)。
1.4 四类测试框架研究和选择
(1)AndroidCTS测试框架
CTS全称Compatibility Test Suite,CTS的目的主要是保证API的兼容性。使用CTS测试的话,其测试用例需要根据系统的版本下载相应的测试用例,其测试用例是一系列的apk文件和对应的xml配置文件。进入CTS测试管理界面,输入命名list packages 可以获取所有的测试用例。CTS测试提供了多种的运行测试用例的方法。例如按照包名进行自动化测试、按照计划进行自动化测试。CTS测试完后会自动生成测试报告,测试报告是xml格式的文件,内容就是调用各个API,看返回结果是否正确。CTS测试用例的开发需要基于源代码开发,由于测试用例的开发难度较大,放弃选择该测试框架。
(2)Androidmonkey测试框架
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。monkey测试,可以针对全局,也可以针对局部测试,执行简单,效果明显,但是缺少自动化测试用例的规划与其系统性,monkey测试主要针对的是对app应用的性能测试,以及压力测试,不适用于Android嵌入式终端测试。
(3)Androidappium测试框架
appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。appium支持IOS、Android及FirefoxOS平台。在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调用UiAutomator的命令,实现App的自动化测试。appium测试主要针对App测试。appium测试流程示例:PC端开启appium软件,设置API级别;编写测试用例(使用python可以快速编写出相关的测试用例),指定测试的包名以及应用的入口地址;执行测试。appium是移动自动化测试领域最主流的工具之一,还支持多种编程语言(Java/Python/C#/JavaScript…等),如果是APP UI层的自动化测试,appium非常适合,但不适用于Android嵌入式终端测试。
(4)Robot Framework
Robot Framework是一款python编写的功能自动化测试框架。Robot Framework最下面是被测系统。中间是测试库,基于测试库,用例脚本才能和被测系统进行交互,所以需要根据被测系统的形态来选择相应地测试库。最上层则是测试框架,也就是RobotFramework这一层。其作用包括用例脚本管理、测试数据管理、测试运行、测试报告和测试日志等。
由于Robot Framework自动化测试平台是运行在Windows系统的PC上,为了能够跨平台使用脚本测试嵌入式终端,需要在平板上开发RPC服务(RPC采用客户机/服务器模式,请求程序就是一个客户机,而服务提供程序就是一个服务器。),将RPC服務当服务运行在平板上,接收PC机通信数据,并发送给设备并等待设备返回数据,最后响应给上位机。选择该测试框架,可满足Android嵌入式终端测试需求。
2 结束语
通过此课题研究,成功选择Robotframework自动化测试框架,通过该框架的定制开发,可完成定制测试库、RPC服务、测试脚本等开发,可以解决Android嵌入式终端应用功能多,导致的测试复杂度高,回归测试频繁,导致的测试工作量大等问题,基于Robotframework框架开发的测试库,测试套件可最大限度地复用,可以有效降低相关项目的质量控制成本。
参考文献
[1] laura.2016嵌入式行业现状及发展趋势分析[N].21ic,2016-12-26.
[2] 陈昊.Android手机自动化测试系统的设计与实现[D].西安电子科技大学,2014.
[3] 齐涛著.Robotframework自动测试修炼宝典[M].北京:电子工业出版社,2015.
[4] 王敏,尹潇.分层自动化测试框架搭建及应用[J].自动化,2016(09):256.
【通联编辑:朱宝贵】