android 回归测试,android测试:monkey使用方法

android测试:monkey使用方法

Android Sdk给我们提供了Monkey和Monkeyrunner这两个自动化测试工具。

一、什么是Monkey

Monkey是一个命令行工具,可以运行在模拟器里或实际设备中。

它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。

Monkey包括许多选项,它们大致分为四大类:

· 基本配置选项,如设置尝试的事件数量。

· 运行约束选项,如设置只对单独的一个包进行测试。

· 事件类型和频率。

· 调试选项。

二、Monkey的基本用法

基本语法如下:

$ adb shell monkey [options]

如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。

下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:

$ adb shell monkey -p your.package.name -v 500

一些常用的参数信息:

-v

命令行的每一个-v将增加反馈信息的级别。

Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息。

Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。

Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。

事件

-s

伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。

--throttle

在事件之间插入固定延迟。

通过这个选项可以减缓Monkey的执行速度。

如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。

--pct-touch

调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。

--pct-motion

调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)。

--pct-trackball

调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。

--pct-nav

调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)。

--pct-majornav

调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

--pct-syskeys

调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)。

--pct-appswitch

调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。

--pct-anyevent

调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。

约束限制

-p

如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。

如果你的应用程序还需要访问其它包里的Activity(如 选择取一个联系人),那些包也需要在此同时指定。

如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包。

-c

如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。

如果不指定任何类别,Monkey将选择下列类别中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。

要指定多个类别,需要使用多个-c选项,每个-c选 项只能用于一个类别。

调试

--dbg-no-events

设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步生成事件。

为了得到最佳结果,把它与-v、一个或几个包约 束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,

从而提供一个环境,可以监视应用程序所调用的包之间的转换。

--hprof

设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。这将会在data/misc中生成大文件(~5Mb),所以要小心使用它。

--ignore-crashes

通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。

如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。

--ignore-timeouts

通常,当应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。

如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。

--ignore-security-exceptions

通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。

--kill-process-after-error

通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。

当设置了此选项时,将会通知系统停止发生错误的进程。

注意,正常的(成功的)结束,并没有停止启动的进程,设备只是在结束事件之后,简单地保持在最后的状态。

--monitor-native-crashes

监视并报告Android系统中本地代码的崩溃事件。如果设置了--kill-process-after-error,系统将停止运行。

--wait-dbg

停止执行中的Monkey,直到有调试器和它相连接。-v

命令行的每一个-v将增加反馈信息的级别。

Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息。

Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。

Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。

三、Monkey实例测试

Windows下(注:2—4步是为了查看我们可以测试哪些应用程序包,可省略):

1、 通过eclipse启动一个Android的emulator

2、 在命令行中输入:adb devices查看设备连接情况

C:Documents and SettingsAdministrator>adb devices

List of devices attached

emulator-5554 device

3、 在有设备连接的前提下,在命令行中输入:adb shell 进入shell界面

C:Documents and SettingsAdministrator>adb shell

4、 查看data/data文件夹下的应用程序包。注:我们能测试的应用程序包都在这个目录下面

5.在其中找到我们需要测试的包名com.marshalchen.MonkeyTest1

6、 以com.marshalchen.MonkeyTest1 作为对象进行MonkeyTest

monkey -p com.marshalchen.MonkeyTest1 -v 500

其中-p表示对象包 –v 表示事件数量

运行过程中,Emulator中的应用程序在不断地切换画面。

按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。

如:Sending Pointer ACTION_DOWN x=35.0 y=259.0

:Sending Pointer ACTION_UP x=195.0 y=259.0

:Sending Pointer ACTION_DOWN x=295.0 y=223.0

:Dropped: keys=0 pointers=0 trackballs=0 flips=0

等等信息。

四、Monkey停止的条件

Monkey Test执行过程中在下列三种情况下会自动停止:

1、如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。

2、如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。

3、如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。

通过多次并且不同设定下的Monkey测试才算它是一个稳定性足够的程序。

MonkeyRunner 使用

Monkey的使用简洁有效,但是总是给人感觉功能不够强大。所以,接下来向大家介绍非常给力的工具MonkeyRunner。

