Android自动化测试工具调研( 二 )


  • Robotium
也是基于Instrumentation的测试框架 , 目前国内外用的比较多,资料比较多,社区也比较活跃 。缺点是对测试人员来说要有一定的Java基础 , 了解Android基本组件,不能跨App 。
  • Selendroid基于Instrumentation的测试框架,可以测试Native App、Hybird App、Web App,但是网上资料较少,社区活跃度也不大,可以看做是一个Web版的Robotium,使用入门课参考selendroid 入门 · TesterHome
示例脚本:
AndroidDriver driver = new AndroidDriver(new URL("http://localhost:8080/wd/hub"), getDefaultCapabilities());driver.findElement(By.id("startUserRegistration")).click();WebDriverWait wait = new WebDriverWait(driver, 5);WebElement inputUsername = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("inputUsername")));inputUsername.sendKeys(user.getUsername());Assert.assertEquals(nameInput.getText(), "Mr. Burns");nameInput.clear();nameInput.sendKeys(user.getName());takeScreenShot("User data entered.");driver.findElement(By.id("btnRegisterUser")).click();【Android自动化测试工具调研】而Appium也是从Selenium延伸出来的,是目前最主流的移动测试自动化框架,不仅支持 Android 应用 , 而且适用于 iOS、混合和 Web 应用程序 。
上面说到的3个框架,测试流程原理为:
电脑在指定端口开启一个Web服务,并在手机安装一个对应的客户端APP程序,两者通过Socket协议链接
之后编写脚本里,可以使用Web服务的地址,之后脚本代码传输给Web服务,由Web服务再下发手机 , 有客户端APP程序执行对应的指令操作(这个APP程序实际上就是没有界面的,可以理解为一个后台进程)
Appium的桌面APP也是提供了一种测试录制功能 , 可以将测试的流程记录,并转为对应的脚本代码,如点击了什么控件 , 输入了什么内容等步骤,可以参考Appium的使用方法
它底层完全使用了 Selenium 和 WebDriver 的 API,所以如果你之前有用过 selenium, 几乎不需要额外的学习成本就可以使用 appium 。
Appium 通过 uiautomator(API 级别 16 或更高)和 Seledroid(API 级别低于 16)支持 Android,但是你不需要具体懂这两个框架的具体用法,appium 都已经帮你封装成了统一的使用规则 。
Appium 的优势之一是几乎可以使用任何编程语言(例如 Java、Objective-C、JavaScript、PHP、Ruby、Python 或 C# 等)编写 Appium 脚本 。不需要重新编译或改变应用程序来匹配Appium,Appium有一个非常大而活跃的社区 。
Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试套件,由Airtest框架、poco框架、airtestIDE 组成 。是一个跨平台的UI自动化测试框架,适用于游戏和App 。
Airtest的框架是网易团队自己开发的一个图像识别框架 , 这个框架的祖宗就是一种新颖的图形脚本语言Sikuli 。
Sikuli这个框架的原理是这样的:
计算机用户不需要一行行的去写代码,而是用屏幕截屏的方式 , 用截出来的图形摆列组合成神器的程序,这是Airtest的一部分 。
另外,Airtest也基于poco这个UI控件搜索框架,这个框架也是网易自家的跨平台U测试框架,原理类似于appium:
通过控件的名称 , id之类的来定位目标控件,然后调用函数方法,例如click(),swip()之类的方法来对目标控件进行点击或者是操作 。
虽然Airtest刚开始是为了游戏测试,现在在app测试中也有很大的应用范围 。只是进行录制、执行脚本的AirtestIDE没有开源 , 不方便进行深度定制 。
AirtestIDE工具,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写 Airtest 和 Poco 代码 。
AirtestIDE依赖ADB与安卓设备进行通信,编写的对应的脚本文件代码为Pythod
使用可参考Airtest-app自动化测试必备神器 - 知乎
Solopi主要就是测试人员自行安装对应的测试工具apk和目标测试apk,进行测试 , 之后可以测试工具可以将手机上的操作进行录制保存为脚本,并可以分享到其他设备上执行,从而实现一套自动化测试 。
Solopi开源地址
是蚂蚁金服开源的一款移动端APP测试工具,提供脚本录制、编辑、回放,结果展示以及一机多控(即通过设备间的socket通讯实现1台手机可以控制多台手机执行脚本)等功能,其测试用例的录制和执行等操作均在手机端的一个APP中完成 。
不需要借助电脑软件与测试设备交互,所以通信结构比Appium简单高效,对元素的识别也是使用类似于appium的控件的方式,并且引入了类似于airtest的图像识别的方式 。

推荐阅读