Android常用的自动化测试工具框架:

Monkey,MonkeyRunner,UIAutomator,Robotium,Appium,Monkey Talk......

但这些工具框架都是什么呢有什么联系呢,先通过一张图来了解一下吧.(图是某博客上借过来

是不是一脸懵逼,不知道这是什么鬼。下面详细了解一下。

一、Monkey

  是Android SDK自带的测试工具,是一个命令行工具,可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用程序进行压力测试。由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。

二、MonkeyRunner

  是Android SDK提供的测试工具。严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。缺点是脚本(jython(java语言))用Python(Python(C语言))来写,对测试人员来说要求较高,有比较大的学习成本;使用By id/name/text方法操控(hierarchyviewer),执行速度太慢。典型应用:安装,卸载,启动Activity,点击X,Y坐标,发送按键事件,drag,截屏等。

三、UIAutomator

  是Android提供的自动化测试框架,基本上支持所有的Android事件操作。是用来做UI测试的,也就是普通的手工测试,点击每个控件元素看看输出的结果是否符合预期。对比Instrumentation它不需要测试人员了解代码实现细节(可以用UiAutomatorviewer抓去App页面上的控件属性而不看源码)。能跨App(比如:很多App有选择相册、打开相机拍照,这就是跨App测试)。缺点是只支持SDK 16(Android 4.1)及以上,不支持Hybird App、WebApp。

四、Robotium  

  是基于Instrumentation的测试框架,主要针对android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击,长按,滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合android官方提供的测试框架达到对应用程序进行自动化测试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium对Activity,Dialog,Toast,Menu都是支持的。支持Native app、Hybird App。缺点不能跨App。

录制工具Radar(不稳定)、Testin(不提供源码)、官网工具(收费)
开发环境:脚本语言java;Eclipse中引入:robotium-solo-**.jar

五、Appium (官网:http://appium.io/)

  是开源的移动端自动化测试框架;支持Native App、Hybird App、Web App;支持Android、iOS、Firefox OS;是跨平台的可以在mac,windows以及linux系统上。用Appium自动化测试不需要重新编译App;脚本语言:Java、python、ruby、C#、Objective C、PHP等主流语言。

相关限制:如果你在Windows使用Appium,你没法使用预编译专用于OS X的.app文件,因为Appium依赖OS X专用的库来支持iOS测试,所以在Windows平台你不能测试iOS Apps。这意味着你只能通过在Mac上来运行iOS测试。

总结:在iOS部分是封装了UIAutomation;Android 4.2以上是用UiAutomator,Android 2.3 ~ 4.1用的是Instrumentation,也就说Appium同时封装了UiAutomator和Instrumentation。所以Appium拥有了以上几大框架的所有优点:跨App,支持Native App、Hybird App、Web App,还支持N种语言来编写你的测试脚本。

appium内核基于UiAutomator来识别元素。如果只有Android app产品,推荐选择robotium,提供的API比appium好用;既有IOS和Android,则使用appium

六、Instrumentation

   是早期Google提供的Android自动化测试工具类,虽然在那时候JUnit也可以对Android进行测试,但是Instrumentation允许你对应用程序做更为复杂的测试,甚至是框架层面的。通过Instrumentation你可以模拟按键按下、抬起、屏幕点击、滚动等事件。Instrumentation是通过将主程序和测试程序运行在同一个进程来实现这些功能,你可以把Instrumentation看成一个类似Activity或者Service并且不带界面的组件,在程序运行期间监控你的主程序。缺点是对测试人员来说编写代码能力要求较高,需要对Android相关知识有一定了解,还需要配置AndroidManifest.xml文件,不能跨多个App。

七、Espresso

  是Google的开源自动化测试框架。相对于Robotium和UIAutomator,它的特点是规模更小、更简洁,API更加精确,编写测试代码简单,容易快速上手。因为是基于Instrumentation的,所以不能跨App。

八、Selendroid

  是基于Instrumentation的测试框架,可以测试Native App、Hybird App、Web App,但是网上资料较少,社区活跃度也不大。

本文内容参考各网络资源,感谢原文作者,如有版权问题请及时留言。

最新文章

  1. 手把手教你玩转nginx负载均衡(三)----配置虚拟服务器网络
  2. python日志模块---logging
  3. C#操作FTP报错,远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)的解决方法
  4. cookie与localstorage和sessionstorage的区别比较
  5. Post Complex JavaScript Objects to ASP.NET MVC Controllers
  6. Maven Project configuration is not up-to-date with pom.xml错误解决方法
  7. [zz] Install VSFTP
  8. SQL语句基本概念
  9. Java的ResultSet中rs.next()含义
  10. SVN遇到的几个错误问题解决办法
  11. SQL中的NULL值
  12. Part-Nine
  13. MultipartFile文件编码判断
  14. 个人博客作业-Week1
  15. ABP集成短信发送模块
  16. 图->连通性->有向图的强连通分量
  17. spring cloud和spring boot两个完整项目
  18. Extjs表单验证小结
  19. 曲演杂坛--重建索引后,还使用混合分区么?(Are mixed pages removed by an index rebuild?)
  20. iTextSharp 合并PDF后,无法删除已经合并的单个文件

热门文章

  1. mybatis的两个核心对象SqlSessionFactory和SqlSession对象
  2. 简单SQL语句
  3. Python 爬虫一 简介
  4. 【Thymeleaf】常用属性
  5. Android程序破解思路
  6. MySql cmd下的学习笔记 —— 有关select的操作(order by,limit)
  7. mybatis中useGeneratedKeys和keyProperty的作用
  8. 通过SecureCRT连接虚拟机
  9. Django之Bootstrap使用
  10. 虚拟机CentOS7下NAT模式的网络配置