一、什么是MonkeyRunner

monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。

通过 monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,

运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。

monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。

monkeyrunner工具与monkey工具并无关联。

monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流。

而monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。

monkeyrunner工具为Android测试提供了以下特性:

1.多设备控制:monkeyrunner

API可以跨多个设备或模拟器实施测试套件。

您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。

您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。

2.功能测试:

monkeyrunner可以为一个应用自动贯彻一次功能测试。

您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。

3.回归测试:

monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。

4.可扩展的自动化:

由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。

除了使用monkeyrunner API之外,您还可以使用标准的Python os和subpress模块来调用如adb这样的Android工具。

您还可以向monkeyrunner API中添加您自己的类。

monkeyrunner工具使用Jython(使用Java编程语言的一种Python实现)。

Jython允许monkeyrunnerAPI与Android框架轻松的进行交互。使用Jython,您可以使用Python语法来获取API中的常量、类以及方法。

二、一个简单的MonkeyRunner实例

您可以直接使用一个代码文件运行monkeyrunner,抑或在交互式对话中输入monkeyrunner语句。

不论使用哪种方式,您都需要调用SDK 目录的tools子目录下的monkeyrunner命令。

如果您提供一个文件名作为运行参数,则monkeyrunner将视文件内容为Python程 序,并加以运行;否则,它将提供一个交互对话环境。

monkeyrunner的命令语法为:

monkeyrunner -plugin

monkeyrunnerbasic.py:

导入此程序所需的monkeyrunner模块

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

# 连接当前设备,返回一个MonkeyDevice对象

device = MonkeyRunner.waitForConnection()

# 安装Android包,注意,此方法返回的返回值为boolean,由此您可以判断安装过程是否正常

device.installPackage('myproject/bin/MyApplication.apk')

# 运行此应用中的一个活动

device.startActivity(component='com.marshalchen.Monkeyrunner.MainActivity')

# 按下菜单按键

device.press('KEYCODE_MENU','DOWN_AND_UP')

# 截取屏幕截图

result = device.takeSnapShot

# 将截图保存至文件

result.writeToFile('myproject/shot1.png','png')

然后转到$SDKTOOLS下执行 monkeyrunner monkeyrunnerbasic.py 就可执行测试了

三、常用功能的Monkeyrunner python脚本介绍:

1.输入等基本操作测试

import sys

from com.android.monkeyrunner import MonkeyRunner as mr

from com.android.monkeyrunner import MonkeyDevice as md

from com.android.monkeyrunner import MonkeyImage as mi

connect device 连接设备

#第一个参数为等待连接设备时间

#第二个参数为具体连接的设备

device = mr.waitForConnection(1.0,'emulator-5554') if not device:

print >> sys.stderr,"fail"

sys.exit(1)

#定义要启动的Activity

componentName='kg.monkey/.MonkeyActivity'

#启动特定的Activity

device.startActivity(component=componentName)

mr.sleep(3.0)

#do someting 进行我们的操作

#输入 a s d

device.type('asd')

#输入回车

device.press('KEYCODE_ENTER')

#return keyboard 点击返回用于取消等下看到截图的下方的白条

#device.press('KEYCODE_BACK')

#takeSnapshot截图

mr.sleep(3.0)

result = device.takeSnapshot()

#save to file 保存到文件

result.writeToFile('takeSnapshot\result1.png','png');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言编程季节输出春夏秋冬,c语言编程题: 用枚类型定义春、夏、秋、冬四个季节...

满意答案bcabcdefg2013.07.28采纳率&#xff1a;49% 等级&#xff1a;12已帮助&#xff1a;5373人#includeenum season{spring 1,summer,autumn,winter,};season GetSeasonByMonth(char month){if(month < 3 && month>1)return spring;else if(month < 6 …

android fragment addtobackstack,Android Fragment Back Stack的问题

