Android自动化测试框架开发(二)Monkey、MonkeyRunner介绍和分析

本篇介绍两个Android自带的测试框架:Monkey和MonkeyRunner

1.Monkey

Monkey是android自带的测试框架,通过向手机发送随机事件(手势,点击,输入)进行应用程序压力测试(可指定应用程序包名,也可以说是稳定性测试),测试应用程序的稳定性和健壮性;

使用步骤:

(1)进入adb shell

(2)cd /system/bin

然后执行monkey命令即可;

常用的monkey命令(网上借的图):

分析:

Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

(1)测试的对象仅为应用程序包,有一定的局限性。

(2)Monkey测试使用的事件流数据流是随机的,不能进行自定义。

(3)Monkey测试主要是根据像素点随机进行事件的触发,无法进行录制回放

(4)仅能作为辅助测试,还需其它框架进行应用程序的整体系统性测试

2.MonkeyRunner

脚本语言:Python

为什么使用Python语言编写脚本,参考

http://blog.csdn.net/robinzhou/article/details/6790098

在测试脚本中,要先取到device实例:device = MonkeyRunner.waitForConnection()

事件类型API:拖拽,输入和点击

(1)拖拽:device.drag(tuple start,tuple end,float duration,integer steps)

start:起始位置,为tuple类型的(x,y)坐标点

end:终点位置,为tuple类型的(x,y)坐标点

duration:拖拽手势持续时间,默认1.0s

steps:步数,默认为10

(2)输入:device.touch(x,y,DOWN_AND_UP)

device.type(“xxxx”)

device.press(“KEYCODE_ENTER”,”DOWN_AND_UP”)

(3)点击:device.touch(x,y,DOWN_AND_UP)

必备API:等待设备,启动应用,设置等待,安装、卸载应用

(1)等待设备: device = MonkeyRunner.waitForConnection(),设备连接是一切操作的前提,连接失败将不会继续后续操作

(2)安装、卸载应用:

安装:device.installPackage(String path)

卸载:device.removePackage(String package)

(3)启动应用:device.startActivity(package+”/”+activity)

(4)设置等待:MonkeyRunner.sleep(float seconds)

系统按键API:发送键值事件

device.press(String name,dictionary type)

String name:keycode名

dictionary type:key event类型(如DOWM,UP..)

例:device.press(“KEYCODE_MENU”,”DOWN_AND_UP”),弹出menu菜单

如何实现长按操作:device.drag((300,500),(300,500),3,10), 长按(300,500)三秒钟

图像处理API:截屏,图像保存,图像截取,对比

截屏:picture = device.takeSnapshot();

保存:device.writeToFile(String path,String format)

图像截取:

picture = device.takeSnapshot();

subpic = picture.getSubImage((x,y,w,h))

图像对比:

picture1 = device.takeSnapshot();

picture2 = device.takeSnapshot();

compare = picture1.sameAs(picture2,0.9)

0.9为匹配百分比,范围为0.0~1.0,默认为1.0,即必须全部匹配

compare返回ture/false,true则两张图片一致,false,不一致

分析:

MonkeyRunner相对于Monkey有了很大的进步:

(1)API调用更加明了,支持设备的唤醒,重启,支持应用程序的安装,卸载,启动;

(2)对三种基本事件类型处理API更简单

(3)特色是可以进行截屏,对进行图像对比,判断程序是否异常

(4)支持录制回放

(5)缺点是,一切事件类型都是基于像素点,稳定性太低,脚本维护性太低,与Monkey类似,只能作为辅助测试框架使用

本篇文章对Monkey和MonkeyRunner进行了使用说明和优缺点分析,下篇文章将重点介绍Instrumentation测试框架。

时间: 2024-08-07 00:04:05

Android自动化测试框架开发(二)Monkey、MonkeyRunner介绍和分析的相关文章

Android自动化测试框架开发(一)自动化测试框架概要

在做Android自动化测试框架开发之前,我们应该先了解目前的发展状况,知道我们的目标是什么,也要了解当前的主流框架,做到知己知彼,取长补短. 首先要思考和了解几个问题: 我们开发自动化框架的目标是什么?如何得到想要的框架? 目前主流自动化框架的优劣势分析 剖析主流自动化框架的源码 如何利用框架进行二次开发? 本篇文章介绍上述第一个问题: 一:Android自动化测试框架目标 稳定性好:尽可能使用开发人员对控件定义的id等唯一定位信息,减少通过控件index进行节点判断 可移植性好:尽可能减少通

