Android自动化测试 - MonkeyRunner(一)介绍
MonkeyRunner介绍:
MonkeyRunner是Google提供的一个基于坐标点的Android黑盒自动化测试工具。
Monkeyrunner工具提供了一套API让用户/测试人员来调用,调用这些api可以控制一个Android设备或模拟器,而不需要了解对应的源码。
有了Monkeyrunner,我们可以编写python脚本来控制apk包的安装和卸载、启动app、向app发送各种动作事件、截取图片并保存。
Monkeyrunner与Monkey的区别:
Monkey是通过adb shell命令,发送一系列随机的模拟事件,主要用来做压力测试;
MonkeyRunner则可以通过api来产生特定命令和事件来控制设备和模拟器。
MonkeyRunner所具有的特点:
支持多设备: API可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。
功能测试: monkeyrunner可以为一个应用自动跑一次功能测试(自顶向下)。您提供按键或触摸事件的输入数值,然后通过截屏查看结果。
回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。
可扩展的自动化:由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner API之外,您还可以使用标准的Python os和subprocess模块来调用如adb这样的Android工具。 您还可以向monkeyrunner API中添加您自己的类。
注意点:
monkeyrunner工具使用Jython(使用Java编程语言的一种Python实现,并不是Python),虽然脚本需保存为.py文件,但却不能使用python **.py来执行(会报找不到MonkeyRunner模块),必须使用monkeyrunner **.py命令来执行
官方一个简单的MonkeyRunner的例子
# python引入monkeyRunner模块
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
# 连接设备, 获得一个MonkeyDevice对象
device = MonkeyRunner.waitForConnection()
# 安装apk包. 返回值是boolean,可以判断是否安装成功
device.installPackage('myproject/bin/MyApplication.apk')
# 设定一个有效的测试程序包名
package = 'com.example.android.myapplication'
# 设定测试程序包名下的一个Activity名
activity = 'com.example.android.myapplication.MainActivity'
# 设定程序入口
runComponent = package + '/' + activity
# 启动应用程序
device.startActivity(component=runComponent)
# 按下手机的菜单键
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)
# 截图
result = device.takeSnapshot()
# 保存截图
result.writeToFile('myproject/shot1.png','png')
从上面的实例中我们可以看出使用monkeyrunner测试应用程序的具体步骤为:
1、先从from.android.monkeyrunner中导入三个api
2、连接设备,等待设备连接并返回连接的设备
3、安装测试程序包(可写绝对路径),安装完毕后会返回布尔型变量,可通过此变量,写一个if语句,判断是否安装成功
4、设置安装程序包名和Activity名
5、通过包名/Activity来启动应用程序
6、执行一系列的touch、drag等事件
7、截图保存
8、截图对比samas,判断结果
基于坐标点如何处理不同分辨率的设备
如320*480的,怎么移植到480*600的上面?
device.touch(340,580,'DOWN_AND_UP')
320/x = 480/newx, x = 340
480/y = 600/newy, y = 580
这样就能求得一个比例关系了,用这个比例关系做一个类似宏替换就行,代码基本不用动;甚至可以写一个方法,获取到像素后,与基础的计算后,直接替换即可。
除以上方式,还可以运用hierarchyviewer获取控件,通过控件找到坐标。缺点:要开root,4.1.2以下要开root。注意4.1以上版本用uiautomatorviewer不需要root也可以获取。
Android自动化测试 - MonkeyRunner(一)介绍的更多相关文章
- Android自动化测试 - MonkeyRunner(三) 随手练习测试脚本
#coding=utf-8 import os import time #import MonkeyRunner three module from com.android.monkeyrunner ...
- Android自动化测试 - MonkeyRunner(二) 锤子便签测试脚本
来源于:http://testerhome.com/topics/878 # encoding=utf-8 #导入python中自带的time模块和sys模块,脚本中都要用到它们. import ti ...
- MonkeyRunner原理初步--Android自动化测试学习历程
章节:自动化基础篇——MonkeyRunner原理初步 主要讲解内容及笔记: 一.理论知识和脚本演示 最佳方式是上官网文档去查看monkeyrunner的介绍,官网上不去,就找了一个本地的androi ...
- 【转】Android自动化测试(UiAutomator)简要介绍
一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试. 那么,自动化测试可以完成哪些任务呢? ...
- Android自动化测试中Monkeyrunner详解
之前有写过monkey测试详细说明,几天就说说monkeyrunner. monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器 ...
- Android自动化测试框架对比
1.Monkeyrunner:优点:操作最为简单,可以录制测试脚本,可视化操作:缺点:主要生成坐标的自动化操作,移植性不强,功能最为局限:2.Rubotium:主要针对某一个APK进行自动化测试,AP ...
- Robotium原理初步--Android自动化测试学习历程
章节:自动化基础篇——Robotium原理初步(第四讲) 主要讲解内容与笔记: 一.基于控件 1.spinner——下拉菜单 2.TabHost——左右滑动选择菜单,类似电话本 3.Gallery—— ...
- Android自动化测试(UiAutomator)
一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试. 那么,自动化测试可以完成哪些任务呢? ...
- Android自动化测试工具调研
原文地址:Android自动化测试工具调研 - Stars-One的杂货小窝 Android测试按测试方式分类,可分为两种:一种是传统逻辑单元测试(Junit),另外一种则是UI交互页面测试. 这里详 ...
随机推荐
- ramnit病毒
今天打开Hbuilder,发现每个html文档都有如下代码: <SCRIPT Language=VBScript><!--DropFileName = "svchost.e ...
- The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
出现这样的错误: error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your C ...
- 关闭Eclipse的控制台console自动跳出
一.背景 在eclipse中进行开发,尤其是在后台有项目运行的时候,当有log或者错误需要打印到console中时,控制台就会被自动弹出,恰好这时候你又在编写代码,就会感觉瞬间想杀人,下面我们就来分享 ...
- [Android Pro] StarUML 版本破解
参考:http://bbs.chinapyg.com/thread-79022-1-1.html 官网下载地址 : http://staruml.en.softonic.com 各平台版本均适用,本文 ...
- ps -C nginx --no-header |wc -l
[root@ok ok]# ps --help|grep C -A all processes -C by command name -V,V show version L list format c ...
- Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建
本文主要分三部分,分别是:后台核心业务逻辑.桥梁辅助控制和前台显示页面. 本Web开发环境综合了多种工具,包括Maven包管理与编译工具.Dubbo分布式服务框架.MyBatis数据持久化工具.Lin ...
- 数据结构和算法 – 12.高级查找算法(下)
哈希(散列)技术既是一种存储方法,也是一种查找方法.然而它与线性表.树.图等结构不同的是,前面几种结构,数据元素之间都存在某种逻辑关系,可以用连线图示表示出来,而哈希技术的记录之间不存在什么逻辑关系, ...
- Asp.net窄屏页面 手机端新闻列表
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SearchNotice.a ...
- C# TreeView使用技巧
节点勾选设置 TreeView树中节点勾选要求: 1.不选中一个节点,则其所有的子节点都不被选中. 2.选中一个节点,则其所有的子节点都被选中. 3.当一个节点的所有子节点都没有被选中时,该节点也没有 ...
- winedt打开.tex文件时会出现reading error,看不到任何文字
winedt打开.tex文件时会出现reading error,然后看不到任何文字. 解决办法:先打开空白的winedt,然后点击open,找到该.tex文件,将文件名右侧的 default 改为 ...