我对android片段Backstack的工作方式遇到了一个很大的问题&#xff0c;对于提供的任何帮助将不胜感激。假设您有3个片段[1] [2] [3]我希望用户能够导航[1] > [2] > [3]但在返回的途中(按返回按钮)[3] > [1]。就像我想象的那样&#xff0c;这可以通过addToBackStack(..…

华为升级harmonyos的机型名单,华为鸿蒙 OS 2.0 系统适配名单已出,四月推送,天玑机型暂时无缘...

原标题&#xff1a;华为鸿蒙 OS 2.0 系统适配名单已出&#xff0c;四月推送&#xff0c;天玑机型暂时无缘华为官方在 2020 年发布了旗下自研系统“HarmonyOS 2.0”版本&#xff0c;发布会现场展示了 HarmonyOS 2.0 开发者 Beta 版本&#xff0c;并开启开发者 Beta 的公测。此外…

android如何实现QQ信息通知,android NotificationListenerService监听通知栏(qq 微信 短信)...

【实例简介】android NotificationListenerService 监听通知栏&#xff0c;android NotificationListenerService 监听通知栏 android NotificationListenerService 监听通知栏【实例截图】【核心代码】NLsevice└── NLsevice├── AndroidManifest.xml├── bin│ ├──…

rsync android app,如何rsync到android

问题描述如何连接到我的Android设备以rsync音乐(或其他东西)&#xff1f;最佳解决思路实际上在MTP /usb上使用rsync这比每个人都说的容易&#xff0c;首先注意到当GVFS安装MTP挂载时&#xff0c;它将在下面可用。您可以通过在图形file-browser(thunar /nautilus /etc)中打开手机…

android 混合开发 图片,混合开发的大趋势之一React Native之Image

文章是宝宝自己写的&#xff0c;你可以转走&#xff0c;标明哪来的就行王亟亟的大牛之路国庆这些天要么旅游要么WOW&#xff0c;感觉整个人都废了。。直接从黄种人晒成了非洲大酋长。。然而还是无橙&#xff0c;这礼拜要做7天&#xff0c;昨天把单元测试的东西整完后今天下午抽…

html5实现无缝滚动的效果,基于JavaScript实现无缝滚动效果

本文实例为大家分享了JavaScript实现无缝滚动效果展示的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下首先应该区分样式中的绝对定位和相对定位&#xff0c;一般来说&#xff0c;移动的单位为绝对定位&#xff0c;在这个实例中&#xff0c;移动的Ul就是绝对定位 &am…

w3c html5 客户端缓存数据格式,Html5应用程序缓存(Cache manifest)

一、作用离线浏览 - 根据文件规则把资源缓存在本地&#xff0c;脱机依然能够访问资源&#xff0c;联网会直接使用缓存在本地的文件。优化加载速度&#xff0c;节约服务器资源。二、适用场景正如 manifest 英译的名字&#xff1a;离线应用程序缓存&#xff0c;这项功能是设计给会…

html5内联框去滚动条,如何优雅的实现内联滚动条(前端底部固定方法 )

我是一个网易云粉&#xff0c;有没有发现网易云音乐两边的滚动条是互不相干的&#xff0c;而且头部和底部都是固定的&#xff0c;这是如何实现的呢&#xff1f;先看个图吧。网易云音乐的页面其实要实现这样一个内联滚动条不难。我们可以先从实现一个内联滚动条开始实现。实现方…

微型计算机中 辅助存储器通常包括,第7章 微型计算机存储器习题参考答案

第七章习题及答案7.1 一个微机系统中通常有哪几级存储器&#xff1f;它们各起什么作用&#xff1f;性能上有什么特点&#xff1f;答&#xff1a;一个微机系统中通常有3级存储器结构&#xff1a;高速缓冲存储器、内存储器和辅助存储器。高速缓冲存储器简称快存&#xff0c;是一种…

html中未填写完提示未填写,亚马逊官方试题(开店及运营篇)

六.玩转新账号单选1、可以在亚马逊网站投放广告吗&#xff1f;A:部分可以投放&#xff0c;部分则由亚马逊控制B:全部不可以C:全部都可以D:只可在网站页面有责投放 A2、恢复移动板块初始界面后台什么位置设置A:无法恢复B:需手动逐一恢复 C:右上角Setting里设置D:左下角设置 D3、…

