一、原理

1.UiAutomator——基于UIAutomation的用户界面自动化测试框架,可以跨应用工作,谷歌亲生的。

Android4.3之前:使用inputManager或者更早的WindowsManager来注入KeyEvent

Android4.3之后:使用Accessibility APIs来注入事件。(AccessibilityService本来是做一些辅助功能的,提供了一系列的事件回调,帮助我们指示一些用户及界面的状态变化,主要给残障人群提供帮助。)

2.Robotium——基于Instrumentation开发出来的一套测试框架

Instrumentation可以把测试包和目标测试应用加载到同一个进程中进行。既然各个控件和测试代码都运行在同一个进程中了,测试代码当然就可以调用这些控件的方法了,同时修改和验证这些控件的一些项就不在话下了。

Instrumentation的运行原理:InstrumentationTestRunner会在目标应用代码运行之前调用onCreate方法建立一个新的线程并为这个线程添加一个消息队列,这个线程循环处理其他线程发过来的消息事件,并与之进行交互。

跨应用:Android4.3之后Instrumentation引入了getUiAutomation接口的实例进行跨应用测试。

3.Appium——跨平台,允许采用同一套API在不同的平台(IOS,Android)上编写测试代码,让测试套件在IOS和Android平台上实现代码复用成为可能。

Appium的核心是一个暴露了REST API的网络服务器。这个服务器接收客户端过来的连接,监听客户端过来的命令,在移动设备上运行命令,然后把代表命令运行结果的HTTP响应包发送回客户端。

二、优缺点对比

UiAutomator

Robotium

Appium

是否支持设备无源码测试(黑盒测试)

能否进行跨应用测试

不能

是否是谷歌原生

不是

不是

支持编程语言

Java

Java

几乎所有语言

是否有签名一致的问题

是否需要解决中文输入问题

建议开发团队增加的控件信息

Content Description

resource-id

Content Description

是否需要API17及以上

Junit支持版本

Junit4

Junit3

Junit3/Junit4

是否支持webview

支持平台

Android

Android

IOS

三、补充内容——Android三种注入事件的方式

1、使用内部APIs(内部API是谷歌没有对外开放的代码,存在一定的风险)

通过获得WindowManager的一个实例来访问injectKeyEvent/injectPointerEvent这两个事件注入方法。

在应用内可正常工作,在应用外不能正常工作(INJECT_EVENTS是需要系统权限的)。

2、使用instrumentation对象(开放的API,比内部API干净)

通过instrumentation的一个实例来访问injectEvent,同上面的内部APIs的方法。

所以在应用内部可以正常的工作,在应用外部不嫩正常的工作。

3、直接注入事件到设备 /dev/input/eventX

linux以系统设备的方式向用户暴露了一套统一的事件注入接口 /dev/input/eventX(其中X代表一个整数)。我们可以直接调用。

需要rooted过的设备,如:

adb shell

su

http://blog.csdn.net/lv18092081172/article/details/52123470

chmod 666 /dev/input/event3

android ui自动化测试框架有哪些,自动化测试框架对比(UIAutomator、Appium、Robotium)...相关推荐

  1. MAC中在eclipse luna上搭建移动平台自动化测试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录

    这几天因为原来在用的hp laptop的电池坏掉了,机器一不小心就断电,所以只能花时间在自己的mackbook pro上重新搭建整套环境,大家都知道搭建环境是个很琐碎需要耐心的事情,特别是当你搭建的安 ...

  2. 华为python自动化测试框架_10个自动化测试框架,测试工程师用起来

    摘要:快速实现质量是必要的,因此质量保证得到了很多关注.为了满足卓越的质量和更快的上市时间的需求,自动化测试将被优先考虑.对于微型.小型和中型企业(SMEs)来说,自动化自身的测试过程是非常必要的,而 ...

  3. 修改pom文件_自动化测试基础篇:Selenium 框架设计(POM)

    (给Python开发者加星标,提升Python技能) 来源:  叁藏法师 https://www.cnblogs.com/sanzangTst/p/8376550.html [导语]Selenium是 ...

  4. web自动化测试有哪些工具和框架?

    Web自动化测试在测试领域里面用得比较多的工具或者框架有Selenium, robotframework, Cucumber等. Selenium是一个开源的Web自动化测试框架,主要用于做HTML页 ...

  5. 【自动化测试】一位自动化测试工程师居然不会封装框架?神秘自动化测试框架......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  6. XCoreRedux框架:Android UI组件化与Redux实践

    XCoreRedux框架:Android UI组件化与Redux实践 @author: 莫川 https://github.com/nuptboyzhb/ XCoreRedux源码+Demo:http ...

  7. 乐玩自动化测试模块_五大测试框架介绍,附带全套黑马自动化测试视频教程(完结)...

    这个框架需要开发数据表和关键字,这些数据表和关键字独立于执行它们的测试自动化工具,并可以用来"驱动"待测应用程序和数据的测试脚本代码,关键宇驱动测试看上去与手工测试用例很类似. 概述 在自动 ...

  8. Android UI 测试框架Espresso详解

    Android UI 测试框架Espresso详解 1. Espresso测试框架 2.提供Intents Espresso 2.1.安装 2.2.为Espresso配置Gradle构建文件 2.3. ...

  9. GitHub标星5.6K,2020腾讯又一力作开源的Android UI框架——QMUI Android

    各位同学,早上好,我是你们的老朋友D_clock爱吃葱花,前些天忙着发版本,最近也在看各种各样的新知识,有好多东西想写啊啊啊啊啊.嗯,先冷静捋一下,卖个关子.扯回正题,今天继续为大家推荐一个Githu ...

最新文章

  1. 下面算法中,不属于公开密钥加密算法的是()。D
  2. Nginx 负载均衡 - linux下nginx加载配置文件异常处理,提示invalid PID number in “/run/nginx.pid“问题解决
  3. 507. Perfect Number(Python)
  4. 修改Linux系统默认语言
  5. JS 获取链接(url)参数以及锚链接(anchor)结合富ajax的应用(ajax前进/后退的问题)...
  6. 删除苹果自带软件后果_ghost explorer工具怎么删除ghost自带软件【详细教程】
  7. 移动硬盘拒绝访问找到数据的法子
  8. arcgis的numpy模块_数据分析之numpy模块
  9. 利用Gabor变换法分析纹理图像 matlab代码实现
  10. interop.cdo 发送邮件乱码_手把手教你用 Java 发送邮件,不用框架
  11. TF2.0-tf.keras.callbacks.ModelCheckpoint
  12. eclipse中文乱码解决_Stata15:一次性转码,解决中文乱码问题
  13. 去掉重复值php,php多维数组去掉重复值
  14. 如何在eclipse中使用Struts2框架
  15. 第三方支付和代付区别在哪?
  16. C#学习笔记8 事件
  17. 微信网页授权登入--laravel组件 laravel-wechat调用
  18. 【科研小技巧】Word(2016)绘制三线表样式
  19. 计算机网络协议(二)——从二层到三层
  20. 【面试概率题连载2】轻率的陪审团

热门文章

  1. ShowAllPic--图片
  2. Perl正则表达式--练习1
  3. golang 位操作
  4. WIN7 WIN8 笔记本无线网卡MAC地址修改
  5. Android的下载,编译, 运行
  6. asp.net的控件视图状态
  7. IIS 错误代码大汇总
  8. 【MM模块】Releasing Blocked Invoices 释放冻结发票
  9. SAP顾问,市场的双重需求
  10. JCO连接SAP例子