APP下载

基于Robot Framework和Appium的APP自动化测试框架

2017-12-29李全东华大学信息科学与技术学院

数码世界 2017年5期
关键词:用例测试用例脚本

李全 东华大学信息科学与技术学院

基于Robot Framework和Appium的APP自动化测试框架

李全 东华大学信息科学与技术学院

基于Robot Framework和Appium设计出一种app自动化测试框架,该框架实现了对多个安卓手机设备进行并发功能测试。Robot Framework框架负责编写测试用例,编写shell脚本为每个手机启动Appium服务,Appium负责启动服务连接手机,发送用例编写的指令到手机同时接收执行结果。同时,以某app为例,验证本框架的适用性。

robot Framework Appium APP自动化测试

随着移动互联的迅速发展,手机越来越离不开人们的生活,日益丰富的手机APP帮助人们实现衣食住行的各个方面。各个公司都在大力发展无线端业务,APP也是每个公司必备的产品。安卓手机是人们常用的,市场占有率最高,品牌最丰富的手机。所以公司开发一款APP势必要对APP进行兼容性测试,传统的手工测试在测试多款手机时就非常的枯燥和浪费人力,这也是目前阶段必须解决的问题。

根据当前的测试现状,本文以某app为例,设计出一种基于Robot Framework和Appium的APP自动化测试框架,并设计实现对手机设备进行并发测试,减少人力成本和重复性工作。

1 Appium原理介绍

Appium是开源的,支持Android和IOS,适用于Native App、Hybird App、Web App等APP类型,不需要重新编译APP,扩展了WebDriver,封装了Android和IOS自动化方法的框架。它支持很多语言来编写测试脚本,Java、Javascript、PHP、Python、C#、Ruby等主流语言。

它是Client/Server架构,运行的时候Server端会监听Client端发过来的命令,翻译这些命令发送给移动设备或模拟器,然后移动设备或模拟器做出响应的反应。正是因为这种架构,所以Client可以使用Appium client libraries多种语言的测试脚本,而且Server端完全可以部署在服务器上,甚至云服务器。每个Client连接到Server以后都会有一个Session ID,而且Client发送命令到Server端都需要这个Session ID,因为这个seesion id代表了你所打开的浏览器或者是移动设备的模拟器。所以你甚至可以打开N个Session,同时测试不同的设备或模拟器。

2 Appium Grid并发设计与实现

Appium是扩展Webdriver,所以也可以使用Selenium Grid来实现并发测试。

每个设备启动相应的Appium服务,所以在服务器识别到设备时会给该启动相应的Appium服务,注册到hub上,这样在执行用例时,hub会随机分配给所有空闲设备测试用例,并会自动回收返回结果,验证测试用例步骤是否通过。具体实现步骤如下:

①下载selenium-server-standalone-xxx.jar的jar包,然后命令行执行相应的Java命令启动hub server,如:java -jar selenium-server-standalone-3.0.1.jar -port 4444 -role hu–timeout 120。

②每个设备编写相应的JSON格式的配置文件,其中deviceName可以通过adb devices命令查看,每个设备的port不能相同。

③执行Appium的命令启动设备client server,如appium -p 4725 -U Device1UDID --nodeconfig path oXXX1.json,其中-p后面为你启动appium服务的端口号 -U后面为你设备的UDID, --nodeconfig 后面为第三步编辑的json文件的路径。这样client就注册到hub上。

④浏览器输入http://localhost:4444/grid/console就能看到你连接了多少个设备。这样就完成了为设备启动selenium Grid,注册设备client server到hub上,编写用例时remote_url只需要填hub的地址即可。

为了不每次手动输入这些命令,本设计采用编写shell脚本的形式启动以上所有的服务。

3 APP自动化并发测试设计与实现

本文基于Robot Framework对APP进行自动化并发测试的实现。

3.1 自动化脚本的编写

通过Robot Framework Ride引入AppiumLibrary关键字库即可编写测试脚本,该库继承了Appium所有底层API编写的关键字,在脚本执行时可以被Appium sever所识别并执行相应指令。在打开app关键字open application中的remote_url参数中需填写第二章所述的hub地址。

Robot Framework自带的pybot命令运行测试代码不能起到并行执行的结果,所以要引入pabot。pabot为Robot Framwork扩展执行方式,实现方式为安装pabot,运行pabot命令,如:pabot--processes 10 --outputdir path/to/results path/ to/parallelSuits,其中--processes 10,即起10个线程运行,所以processes的值<=我们的设备数,--outputdir path/to/results,指定我们运行结果存放的路径,在该路径下回生成相应的测试结果,path/to/parallelSuits,指定运行suites的路径,对于兼容性测试,有几个设备,复制几个测试脚本文件即可。

4 结语

本文基于Robot Framework和Appium提出了一种App自动化测试框架,并以某app为例,进行了框架实现和适用性验证。

框架以Robot Framework为脚本编写和执行层,引入AppiumLibrary进行脚本开发,同时引入Appium和selenium Grid实现了对手机设备的统一调度,引入Robot Framework扩展执行方式pabot作为并发执行命令,完成了对多手机设备的并发执行,减少了重复性工作和人力成本的浪费,节约了软件开发和测试周期。

在未来的研究中,可以将并发测试植入到软件开发全周期中,在app打包完成后自动触发相应的测试脚本,执行测试,测试人员只要关注新的功能点的测试即可。

猜你喜欢

用例测试用例脚本
酒驾
基于相似性的CITCP强化学习奖励策略①
UML用例模型中依赖关系的比较与分析
测试用例自动生成技术综述
自动推送与网站匹配的脚本
资费拨测系统的研究与应用
用例规约在课程成绩管理系统需求分析中的应用研究
测试工时受限的测试策略研究
愚公移山