Monkey测试

Money介绍

顾名思义,Monkey就是猴子,  Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。  猴子什么都不懂, 只知道乱敲
通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常

Monkey用来做什么

Monkey 主要用于Android的稳定性测试,自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash(崩溃).

Monkey程序介绍

(1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar;   
(2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;  
(3)Monkey 命令启动方式:    
a)可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试          
b)在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试          
c )  在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器 

Monkey 命令 基本参数介绍

1.使用monkey测试手机所有程序

adb shell monkey 100 执行monkey测试100次 针对rom测试或者

2.-p <允许的包名列表>

adb shell monkey -p 包名  100      
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包, monkey将允许系统启动设备中的所有app。  
指定一个包:

 

3.显示日志详细程度

用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示: 
Level 0: adb shell monkey -p 包名 -v 30  // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息 

 

Level 1:adb shell monkey -p 包名 -v  -v 30    // 提供较为详细的日志,包括每个发送到Activity的事件信息

 

Level 2:adb shell monkey -p 包名 -v  -v  -v 30     // 最详细的日志,包括了测试中选中/未选中的Activity信息

 

4.将log信息写到本地

adb shell monkey -p 包名 -v 30 >D:\2.log

 

5.-s 随机数种子

用于指定伪随机数生成器的seed值,如果seed值相同,则两次Monkey测试所产生的时间序列也相同。
adb shell monkey -s 10 100

6.--throttle <毫秒>

用亍指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的 生成和发送消息。

例:adb shell monkey -p com.example.login --throttle 300 100 
表示执行100个伪随机用户事件流,事件间隔为300毫秒。
注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。

7.--pct-touch <percent>触摸事件

调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)
–pct-touch:触摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和Up(ACTION_UP)的坐标临近,但并非相同。
如:adb shell monkey --pct-touch 67 -v 10
表示执行10个伪随机用户事件流,并调整其中触摸事件的百分比为67%。
注:此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。

 

8.--pct-motion <percent>  

调整手势事件motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)
–pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move(ACTION_MOVE)。
如:adb shell monkey --pct-motion 67 -v 10
表示执行10个伪随机用户事件流,并调整其中动作事件的百分比为67%。
注:这里的移动是直线滑动

Event percentages:
0:--pct-touch//touch
events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)
1:--pct-motion//motion
events percentage手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯
2:--pct-pinchzoom//pinch
zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作
3:--pct-trackball//trackball  即单纯的Move(ACTION_MOVE)
events percentage轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)
4:--pct-rotation//screen
rotation events percentage屏幕旋转百分比,横屏竖屏
5:--pct-nav//nav 基本导航事件。即来自于方向输入设备的上下左右操作。
events percentage”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有
6:--pct-majornav//major 即Navigation Bar的确认,菜单,返回键等
nav events percentage”主要”导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)
7:--pct-syskeys//system(key)
operations percentage”系统”按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)
8:--pct-appswitch//app
switch events percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
9:--pct-flip//keyboard
flip percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回
10:--pct-anyevent//anyevents  该事件可能包含其他上述事件。
percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。

9.--ignore-crashes

作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
正常操作,不忽略异常
1.   -p后面接着的对应的包名,对具体某个app测试
2.   -s后面是对应的种子数,好像就是操作步骤,一般设置相同的种子数目的是复现bug
3.   --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。
4.   -v 指的是Monkey测试时打印log级别。
5.   100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是真机,一般设置在500000次。
6. --throttle-时间 ,设置事务之间的延迟等待时间,单位是毫秒
7.>路径,设置日志存储路径

Monkey异常分析

一般我们可以一次发送5万次随机事件的请求,每个请求之间的间隔为150毫秒,测试大约会进行40min,完成以后就可以查看日志。 
日志中可能的错误:
1.程序奔溃,crash (ctrl+f搜索)
2.程序无响应,ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是为了屏蔽掉一些无效信息)
3.其他问题:在日志中搜索”Exception”。
Monkey 执行中断, 在log最后也能看到当前执行次数

手机兼容性测试

Android App兼容性测试,是一个比较重要的App评价内容,
说到测试阶段,兼容性测试主要是对App在各类机型上的兼容、适配等情况进行测试。搞清楚这一阶段的测试重点后,因此,Android App在进行兼容性测试前,一定要做好其前序测试内容,否则兼容性测试效果将会较差。

机型配置问题

Android兼容测试一定要做到宽范围覆盖,如果做不到这个,那么就违背了兼容性测试的目标——测试App在各类机型、系统上的运行是否兼容、适配。

因此,兼容性测试必须要在各个机型、系统上对App进行运行、测试,查看相关UI是否适配、功能是否正常。所以,必须要为兼容性测试配备尽可能多的机型。这是不是意味着,你的公司要去购置各类机型设备?当然不是。对于一般的公司或者开发者,这将会是一大笔开销,为了节约资金而造成进行覆盖率较低的话,则失去了兼容性测试的意义。另外,这也是没必要的,因为往往你就一个或两三个App,为了这少量App测试,而去购置如此大量的设备,无疑是一种资源浪费。除此,还有一个原因,将在兼容性测试如何展开里去说。除此,机型量的多少也是一个权衡的过程,目前,通用的兼容性测试一般覆盖Top100-300的机型,对于实在是小量机型或者老旧机型,用户量非常小,在一定程度上,是否需要覆盖则需要权衡,总的来说,Top排名的手机基本足够。

兼容性如何展开?

这是一个经验性的过程,可以去借鉴大型互联网公司的成熟App的测试方法。目前,无论是国际知名App,还是国内知名App,谷歌、Facebook,BAT等,他们都有大量的App对外推出,对于App兼容性要求非常高,因此,他们的做法是非常值得借鉴的。这些公司的兼容性测试,都有一个相同的解决方案,那就是自动化测试框架与平台的实现。通过浏览上述公司在各种大会公布的内容,或者通过论坛知识分享,都能看到,他们不仅有自己的测试实验室,拥有大量的手机,除此,还有一整套的自动化测试平台,来完成兼容性测试。

有哪些好用的App云测试平台?

目前对移动App的测试主要指的是下面几部分:
兼容性测试——App对不同手机、操作系统版本的兼容性测试,包括安装、启动、卸载等。
功能测试——遍历应用的每一个角落,查看应用的功能、逻辑是否正常,完整。
性能测试——应用的性能怎样,如启动时间、反应时间、CPU占用率,内存占用率等。
稳定性测试——在一定时间内对App进行持续地测试,测试App运行的稳定性。
网络场景测试——测试不同网络环境中App的运行状况,如2G&3G,弱网络等。

参考:

以下是国内几家主要的云测试平台:
Testin:Testin云测|全球领先的App及手游测试平台
Testin是国内较早涉足云测试领域的公司之一。Testin在云端部署了300多款1000多部测试终端,终端种类及数量都比较全面。支持Android与iOS系统。但目前仅少部分服务为免费,绝大多数服务为收费项目,故而使用成本较高,具体收费情况请查看官网的介绍。
腾讯优测:优测网-让测试更简单
腾讯优测是腾讯旗下的云测试服务平台,拥有超过1000款测试终端,机型数量庞大。但仅支持Android,暂不支持iOS系统。提供兼容性测试服务,不提供性能测试、功能测试及稳定性测试服务。另外,腾讯优测还提供“云手机”服务,开发者可以远程控制测试终端,实时查看App安装、运行效果。优测目前的功能为收费(新注册的用户可获得官方赠送的礼包),每天限制提交2次测试。
移动测试学习端口:https://wetest.qq.com/guide/learn-source
贯众云测试:贯众云测试
贯众云测试是中国移动旗下的云测试服务平台,目前拥有超过100款市面主流终端,支持Android及iOS系统。提供兼容性测试、功能测试、性能测试,稳定性测试(12小时)及网络场景测试服务(2G&3G&4G)。支持Appium脚本。缺点是终端数量较少,优点是功能较为全面,且基本功能都是免费,使用成本还是蛮低的。
百度MTC:百度移动云测试中心
百度MTC是百度开放平台旗下的移动云测试中心。提供超过500款热门机型,目前只支持Android系统,暂不支持iOS系统。提供的测试服务种类有兼容性测试、性能测试、功能测试。并且提供了脚本录制工具,类似Testin。但脚本录制工具更新速度较慢。百度MTC的服务目前为收费服务,具体收费情况请查看官网的介绍。
阿里MQC:MQC 阿里移动质量中心
阿里MQC是阿里巴巴旗下的移动测试平台。提供上百款测试终端,支持Android及iOS系统。提供兼容性测试、功能测试、性能测试以及稳定性测试(1小时)。测试脚本需使用Robotium或Appium测试框架编写,难度较高。MQC也提供了远程的真机调试,功能和腾讯优测类似,看来腾讯和阿里还真是一对儿冤家啊。

真机测试

注意:下载手机助手,换一根数据线

7.1. 第一步:让手机显示开发者选项

多次点击版本号,显示开发者选项

 

 

允许USB调试

若使用真机,用USB将手机和电脑连接,在手机端进行操作:
(1)选择USB连接方式为设备文件管理;
(2)设置->开启开发者选项->勾选‘USB调试’(真机和模拟器上皆需进行)。

检测连接设备

在终端中输入’adb devices‘,此时已连接设备列表下应存在设备序列号

<think>首先,用户的问题是关于“monkey 测试工具 测试框架 使用方法”。根据系统级指令,我需要使用中文回答,并遵循格式要求:行内数学表达式用$...$,独立公式用$$...$$,但我注意到这个问题涉及数学表达式,所以可能需要。但指令说“所有行内数学表达式”,所以如果出现,我会处理。 用户意图是查找与“monkey”相关的测试内容,涉及测试工具、测试框架或测试实践。参考提供的引用: - 引用[1]: 介绍Monkey测试工具在Android平台上的使用,通过命令行或脚本调用,指定参数如时间、事件频率等。 - 引用[2]: 解释Monkey测试通过模拟用户操作来测试应用程序的稳定性,强调其随机性和全面性。 - 引用[3]: 提供一个示例命令:monkey -p com.baidu.BaiduMap --throttle 500 -v -v -v 1000000 >/sdcard/monkey.log & logcat -v time >/sdcard/logcat.log &,并提到学习更多参数。 用户的问题具体是“monkey 测试工具 测试框架 使用方法”,所以我需要回答Monkey测试工具的使用方法。 系统指令要求: 1. 回答结构清晰,帮助用户逐步解决问题。 2. 尽量保证回答真实可靠。 3. 生成相关问题。 4. 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 另外,指令说“生成相关问题”,并在末尾有“§§相关问题§§”部分。 回顾我的角色:我是AI助手,应该基于知识和引用提供帮助。 构建回答结构: - 介绍Monkey测试工具:简要解释它是什么,基于引用。 - 详细说明使用方法:包括命令行参数、示例等。 - 确保使用中文。 - 在引用信息时添加引用标识。 - 最后,生成相关问题。 步骤: 1. **介绍Monkey测试工具**:基于引用[1]和[2],解释它是Android平台上的一个工具,用于模拟用户操作测试应用程序稳定性。 2. **使用方法**:详细描述如何使用,包括常见参数和示例命令。参考引用[3]的示例命令。 - 参数如:-p(指定包名)、--throttle(事件间隔)、-v(详细级别)、事件数量等。 - 提供示例命令。 3. **框架和实践**:用户提到“测试框架”,但Monkey本身是一个工具,是框架。我可以解释它如何融入测试框架,但基于引用,它主要是命令行工具。引用中没有提到框架,所以我会专注于工具的使用。 4. **添加引用**:当引用信息时,在句末添加[^1]、[^2]等。 5. **生成相关问题**:在回答末尾,添加“§§相关问题§§”部分,列出2-3个相关问题。 参考示例结构: - 先有标题或主题。 - 然后内容。 - 代码块(如果有)。 - 相关问题。 对于代码:用户问题涉及命令,所以我可以包括命令行示例,使用代码块格式。 最终回答结构: - 开头:简要介绍Monkey测试工具。 - 主体:逐步解释使用方法。 - 包括代码块示例。 - 结尾:相关问题。 确保回答真实可靠:基于提供的引用,我会添加额外信息,除非常识。引用是可靠的来源。 现在,草拟内容: **介绍**: Monkey测试工具是Android平台提供的一个命令行工具,用于模拟用户的随机操作来测试应用程序的稳定性。它通过发送随机事件序列来发现潜在的崩溃、ANR(Application Not Responding)等问题[^1][^2]。 **使用方法**: Monkey测试工具的使用主要通过ADB(Android Debug Bridge)命令行接口执行。基本命令格式为: ``` adb shell monkey [options] <event-count> ``` 常见参数包括: - `-p <package-name>`:指定要测试的应用程序包名。 - `--throttle <milliseconds>`:设置事件之间的延迟时间(毫秒)。 - `-v`:设置详细级别;多个`-v`增加详细程度(例如,`-v -v -v`为最高详细级别)。 - `--ignore-crashes`:忽略崩溃,继续测试。 - `--ignore-timeouts`:忽略ANR错误,继续测试。 - `<event-count>`:指定要发送的事件数量。 示例命令(参考引用[3]): ```bash adb shell monkey -p com.baidu.BaiduMap --throttle 500 -v -v -v 1000000 > /sdcard/monkey.log & logcat -v time > /sdcard/logcat.log & ``` 此命令测试百度地图应用,事件间隔500毫秒,详细级别最高,发送100万个事件,并将输出重定向到日志文件[^3]。 **步骤指南**: 1. 确保设备连接并开启USB调试。 2. 打开命令行终端。 3. 使用ADB命令执行Monkey测试。 4. 分析生成的日志文件以识别问题。 **最佳实践**: - 测试前备份数据。 - 监控设备资源使用情况。 - 结合Logcat日志分析。 **相关问题**: 在末尾添加。 添加引用标识:在相关句子后添加[^1]、[^2]、[^3]。 最后,生成相关问题,如: 1. Monkey测试的常见问题及解决方法? 2. 如何优化Monkey测试的效率? 3. Monkey测试与其他测试框架的比较?</think>### Monkey测试工具使用方法指南 Monkey测试工具是Android平台提供的一个命令行工具,主要用于模拟用户的随机操作来测试应用程序的稳定性。它通过生成随机事件序列(如点击、滑动、按键等)来模拟真实用户行为,帮助开发者发现潜在的崩溃、ANR(Application Not Responding)或性能问题[^1][^2]。Monkey工具本身是一个完整的测试框架,而是常用于自动化测试脚本或集成到CI/CD管道中,作为稳定性测试的一部分。以下我将逐步介绍其使用方法,确保内容基于可靠引用并结构清晰。 #### 1. **准备工作** - **环境设置**:确保已安装Android SDK,并配置好ADB(Android Debug Bridge)工具。连接Android设备或模拟器,开启USB调试模式。 - **获取包名**:使用命令 `adb shell pm list packages` 列出设备上所有应用的包名,找到你要测试的应用包名(例如,`com.baidu.BaiduMap`)。 - **备份数据**:测试前建议备份应用数据,以防随机操作导致数据丢失[^2]。 #### 2. **基本命令格式** Monkey测试通过ADB命令行执行,基本语法为: ```bash adb shell monkey [options] <event-count> ``` - `<event-count>`:指定要发送的事件数量(例如,1000表示1000个随机事件)。 - 常用参数说明(基于引用[1][^3]): - `-p <package-name>`:指定测试的应用包名(必需参数)。 - `--throttle <milliseconds>`:设置事件之间的延迟时间(毫秒),例如500表示0.5秒间隔,模拟用户操作节奏。 - `-v`:设置输出详细级别;多个`-v`增加详细度(如`-v -v -v`为最高级别,输出更多调试信息)。 - `--ignore-crashes`:忽略应用崩溃,继续测试。 - `--ignore-timeouts`:忽略ANR错误,继续测试。 - `-s <seed>`:设置随机种子值,用于复现相同测试序列。 - 其他参数:如`--pct-touch <percent>`调整触摸事件比例,可通过`adb shell monkey --help`查看完整列表。 #### 3. **示例命令及执行步骤** 参考引用[3],以下是一个完整测试示例,用于测试百度地图应用: ```bash adb shell monkey -p com.baidu.BaiduMap --throttle 500 -v -v -v 1000000 > /sdcard/monkey.log & logcat -v time > /sdcard/logcat.log & ``` - **命令解释**: - `-p com.baidu.BaiduMap`:测试百度地图应用。 - `--throttle 500`:事件间隔500毫秒。 - `-v -v -v`:最高详细级别输出。 - `1000000`:发送100万个随机事件。 - `> /sdcard/monkey.log`:将Monkey输出重定向到设备SD卡的日志文件。 - `& logcat -v time > /sdcard/logcat.log &`:同时捕获系统Logcat日志,用于后续分析崩溃或错误。 - **执行步骤**: 1. 打开命令行终端(如Windows的CMD或macOS/Linux的Terminal)。 2. 运行上述命令,测试会在后台执行。 3. 测试完成后,使用`adb pull /sdcard/monkey.log` 和 `adb pull /sdcard/logcat.log` 将日志文件拉到本地分析。 4. 查看日志文件,搜索关键词如`CRASH`、`ANR`或`Exception`来定位问题[^3]。 #### 4. **最佳实践和注意事项** - **测试时长控制**:事件数量`<event-count>`决定测试时长;例如,1000个事件约需1-5分钟,100万个事件可能需要数小时。建议从较小事件数开始,逐步增加[^1]。 - **稳定性分析**:Monkey测试的随机性能全面覆盖应用场景,但需结合日志分析工具(如Android Studio的Logcat)来诊断根本原因[^2]。 - **集成到测试框架**:虽然Monkey是独立工具,但可嵌入自动化框架如Jenkins或Appium。例如,编写Shell脚本定期执行Monkey测试,并邮件通知结果。 - **常见问题**: - 如果测试中断,检查设备连接或参数错误。 - 使用`--ignore-crashes`避免测试因崩溃提前结束。 - 对于复杂应用,调整事件比例(如`--pct-touch 50`)以模拟更真实的用户行为[^1][^3]。 #### 5. **总结** Monkey测试工具是Android应用稳定性测试的核心手段,通过简单命令行即可执行。它高效、易用,但需结合日志分析才能发挥最大价值。在实际测试中,建议定期运行Monkey测试作为质量保障的一部分[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值