避免重复造轮子的UI自动化测试框架开发

一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览器的基本上底层都是selenium,驱动无线app和浏览器基本是appium.monkey之类的,底层都是基于官方支持的自动化测试框架开发而来,然后上层又做了各种封装 首先在开始计划开发自动化时,第一步是了解目前已有的自动化开发技术,上面说了,最底层的就那几种,根据实际要去测试的业务需求选择合适的自

Android Afinal框架学习(二) FinalActivity 一个IOC框架

框架地址:https://github.com/yangfuhai/afinal 对应的源码: net.tsz.afinal.annotation.view.* FinalActivity FinalActivity是一个基础类,结合注解实现了,依赖注入(view的资源id,常用的监听器), 利用set方式注入 完全注解方式就可以进行UI绑定和事件绑定,无需findViewById和set event Listener 这个过程:initInjectedView>findViewById.set

Android 自动化测试框架

Android常用的自动化测试工具框架: Monkey,MonkeyRunner,UIAutomator,Robotium,Appium,Monkey Talk 但是这些工具框架都有什么关系呢,先通过一张图来了解一下吧.(图是某博客上借过来的) 是不是一脸懵逼,不知道这是什么鬼.下面详细了解一下. 一.Monkey 是Android SDK自带的测试工具,是一个命令行工具,可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用

Android自动化测试框架分析

摘自<深入理解Android自动化测试>作者:许奔 1. 稳定性好:尽可能少地通过控件index进行节点判断. 2.可移植性好:尽可能少地通过坐标进行控件定位. monkey.monkeyrunner通过坐标进行控件定位. 3. 支持多应用交互:框架必须支持跨应用. instrumentation不支持跨应用. 4. 运行效率高:窗口跳转监控和窗口定位要准确. monkey.monkeyrunner窗口跳转监控和窗口定位不准确. 5. 容易上手:框架接口要容易理解和掌握. monkeyrunn

直播|python大咖实力领跑,分分钟扫盲电商网站自动化测试框架开发

作为大数据时代的软件测试工程师--你应该会的更多,还在单纯的只会点页 面测试BUG?又或者只懂功能测试技能.接口功能测试技能.自动化测试.性 能测试.敏捷测试.大数据其中某一个?是时候掌握新技能了,康忙北鼻! [前言] Selenium一直以来都被视作测试人员成功向自动化脚本开发转型的首选入门, 随着python语言的火热程度的持续攀升,基于python+Selenium实现自动化脚本 的开发也备受业内测试人员的追捧. 本课程基于Selenium3,python及BDD框架,结合大型电商京东实战

打造android ORM框架opendroid(二)——自动创建数据库

在上一篇博客<打造android ORM框架opendroid(一)--ORM框架的使用>中相信你已经了解了opendroid的使用,那么从这篇博客开始,我们正式进入opendroid的源码分析,打造一款自己的ORM框架! 在正式开始之前,你需要保证手里有一份opendroid的源码,如果还没下载opendroid,请到http://git.oschina.net/qibin/OpenDroid 下载opendroid的源码. 任何数据库操作都是从创建数据库开始的,今天我们就来看看opendr

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

这几天因为原来在用的hp laptop的电池坏掉了,机器一不小心就断电,所以只能花时间在自己的mackbook pro上重新搭建整套环境,大家都知道搭建环境是个很琐碎需要耐心的事情,特别是当你搭建的安卓平台的时候经常需要翻墙,那个慢不是常人可以忍受的,所以过程中建议大家边看书或者玩手机边搭建,省得一直瞪着屏幕导致爆血管的意外发生. 这里本人尝试把在mac上搭建移动平台自动化测试框架的一些碰到的问题和关键点给描述一下,以方便后来者可以借鉴. 1. 如果你需要的是最新的eclise,那么不要去and

Android自动化测试框架

1.Monkeyrunner:优点:操作最为简单,可以录制测试脚本,可视化操作:缺点:主要生成坐标的自动化操作,移植性不强,功能最为局限:    2.Rubotium:主要针对某一个APK进行自动化测试,APK可以有源码,也可以没有源码,功能强大:缺点是针对APK操作,而且需要对APK重新签名(有工具),因此操作相对复杂:    3.UiAutomator:优点:可以对所有操作进行自动化,操作简单:缺点:Android版本需要高于4.0,无法根据控件ID操作,相对来说功能较为局限,但也够用了: