monkey测试之基础篇(2018.4.26更新)

    最近一直在看关于自动化测试的文章和工具,这是之前学习monkey的一些知识,想总结一下,方便以后查看,当然也可以提供一些参考。monkey 适合做压力测试,我们可以发送命令让它自己运行,并且指定运行动作的次数,下面这些是我总结的命令行:

 

1、有多台设备连接时,指定一个设备:
adb -s devicesname shell
2、重启abd.exe:adb start-server
3、结束adb:adb kill-sever
4、安装:adb install c:/xxx.apk
5、卸载:adb uninstall apk

 

使用adb查看连接的设备:adb devices
进入shell:adb shell
查看所有可以使用monkey的应用程序包:ls data/data
对某一应用程序包进行monkey测试:monkey -p packagename -v 500(表示500次随机事件流)


将monkey运行的日志重定向到log.txt中:
在cmd命令行中输入:adb shell monkey -p packagename -v 500 文件所在位置(D:/log.txt)


命令:
-p  指定运行的应用程序的包名
eg:monkey -v 500  将运行所有的应用程序
    monkey -p com.when.coco -p com.example.hello -v 500 只运行指定的两个应用程序
 
-v 指定反馈信息的级别,有三个级别(详细程度)
level 1:  adb shell monkey -p packagename -v 500   
level 2:  adb shell monkey -p packagename -v -v 500  
level 3:  adb shell monkey -p packagename -v -v -v 500  


-s  指定随机序列生成的值,可以保证测试所产生的随机序列相同
  adb shell monkey -p packagename -v 500 


--throttle(毫秒)指定操作间的时延
adb shell monkey -p packagename --throttle -v 500


--ignore-crashes 指定程序奔溃时,继续发送monkey命令直至时间数目达到指定数目
adb shell monkey -p packagename --ignore-crashes -v 500


--ignore-timeouts 指定应用程序发生ANR错误时(application no responding)继续运行monkey,直到事情计数结束
adb shell monkey -p packagename --ignore-timeouts -v 500


--ignore-security-exceptions 指定应用程序发生许可错误(证书许可,网络许可)继续发送monkey命令,直到计数结束
adb shell monkey -p packagename --ignore-timeouts -v 500


--kill-process-after-error 指定应用程序发生错误时,应用程序停止保持在当前错误的状态


一共有9个事件:
--pct {事件类型} {事件百分比}:
触摸事件百分比:--pct-touch  20(表示触摸事件为20%) --0
动作事件百分比:--pct-motion                         --1
轨迹事件百分比:--pct-trackball                      --2
基本导航事件百分比:--pct-nav                        --3
主要导航事件的百分比:--pct-majornav                 --4
系统按键事件:-pct-syskeys                           --5
启动事件:-pct-appswitch                             --6
键盘翻转事件:--pct-flip                           --7
其他事件的百分比:--pct-anyevent 100                 --8
adb shell monkey --pct-anyevent 50 -pct-appswitch 50 -v 500
 
1、monkey -p com.yourpackage -v 500 简单的输出测试的信息。
2、monkey -p com.yourpackage -v -v -v 500  以深度为三级输出测试信息。
3、monkey -p com.yourpackage --port 端口号 -v 为测试分配一个专用的端口号,不过这个命令只能输出跳转的信息及有错误时输出信息。
4、monkey -p com.yourpackage -s 数字 -v 500 为随机数的事件序列定一个值,若出现问题下次可以重复同样的系列进行排错。
5、monkey -p com.yourpackage -v --throttle 3000 500 为每一次执行一次有效的事件后休眠3000毫秒。

 

在此之前需要配置好环境,SDK的环境!!!

1、运行环境要求 
1)Java SDK,AndroidSDK,配置adb 
 
2、mac系统安装adb(安装Android-platform-tools) 
1)brew tap caskroom/cask 
2)brew cask install android-platform-tools 

 

4、mankey脚本 
adb shell monkey -p com.xxx.xxx(被测应用包名) --pct-touch 30 --pct-motion 30 --pct-nav 10 --pct-majornav 15 --pct-appswitch 10 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --throttle 200(每个时间之间的间隔,单位ms) -s 123456 -v 6000(monkey事件的次数) >~/Downloads/crash.txt 
 

 

 

 