idea html 错误提示,Idea 代码编辑错误不飘红提示

洛谷P2055 &lbrack;ZJOI2009&rsqb;假期的宿舍 &lbrack;二分图最大匹配&rsqb;题目描述 学校放假了 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...noip模拟赛…

2019计算机科学与技术调剂信息,福建师范大学计算机科学与技术2019考研调剂信息...

学校&#xff1a;福建师范大学专业&#xff1a;工学->计算机科学与技术年级&#xff1a;2019招生人数&#xff1a;2招生状态&#xff1a;正在招生中联系方式&#xff1a;15606066289本课题组招生计算机科学与技术调剂生1-2人&#xff0c;研究生阶段主要从事统计决策、模糊决…

分时系统的用户具有独占性,因此一个用户可以独占计算机系统的资源.,课件2016计算机操作系统试题库(判断).doc...

课件2016计算机操作系统试题库(判断)判断题(共73个题目)200151. 操作系统属于最重要的、最不可缺少的应用软件。此题答案为&#xff1a;0200152. 操作系统完成的主要功能是与硬件相关的。此题答案为&#xff1a;0200153. 操作系统的所有程序都在系统态执行。此题答案为&#xf…

笔记本计算机在桌面显示,笔记本电脑开机后不显示桌面该怎么处理

笔记本电脑使用久了总是会出现这样或那样的问题&#xff0c;其中最常见的问题就是笔记本电脑开机后不显示桌面&#xff0c;为了帮用户解决这个问题&#xff0c;下面就由小编跟大家分享具体的处理方法吧&#xff0c;希望对大家有所帮助~笔记本电脑开机后不显示桌面的两个处理方法…

科学计算机 分数计算公式,Z分数(标准分数,Z-Score)公式与在线计算器_三贝计算网_23bei.com...

输入原始数据(X)、平均数(M)、标准差(S)、Z分数值(Z)等4个变量中任意3个已知变量&#xff0c;点击计算按钮&#xff0c;可快速求出求出未知变量。Z 分数也叫标准分数(standard score)&#xff0c;能够真实的反应一个分数距离平均数的相对标准距离。如果我们把每一个分数都转换成…

说唱计算机网红,首档喊麦节目太奇葩,蹭了说唱热度,还请了被封杀网红当导师...

原标题&#xff1a;首档喊麦节目太奇葩&#xff0c;蹭了说唱热度&#xff0c;还请了被封杀网红当导师首档喊麦节目太奇葩&#xff0c;蹭了说唱热度&#xff0c;还请了被封杀网红当导师大家都知道&#xff0c;如今的综艺节目越来越多各种题材应有尽有&#xff0c;尤其是音乐类的…

平顶山学院计算机分数线,2016年平顶山学院艺术类专业录取分数线

平顶山学院2016年新疆艺术本科统考专业录取分数线专业名称层次计划性质计划数最高分录取分平均分环境设计本科统招2208204206环境设计本科定向2219216217.5平顶山学院2016年河南一志愿艺术本科A段统考专业录取分数线专业名称科类计划数最高分录取分平均分播音与主持艺术文科147…

计算机cnc编程入门,数控车床编程入门自学方法与步骤,内容详细,值得一看!...

数控车床编程入门自学的内容与步骤&#xff1a;一般来讲&#xff0c;分析零件图样工艺处理&#xff1a;加工工艺分析&#xff0c;编程人员首先要根据零件图纸入技术要求&#xff0c;对零件的材料、形状、尺寸、精度和热处理要求等&#xff0c;进行加工工艺分析&#xff0c;合理…

香港计算机课程,香港计算机科学专业学什么?开设了哪些课程

香港中文大学并行及分布式系統高级专题 Advanced Topics in Parallel/ Distributed Systems软件系统专题 Advanced Topics in Software Systems数据库系统高级专 Advanced Topics in Database Systems理论计算机科学专题 Topics in Theoretical Computer Science人工智能高级专…