辛艳双
(中国移动(深圳)有限公司,广东 深圳 518048)
基于手机远程控制的自动化测试技术
辛艳双
(中国移动(深圳)有限公司,广东 深圳 518048)
安卓手机设备及手机应用的测试工作非常普遍,且非常重要。本文首先简要分析安卓手机测试现状,针对目前存在的各种问题,结合所在公司的实际需求,提出基于手机远程控制的自动化测试系统,接着介绍了该系统的的系统特点、系统架构、技术及自动化脚本执行流程。实践表明该系统可提高测试效率及测试结果准确性,降低对测试人员的技术要求,克服普通手机自动化测试工具的缺陷。
安卓;远程手机控制;手机自动化测试;手机自动化脚本
近年来,随着移动互联网的发展,各种智能手机及APP应运而生,手机产品和用户交互非常紧密,手机软件质量显得尤其重要。要使最终用户对手机软件感到满意,必须在手机软件发布之前进行充分测试。目前国内的手机测试技术大多属于低端级别的手工操作,缺少自动测试工具进行功能和性能测试。无论从实现技术上,流程的规范性与合理性,还是从对测试概念的理解上都存在相当的不足。虽然市面上存在一些手机自动化测试工具,但这些工具的使用过程中,存在以下缺陷:
(1)测试手机需租用,多次测试时,需要一定的费用投入;
(2)部分机型始终被占用,影响紧急测试任务的开展;
(3)自动化测试支撑力度不够,仍需较多手工操作;
(4)测试粒度不够,无法实现定制化的测试需求;
(5)测试用例或测试数据上传下载过程,存在安全隐患。
本文首先介绍基于手机远程控制的自动化测试系统的特点,其次介绍系统架构,然后分析系统技术及手机自动化脚本实现流程,最后对全文进行总结,帮助读者搭建自己的手机自动化测试系统。
基于手机远程控制的自动化测试系统不仅具备大部分手机自动化测试工具的功能,即模拟真机操作,遍历测试、兼容性测试、性能测试、手机信息反馈等,还具有以下特点:
(1)手机、服务器资源充足情况下,部署简单;
(2)手机远程监控及管理,方便维护;
(3)自动化测试脚本编写简单,无任何编程技术要求;
(4)提供各种丰富详实的测试日志数据,满足实际工作中不同的查询、统计、分析需要。
手机自动化测试系统,通过手机远程控制,用户可以直接使用pc的浏览器对远程Android手机的系统进行各种模拟操作,或编写脚本进行自动化测试。
图1 手机自动化测试系统架构
整个手机控制系统由用户端、服务端、和手机端三个部分构成。
三个端之间主要通过websocket和http进行数据通讯。
(1)用户端负责提供用户操作的界面,显示手机的界面信息。
(2)服务端用于管理电脑与手机设备的连接,为用户端和手机端提供数据通讯的桥梁。
(3)手机端提供对手机系统进行控制和对手机应用进行控制的功能。
图2 手机自动化测试系统技术架构
4.1 用户端
4.1.1 设备列表模块
(1)实时获取手机在线状态、操作系统信息
(2)实时获取手机占用情况
图3 设备列表截图
4.1.2 设备控制模块
(1)实时获取手机设备当前的屏幕,并显示在用户端
(2)发送控制协议对手机进行操作
(3)上传安装APK包
图4 设备控制流程图
4.1.3 应用控制模块
图5 应用控制流程图
4.1.4 UI组件
(1)基于html5
(2)采用javascript+css开发
(3)通过浏览器即可使用
(4)采用Metro UI风格,简洁易用
(5)提供tab、菜单、表格、常用表单、按钮、对话框等常用UI组件
4.1.5 通讯模块
(1)用户端通过websocket与服务端通讯
(2)图片以二进制格式传输
(3)设备列表、手机屏幕显示、设备状态更新功能,通讯协议为json格式
(4)设备列表服务
(5)从服务器端获取手机设备列表
(6)自动更新手机列表的状态
4.1.6 资源管理
(1)手机设备信息管理:手机基本信息、设备借用信息管理
(2)远程手机管理:手机远程控制用户对手机使用权限的管理
(3)SIM卡信息管理:SIM卡基本信息及借用信息管理
4.2 服务端
4.2.1 设备列表服务
(1)为用户端提供所有设备的数据
(2)聚合设备服务器的设备信息
(3)定位设备
(4)将用户端/接口端的请求转发到指定的设备服务器
4.2.2 设备服务
(1)管理手机设备与PC的USB连接
(2)建立虚拟设备,负责与手机端进行数据通讯
(3)将当前虚拟设备信息聚合设备列表服务
(4)实时将虚拟设备的状态变化同步到设备列表服务
图6 设备服务过程图
4.3 手机端
4.3.1 截图服务
(1)实时读取手机设备的framebuffer数据
(2)使用libjpeg-turbo对framebuffer进行处理
4.3.2 手机控制服务
(1)使用monkey服务模拟对手机的各种操作(触摸、划屏、输入等等)
(2)通过简单无界面的输入法实现中文输入
4.3.3 服务接口
(1)使用HTTP协议
(2)接口使用JSON格式交换数据
(3)提供短信收发、获取手机已安装应用等接口
4.3.4 HTTP代理
(1)通过http代理功能分享手机网络
(2)支持cmwap、cmnet及其网络
4.3.5 通讯/协议处理模块
(1)通讯协议采用json格式
(2)协议采用命令模式和工厂模式自动化进行匹配
4.3.6 WEB服务器
(1)采用jetty设计web服务器
(2)web服务器对外提供http及其websocket通讯服务
系统用户在pc用户端编写脚本,面向用户脚本语言,测试人员无需任务编程语言基础。
图7 添加手机脚本截图
图8 添加自动化操作方法
图9 审查元素
审查应用的元素找到选择器ID的过程如下:
(1)通过robotium-solo取得当前应用元素以json格式返回到浏览器。
(2)当用户在点击浏览器上的手机界面时,js会在画布上(<canvas>)取得对应android元素应用的坐标点,从而匹配返回的json数据中的坐标,这样就得到了以class+id组成的应用(apk)中元素的唯一标识(注:canvas上的手机图片是通过websocket生成)。
(3)通过http,post请求传到Backend服务器,Backend服务提供了手机自动化的脚本制作、脚本任务管理、手机相关资源数据管理、手机远程控制界面等功能。
(4)Backend服务器将数据保存到oracle数据库。
(5)Job主动查询oracle数据库中是否有需要执行的手机脚本,如果有,Job通过http协议的方式对linux父服务器(手机设备主服务器)进行调用。
(6)linux父服务器接收到调用时,通过手机IMEI来确定要执行任务主机(手机设备服务器)。
(7)任务主机利用AndroidScreencast框架,通过usb(adb)数据线,对手机行进相关调用操作。
(8)手机通过调用robotium-solo框架进行相应测试。
(9)linux服务器和手机设备上,装有Ard_new服务程序,用于实现具体的手机远程控制和自动化的相关逻辑。
图10 手机自动化测试系统部署图
本文首先对手机设备及手机应用测试工作的现状进行了简要分析,针对目前存在的各种问题,提出基于手机远程控制的自动化测试系统。文中介绍了该系统的系统特点、系统架构、技术及自动化脚本执行流程。该系统部署简单,使用方便,希望引起有相关需求人员的注意,一起探讨研究安卓手机自动化测试技术。
[1]张舜尧.手机自动化测试系统设计浅析[J].电脑知识与技术:学术交流,2007,4(20):412-413.
[2]杨怡君,黄大庆.一种基于Android平台的手机自动化测试工具的设计与实现[J].计算机应用,2012,32(2):554-556.
[3]侯菊敏.基于Android的关键字驱动自动化测试框架研究[D].中山大学,2012.
[4]蔡增柱.基于Android移动平台测试相关技术研究[D].华南理工大学,2012.
[5]董川.基于Android系统的移动终端稳定性测试方法的研究与实践[D].北京邮电大学,2012.
[6]金凤,曹恺,张瑞娟,等.Android智能手机自动化测试综述[J].中国信息化,2013,(12).
[7]李元元,贾璐.基于Android平台的手机终端公交查询系统设计[J].计算机与现代化,2013(6):159-161.
[8]黄琦.Android智能手机应用软件自动化测试工具的设计和开发[D].安徽大学,2012.
HandsetAutomatic Testing System Based on Phone Remote Control
Xin Yanshuang
(China Mobile(ShenZhen)Limited,Shenzhen 518048,Guangdong)
Android mobile devices and mobile applications testing are very common and very important.This paper begins with a brief analysis of android mobile phone testing situation,then proposes an automatic testing system based on phone remote control is to solve the current problems.Then it introduces the features,architecture,technology and automated script execution flow of the system.Practice shows that the system can improve test efficiency and accuracy of test results,reduce the technical requirements for testers,overcome the shortcomings of the ordinary phone automation testing tools.
Android;phone remote control;handset automatic test;automated script
TP311.53
A
1008-6609(2016)08-0070-04
辛艳双,女,河北邯郸人,硕士,研究方向:自动化测试、信息系统建设与分析、Andriod手机应用测试研究。