用实例告诉你,如何利用Appium实现移动终端UI自动化测试

叶璐
原创 16116     2016-08-24  

移动互联网时至今日发展非常迅速,Android与iOS系统的手机已经成为时代的宠儿。基于移动终端的产品如雨后春笋般地冒出,要测试一个已成型的应用,从用户所见的角度来做自动化收益还是比较高的。本文旨在利用Appium工具实现移动终端UI自动化测以下重点介绍appium相关知识、以及结合手机项目进行自动化测试的实例。 


「为什么选择Appium?」

Appium是个开源的、跨平台的自动化测试工具,支持iOS、Android应用,还可以直接在PHP、Python、Ruby、C#、Clojure、Java、Objective-C、JavaScript及Perl等语言中编写测试脚本。

∷优势
 ▪ 同时支持Android和iOS自动化测试,同一个手机移动项目在同一套自动化测试体系,维护起来方便;
 ▪ 支持多种脚本语言,不会将测试人员限制在某种特定语言或者框架上;
 ▪ 不需要重新编译应用(APP)或者任何方式修改它就可以进入测试行为;
 ▪ 移动自动测试框架是开源的;

 ▪ Appium社区更活跃、有可能纳入Selenium-WebDriver体系,从而成为事实上的移动应用测试标准。


「Appium原理架构」

一、Android平台原理架构

  ▪  WebDriver script是我们的测试脚本

  ▪  中间的是Appium服务,Appium启动一个服务(4723端口),与Selenium-WebDriver测试框架相类似,Appium支持标准的WebDriver JSONWireProtocol。它提供一套Web服务Appium Server接收WebDriver标准请求,解析请求内容,调用对应框架相应操作

  ▪  Appium server会把请求转发给中间件Bootstrap.jar,它是用java编写的,安装在手机上。Bootstrap.jar接收Appium命令,最终通过调用UiAutomator的命令实现

  ▪  执行结果由Bootstrap返回给Appium Server;

  ▪ Appium还用到了Chromedriver来支持基于WebView的测试。


二、iOS平台原理架构

在iOS端,Appium同样使用WebDriver协议。与Android端测试框架不同的是,Appium iOS封装了苹果公司的Instruments框架,主要用了Instrument里的UiAutomation(Apple的自动化测试框架),然后在设备中注入bootstrap.js进行监听,如下图所示:


▪ WebDriver script 是selenium风格的测试脚本

▪ 中间的是Appium服务,Appium启动一个服务(4723端口),与Selenium-WebDriver测试框架相类似,Appium支持标准的WebDriver JSONWireProtocol。它提供一套Web服务,Appium Server接收WebDriver标准请求,解析请求内容,调用对应框架相应操作;

▪  Appium Server调用instruments.js启动一个sock server,同时分出一个子进程运行instruments.app,将bootstrap.js注入到设备用于和外界进行交互;

 ▪对于WebView的操作,运用了iOS webkit debug proxy来实现。


「环境搭建」

Appium录制的功能目前只支持Mac OS X ,为了最大限度让测试不被代码束缚,建议搭建环境使用Mac OS X操作系统。


一、Mac OS X系统appnium环境安装步骤

1.通过命令行安装Appium

2.通过应用程序安装Appium

可以从地址:https://github.com/appium/appium/releases下载到最新和历史的Appium安装应用程序。


点击听诊器logo确认环境是否安装成功,提示 everything looks good,bye! 表示环境正常

二、真机调试

准备工作:
一个苹果的开发者ID和有效的开发者对应的配置文件及签名文件;
一台iPad或者iPhone(把UDID加入证书里);
获取待测试应用的源码;
一台安装了Xcode和Xcode Command Line Developer Tools的Mac机器。


Appium设置界面必填字段