Android自动化测试

来源:互联网 发布:新手做淘宝客操作流程 编辑:程序博客网 时间:2024/06/16 03:54

Android自动化测试/模拟

目前Android的自动化测试已经比较成熟,所以这个是基于目前市面上已有的自动化测试工作做的一个简单的调研。

功能要求

  • 支持基本的点击,触摸,输入文字,滑动,拖拽
  • 支持到对WebView 的控制
  • 需要尽可能真实的模拟
  • 控制流走adb shell,或者脚本

可用方案

uiautomator + uiautomatorviewer

uiautomator是谷歌提供的一套黑盒测试工具,与之相对的是Espresso(白盒测试)。

  • 官方方案
  • 可以控制到某个节点的点击、滑动、拖拽等等基本事件
  • 支持shell脚本控制

问题:

1,对webview的验证控制不方便 webview上的元素要通过Chorme的“chrome://inspect”才能获取

2,微信会防控制,ps:只有聊天列表页uiautomatorviewer获取不到view层级关系(微信红包)

安装与使用

install

adb push /Users/yeshen/Documents/opensource/android-testing/ui/uiautomator/BasicSample/app/build/outputs/apk/app-debug-androidTest.apk /data/local/tmp/com.example.android.testing.uiautomator.BasicSample.test

start control

adb shell am instrument -w -r   -e debug false  \com.example.android.testing.uiautomator.BasicSample.test/android.support.test \.runner.AndroidJUnitRunner

robotium

  • 是主流的测试方案之一
  • 能支持到基本的点击滑动什么的

问题:

1,需要和目标应用同进程
2,基于android Instrumentation,是应用级别的,实际功能很受限
3,许久没更新,方案对新系统的适配可能会有坑

AutomatorX

AutomatorX是网易给出的一套解决方案,是集合了各个测试框架之后给的一个方案,所以目前看来功能点是最全的。

  • 基于uiautomator的模拟点击,触摸时间等
  • 集成图像识别
  • 集成模拟输入法输入
  • 集成到网页端的控制

试了一轮,功能是足够的,可以不基于APP做独立的控制。
根据API文档写了一个小脚本。
控制还是挺顺畅的,写的时候结合截图的GUI做控制。

Macaca

macaca 是阿里的提供的解决方案,android部分也是基于uiautomator,和AutomatorX很类似,集成了多个工具集。
PS:也可能是因为它太重了,依赖很多,装起来很麻烦。官网给的都是在mac上安装的指引,对linux的支持不是足。看得出侧重点是在IOS和手机网页的东西。

appium

appium android部分是基于UiAutomator和Selendroid

文档在这里

详细的API在这里

它提供的功能更多的是对不同框架(android、ios、web)内的统一封装,单从android、功能性这个维度上看,它还是有点弱,只是一个基本版的uiautomator。

分析

其实现在就只有两种基本的解决方案,其他都是基于这两个的拓展,一个是 uiautomator , 另外一个是 uiautomator出来之前的 Instrumentation .

uiautomator 是基于可以通过页面层级结构获得页面元素,也可以直接模拟按键事件。
Instrumentation 是基于android保留的,对元素控制的钩子。

所以现在的方案一定会基于 uiautomator 。不过是看那个封装起来的足够方便,能减少我们这边的开发成本。

小结

AutomatorXuiautomator 的封装比较轻
提供了图像识别和文字输入的工具
能够不依赖于具体应用