1、主流测试框架对比:
下面对比了目前主流的几大框架:
(1)Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等,实现对应用程序的压力测试。由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。
(2)UiAutomator也是Android提供的自动化测试框架,基本上支持所有的Android事件操作,可以用UiAutomatorviewer抓取App页面上的控件属性。
缺点:不支持Hybird App、WebApp。
(3)Espresso是Google的开源自动化测试框架;相比UIAutomator,它的特点是规模更小、更简洁,API更加精确,编写测试代码简单,容易快速上手。
缺点:不能跨App。
(4)Robotium是基于Instrumentation的测试框架,目前国内外用的比较多,社区也比较活跃。
缺点:不能跨App。
2、Appium介绍
2.1 Appium特点
(1)开源,比较热门的框架,社区活跃;
(2)跨平台,支持IOS和Android;
(3)支持多语言--python、Java等;
(4)可以用来测试原生应用、移动网页应用和混合应用;
基于appium跨平台、支持多语言等特点,满足工作中安卓和IOS端APP的UI自动化测试需求。
2.2 Appium框架
Appium框架由三部分组成:
(1)Client端:
即我们写的自动化脚本;Appium提供的Appium-client API是基于Webdriver协议,脚本只要实现Webdriver标准协议即可,因此支持python/java等多种语言;
(2)Appium Server:
Appium Server监听接口,接收Client端发送的指令,并转换为移动端能够识别的指令,然后发送给移动设备进行操作,再将移动端返回的操作结果返回给client端。Appium Server可以放在Client端,也可以放在云端。
(3)安卓模拟器/移动端设备:
实际中要测试的移动设备端。
2.3 Appium通信原理
Appium整体架构是C/S模式,在Android设备的工作过程:
(1)Client端脚本请求;
(2)Appium server将监听到的4723端口的指令,解析后通过设备的4724端口发送给Bootstrap.jar;
(2)Bootstrap监听4724端口并接收Appium server的指令;
(3)Bootstrap再通过调用UIautomator的命令来实现APP的自动化测试。UIAutomator是Android SDK自带的APP UI自动化测试Java库。
(4)最后Bootstrap将执行的结果返回给Appium server。