移动自动化测试Appium之架构

Appium是一个优秀的开源移动自动化测试框架,其封装了android UiAtomatorios UIAutomation原生技术,提供统一的web driver接口访问两大移动平台的UI元素,还提供各种语言的driver client和测试工具,方便测试用例的开发和调试。

Appium自2013年发布以来,几乎每隔1-2个月就有一个新版本发布,目前最新的稳定版本为1.4.13(见此链接)。关于其名字由来,还和selinium有关,selinium是一个web平台上自动化测试框架,创始人Dan Cuellar和Jason Huggins取名appium,意思是希望能够像selinium一样,提供面向移动app的自动化测试框架标准,实际上Appium也已经成为当前移动平台自动化的事实标准。

Appium的架构图

 

Appium架构图

 

图中,Appium Server提供了符合web driver规范的自动化接口,Client通过Http协议和server进行通讯和进行各种自动化操作,包括建立自动化session,获取元素,点击、滑动和截屏等等,Client有各种语言的实现版本,比如Java\Python\Ruby\JavaScript\Object C\PHP\C#(.NET),RobotFramework也有对其的支持。

Appium作为一个移动自动化测试框架,不仅仅简单地提供driver,还为UI自动化提供各种工具,比如带有GUI界面的Appium Server,用于调试定位UI元素的Appium Inspector,以及丰富的Appium Client类库。

1)Appium Server GUI

为了方便让用户快速配置Appium server driver所需要的信息,Appium提供了具有UI界面的配置运行工具,如图所示,

appium_gui

在这里,可以方便的配置appium server driver所需要的各种信息,例如app 安装包,android/ios的运行版本,服务器端口等等。

2) Appium Inspector

在通过Appium  GUI启动Appium Server之后,可以点击界面上的放大镜按钮来启动Appium inspector。这个工具可以很方便查看和定位App上的UI元素,还具有测试用例录制的功能。

appium_inspector

3) Appium Client类库

Appium Client封装了和driver交互的各种操作,不仅如此,它还提供了PageFactory类,用于对page object  pattern的支持,我们可以通过注解的方式同时定义同一App UI元素在android和iOS上的查询locator,

@iOSFindBy(xpath = "//xpath/")
@AndroidFindBy(id = "start_btn")
private WebElement startButton;

测试用例在运行的时候,appium client会自动根据driver类型自动选择和设备对应的locator来寻找UI元素,这样就可以方便的分离出单独的UI层,然后可以写出同时跑在android和iOS设备的同一测试用例。

 

参考链接

1. appium官网:http://appium.io/introduction.html