<think>好的,我现在要帮用户解决如何对两个应用进行Monkey测试的问题。首先,我需要回忆一下Monkey测试的基本步骤和相关命令。用户提到了两个包名:com.wuba.zhuanzhuan和com.mipay.wallet,所以需要针对这两个应用执行测试。 首先,我应该确认用户是否已经配置好了ADB环境,因为这是执行Monkey测试的前提。如果用户没有安装ADB或者驱动,可能需要先指导他们安装,但根据用户的问题描述,可能已经具备基础环境,所以暂时先不深入这部分。 接下来,Monkey测试的基本命令结构是`adb shell monkey [选项] <事件数>`。要对特定应用测试,必须使用`-p`参数指定包名。但用户有两个应用,所以需要多次执行命令,每次指定一个包名,或者在一个命令中使用多个`-p`参数。不过,Monkey的`-p`参数每个只能指定一个包名,还是可以多个?这里可能需要确认。根据我的记忆,每个`-p`只能跟一个包名,所以要测试两个应用,需要分别执行两次命令,或者在一个命令中连续使用两个`-p`参数。不过实际上,Monkey的文档说明,每个`-p`用于指定一个允许的包,多个`-p`可以同时使用。例如,`adb shell monkey -p com.pkg1 -p com.pkg2 ...` 这样会允许Monkey在两个应用之间切换活动。但用户可能希望分别对每个应用单独测试,因为同时测试两个应用可能会导致事件分散,不符合测试需求。所以可能需要建议用户分别对每个包执行测试。 然后,事件数的设定,通常建议先进行较少的测试,比如1000次事件,观察应用是否崩溃或无响应。之后再增加事件数量进行更全面的测试。用户可能需要调整这个数值,所以应该在步骤中说明。 另外,常用的选项包括`--throttle`设置事件之间的延迟,模拟用户操作间隔,比如500毫秒。还有`--ignore-crashes`和`--ignore-timeouts`让测试在崩溃或ANR后继续执行,以及`-v`用于日志详细程度。这些都需要在命令中体现。 生成测试报告方面,用户可能需要将日志输出到文件,方便后续分析。因此,使用`> monkey_log.txt`将日志保存下来。 现在,需要将这些步骤整合成清晰的指导,分步骤说明,每个步骤对应一个命令或操作。同时,要确保命令正确,比如包名是否正确,用户需要替换为自己的包名,但用户已经提供了具体的包名,所以可以直接使用。 另外,用户提供的引用内容中,引用[1]提到了Monkey命令的基本配置,引用[2]是关于查找包名的方法,但用户已经知道包名,所以可能不需要这部分,但可以作为参考提及,比如如何确认包名是否正确,或者推荐用户使用七麦数据等工具验证包名。 最后,用户可能需要注意事项,比如测试前确保应用已安装,设备已连接,以及如何终止测试等。例如,使用`adb shell kill`命令结束进程。 在生成相关问题的时候,需要考虑用户可能进一步的问题,比如如何自动化测试、如何分析日志、Monkey的高级参数设置,或者同时测试多个应用的策略等。</think>### 分步指南:对两个应用进行Android Monkey测试 #### 步骤1:连接设备并验证ADB环境 确保设备已通过USB连接或无线调试连接,并执行以下命令确认设备识别成功: ```bash adb devices ``` 若设备列表中显示设备ID(如`ABCDEF123456`),则环境正常[^1]。 #### 步骤2:单独执行Monkey测试(推荐) 由于Monkey测试需针对单个应用行为模拟,建议分别对两个应用执行测试。 1. **测试`com.wuba.zhuanzhuan`** 执行命令(示例:1000次随机事件,事件间隔500毫秒): ```bash adb shell monkey -p com.wuba.zhuanzhuan --throttle 500 --ignore-crashes --ignore-timeouts -v 1000 > zhuanzhuan_monkey.log ``` - `--throttle 500`: 事件间隔500毫秒 - `--ignore-crashes`: 崩溃后继续测试 - `> zhuanzhuan_monkey.log`: 保存日志到文件 2. **测试`com.mipay.wallet`** 修改包名后执行: ```bash adb shell monkey -p com.mipay.wallet --throttle 500 --ignore-crashes --ignore-timeouts -v 1000 > mipay_monkey.log ``` #### 步骤3:同时测试两个应用(可选) 若需模拟跨应用操作,可通过多个`-p`参数指定允许的包名: ```bash adb shell monkey -p com.wuba.zhuanzhuan -p com.mipay.wallet --throttle 500 -v 5000 > combined_monkey.log ``` ⚠️ 注意:此方式可能导致事件分散,需根据测试目标谨慎选择。 #### 步骤4:监控测试过程 - 实时查看设备屏幕或通过`adb logcat`观察日志: ```bash adb logcat | grep "Monkey" ``` - **终止测试**:若需强制停止,执行: ```bash adb shell kill $(adb shell ps | grep monkey | awk '{print $2}') ``` #### 步骤5:分析测试结果 检查日志文件中的以下关键词: - `CRASH`: 应用崩溃 - `ANR`: 应用无响应 - `Exception`: 未捕获异常 --- ### 关键参数说明 | 参数 | 作用 | 示例值 | |--------------------|-----------------------------|-------------| | `-p <包名>` | 指定测试的应用包名 | `-p com.example` | | `--throttle <毫秒>` | 事件间隔时间 | `--throttle 300` | | `-v` | 日志详细级别(可叠加,如`-v -v -v`) | `-v` | | `--ignore-crashes` | 崩溃后继续测试 | 无需赋值 | --- ### 注意事项 1. **包名验证**:可通过以下命令确认应用已安装: ```bash adb shell pm list packages | grep "wuba\|mipay" ``` 若未找到,参考[七麦数据](https://www.qimai.cn)核对包名[^2]。 2. **测试前准备**: - 关闭无关应用以减少干扰 - 确保应用处于可操作主界面 3. **性能影响**:Monkey测试可能占用较高CPU/内存资源,建议在真机非充电状态下执行。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值