android常用自动化测试框架

目录:

  • Monkey
  • MonkeyRunner
  • Instrumentation
  • UiAutomator
  • Espresso
  • Selendroid
  • Robotium
  • Athrun
  • Appium

Monkey

Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出。实际上该工具只能为程序做一些压力测试,由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。

$~: android shell monkey -p [project package name] -v [500]
MonkeyRunner

也是Android SDK提供的测试工具。严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。缺点是脚本用Python来写,对测试人员来说要求较高,有比较大的学习成本。

Instrumentation

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

UiAutomator

也是Android提供的自动化测试框架,基本上支持所有的Android事件操作,对比Instrumentation它不需要测试人员了解代码实现细节(可以用UiAutomatorviewer抓取App页面上的控件属性而不看源码)。基于Java,测试代码结构简单、编写容易、学习成本较低,一次编译,所有设备或模拟器都能运行测试,能跨App(比如:很多App有选择相册、打开相机拍照,这就是跨App测试)。缺点是只支持SDK 16(Android 4.1)及以上,不支持Hybird App、WebApp。

Espresso

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

Selendroid

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

Robotium

也是基于Instrumentation的测试框架,目前国内外用的比较多,资料比较多,社区也比较活跃。缺点是对测试人员来说要有一定的Java基础,了解Android基本组件,不能跨App。

Athrun

是淘宝出的一个移动测试框架/平台,同时支持iOS和Android。Android部分也是基于Instrumentation,在Android原有的ActivityInstrumentationTestCase2类基础上进行了扩展,提供一整套面向对象的API。这里有详细介绍。

Appium

是最近比较热门的框架,社区也很活跃。这个框架应该是是功能最强大的

它的优点:
  • 开源;
  • 支持Native App、Hybird App、Web App;
  • 支持Android、iOS、Firefox OS;
  • Server也是跨平台的,你可以使用Mac OS X、Windows或者Linux;
它的哲理是:
  • 用Appium自动化测试不需要重新编译App;
  • 支持很多语言来编写测试脚本,Java、Javascript、PHP、Python、C#、Ruby等主流语言;
  • 不需要为了自动化测试来重造轮子,因为扩展了WebDriver。(WebDriver是测试WebApps的一种简单、快速的自动化测试框架,所以有Web自动化测试经验的测试人员可以直接上手);
  • 移动端自动化测试应该是开源的;
它的设计理念:
  • Client/Server架构,运行的时候Server端会监听Client端发过来的命令,翻译这些命令发送给移动设备或模拟器,然后移动设备或模拟器做出响应的反应。正是因为这种架构,所以Client可以使用Appium client libraries多种语言的测试脚本,而且Server端完全可以部署在服务器上,甚至云服务器。
  • Session,每个Client连接到Server以后都会有一个Session ID,而且Client发送命令到Server端都需要这个Session ID,因为这个seesion id代表了你所打开的浏览器或者是移动设备的模拟器。所以你甚至可以打开N个Session,同时测试不同的设备或模拟器。
  • Desired Capabilities,其实就是一个键值对,设置一些测试的相关信息来告诉Server端,我们需要测试iOS、还是Android,或者换是WebApp等信息。
  • Appium Server是Node.js写的,所以可以直接用NPM来进行安装。
  • Appium Clients,Mac OS和Win下提供GUI,不需要装Node.js,方便测试人员操作。
相关限制:
  • 如果你在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种语言来编写你的测试脚本。
声明:该系列内容均来自网络或电子书籍,只做学习总结!


原文链接

时间: 2024-12-26 11:03:30

android常用自动化测试框架的相关文章

Windows下部署Appium教程(Android App自动化测试框架搭建)

摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,appium是跨平台的,可以用在osx,windows以及linux系统上: ----------------------------------------------appium的一些基本概念---------------------------------------------- appium

25类Android常用开源框架

1.图片加载,缓存,处理 框架名称 功能描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库,已过时 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库,使用的App有:网易新闻 GlidePalette Android Lollipop Palette is now easy to use with Glide PicassoPalette Android Lol

android常用http框架介绍

OkHttp是square自己实现的一个的一个http库,现在好像是已经被Google官方采用,最新的Android代码中干掉了HttpClient,使用OkHttp. Retrofit是一个封装比较好的,相对更面向开发者的rest请求库,它的底层网络请求可以使用不同的网络库来处理,比如OkHttp,HttpClient. AsyncHttp也是一个较高层的封装,底层使用的是HttpClient. 1.HttpURLConnection:在Android 2.2版本之前,HttpClient拥有

【转载】android 常用开源框架

对于Android初学者以及对于我们菜鸟,这些大神们开发的轻量级框架非常有用(更别说开源的了). 下面转载这10个框架的介绍:(按顺序来吧没有什么排名). 一.  Afinal 官方介绍: Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp. 通过finalActivity,我们可以通过注解的方式进行绑定ui和事件. 通过finalBitmap,我们可以方便的加载bitmap图片,而无

Android 常用开源框架源码解析 系列 (九)dagger2 呆哥兔 依赖注入库

一.前言 依赖注入定义 目标类中所依赖的其他的类的初始化过程,不是通过手动编码的方式创建的. 是将其他的类已经初始化好的实例自动注入的目标类中. "依赖注入"也是面向对象编程的 设计模式 -----组合的配套使用 作用 :降低程序的耦合,耦合就是因为类之间的依赖关系所引起的 产生场景:在一个对象里去创建另一个对象的实例 问题:过多的类,对象之间的依赖会造成代码难以维护. 不符合开闭原则的对象的引用写法:错误示例: public class ClassA { classB b ; pub

python专项测试——Android App自动化测试框架

1 为什么需要框架?   代码混乱,难阅读: 重复编码,效率低:需求变化,难维护: 一 自动化实例 1 准备测试的app:准备测试环境:实现脚本: 2 测试app:只有登录功能    测试环境: Appium(Android/IOS); Android SDK; Appium-Python-Client; Selenium(Appium-Python-Client继承于Selenium);  UIAutomatorViewer Pycharm 3 实现脚本 在Pycharm中编写脚本: 用UIA

Android常用开源框架Proguard混淆解决方案

最近项目终于要上线了,于是准备对App进行混淆和加固, 但项目引入的开源库有点多,混淆时报了一堆错误,在参考了很多资料后,在前人基础上整理了一个常用开源库proguard rules的列表,以后就不用再次折腾了 项目git地址: https://github.com/offbye/Android-ProGuardRules 参考了 http://mjiayou.com/2015/06/24/third-proguard-rules/ 版权声明:本文为博主原创文章,转载请保留出处http://bl

Android 常用开源框架源码解析 系列 (十)Rxjava 异步框架

一.Rxjava的产生背景 一.进行耗时任务 传统解决办法: 传统手动开启子线程,听过接口回调的方式获取结果 传统解决办法的缺陷: 随着项目的深入.扩展.代码量的增大会产生回调之中套回调的,耦合度高度增加的不利场景.对代码维护和扩展是很严重的问题. RxJava本质上是一个异步操作库 优点: 使用简单的逻辑,处理复杂 ,困难的异步操作事件库;在一定程度上替代handler.AsyncTask等等 二.传统的观察者模式 使用场景 1.一个方面的操作依赖于另一个方面的状态变化 2.如果在更改一个对象

Android 常用开源框架源码解析 系列 (十一)picasso 图片框架

一.前言 Picasso 强大的图片加载缓存框架 api加载方式和Glide 类似,均是通过链式调用的方式进行调用 1.1.作用 Picasso 管理整个图片加载.转换.缓存等策略 1.2.简单调用: Picasso .with(this 传入一个单例,上下文).load("url"/file文件/资源路径) .into() 1.2.1 .一些简单的链式调用参数 .placeholder(R.drawable.xx)  //网络未加载完成的时候显示的本地资源图片 .error(R.dr