手机monkey测试BUG重现及解决方法
目录
1.1 Monkey测试简介...1
1.2 Monkey程序介绍...1
1.3 Monkey命令的简单帮助...2
1.4 Monkey命令参数介绍...2
1.5 Monkey测试步骤...2
1.6 Monkey测试问题分析及处理技巧...3
1.7 Monkey测试注意事项...3
1.8 Monkey测试命令...3
1.9 Monkey测试问题分析...4
1.1 Monkey测试简介
Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。
1.2 Monkey程序介绍
1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;
2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径 是:/system/bin/monkey;这样就可以通过在CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。
1.3 Monkey命令的简单帮助
要获取Monkey命令自带的简单帮助,在CMD中执行命令:
adb shell monkey –help
1.4 Monkey命令参数介绍
可参考MTK相关文档。
Android_Monkey_Test_SOP.pdf
Monkey_Test_SOP_Customer_MT6572_4.x .pdf
1.5 Monkey测试步骤
步骤1:下载user版本后手动导入APR工具。
步骤2:导入完毕后重启手机,连接usb线,运行logServerInstall.bat。
步骤3:运行后手机会自动重启,重启完毕后手机端键入*#*#2012#*#*,能够进入对应界面即为apr安装成功。
步骤4:手机连接电脑,开启adb:键入adb shell ps logserver,查询logserver的PID值,然后键入adb shell kill PID(logserver PID)。
步骤5:再次键入adb shell ps logserver查看logserser已被kill掉。
步骤6:手机连接电脑,开启USB存储,在手机内存(或SD卡)中,新建一个名为whitelist的txt文件,该文件中输入想跑的模块名,每个模块输入后回车输入下一个,若对模块名称不熟悉可参考monkey测试报告,内有模块排练信息。
例如:com.chinamobile.cmccwifi
com.cmcc.mobilevideo
com.hisunflytone.android
步骤7:上一步完成后,手机端进入对应的apk模块,如:whitelist中想跑新浪微薄,uc浏览器的话,手机端分别进入这些应用,把首次使用提示框点掉,记得勾选上永远不提示的选项以免跑monkey无法正常测试。
步骤8:手机连接电脑,打开adb。
步骤9:键入adb shell,回车后键入
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 200000 >/mnt/sdcard/Stability_base.txt
步骤10:此时,既能正常开始monkey,并记录开始时间。
步骤11:Monkey结束后手机连接电脑,运行getDataLog.bat,生成 datalog。连接usb存储,在是手机上找到Stability_base.txt文件,查看最后修改时间,该时间即为monkey运行最后结束时间。
1.6 Monkey测试问题分析及处理技巧
Monkey测试主要是测试负责,研发这边配合测试进行问题复现及给出测试建议,重点工作还是monkey问题分析,包括冻屏、死机重启、crash等。由于这类问题分析起来比较麻烦,所以一般如果没有相关分析经验可以先定位问题,准备好相关的log配合MTK分析或者找部门内部有相关经验的研发人员配合分析。
1.7 Monkey测试注意事项
注意事项:
1. 测试关闭所有网络开关(wifi及数据连接)
2. 开启安全设置下的未知来源
3. 手机连接电源充电
4. 若有有关于音频的模块,请插入耳机避免影响其他同事
5. 若测试信息模块时需要安装测试工具testwizard.apk,自动生成通话记录,短信(数量为10)
6. 若测试文件管理器需要在T卡内存放有图片/音乐/apk/视频/txt这类文件
7. 测试图库是需要T卡内存放100个图片及视频的,同样音乐和视频播放器也需要存放不少于50个片源
8. 测试电子邮件的需要新建两个以上的账户
9. 测试前运行一遍手机上方带有的首次提示的说明,如输入法,文件夹窗口,apk提示语等
10. 若测试时遇到问题想重新开始测试,必须拔掉电板后重新键入adb指令重新开始。
1.8 Monkey测试命令
1. 跑ALL apk命令
monkey --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 800 -v -v -v 200000>/mnt/sdcard/Stability_all.txt
2. 跑白名单命令
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 200000 >/mnt/sdcard/Stability_base.txt
3. 跑黑名单命令
monkey --pkg-blacklist-file /mnt/sdcard/blacklist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 200000 >/mnt/sdcard/Stability_base.txt
1.9 Monkey测试问题分析
Monkey测试log为标准MTK log,常见问题也是以下几种:Crash、NE、KE、ANR等。
测试前首先关闭MTK log,将sdcard卡和手机内存中的旧的log清理赶紧,最相关干扰文件一并清理干净,否则后期取出log很容易造成困扰。
注意事项:
1)每个模块使用3台手机测试,测试完成后恢复出厂设置在测试其他模块,避免残留文件影响其他模块测试结果.
2)测试部分需要资源的模块,测试前需要先导入资源.
信息:导入500条短信
联系人:导入500个联系人
音乐:导入100个歌曲
视频:导入20个视频
浏览器:插入有钱的SIM卡,开启数据连接,连接WIfi
FM收音机:插入耳机
Email:登录邮箱帐号
3)部分模块第一次进入有使用说明或者协议说明,需要手动点击完成后在测试.
应用市场:勾选不再提醒,完成所有提示确认
主题:勾选不再提醒,完成所有提示确认
相机:勾选不再提醒,完成所有提示确认
图库:勾选不再提醒,完成所有提示确认
......
因为应用太多就不列举出来了,每个模块测试前先手动进入查看,完成所有导航在进行测试.
Monkey测试命令
1.
跑ALL APK命令:(>2小时)
monkey --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 30000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
跑单个APK命令(>6小时):
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 90000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
跑单个APK命令(>2小时):
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 30000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
2.
跑ALL APK命令(>12小时):
monkey --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 180000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
跑ALL APK命令(>12小时)加入黑名单:
monkey --pkg-blacklist-file /mnt/sdcard/blacklist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 180000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
跑单个APK命令(>12小时):
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 180000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
3.
跑ALL APK命令(>24小时):
monkey --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 360000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
跑ALL APK命令(>24小时)加入黑名单:
monkey --pkg-blacklist-file /mnt/sdcard/blacklist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 360000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
跑单个APK命令(>24小时):
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 360000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
注:跑单个APK时一定记住在手机存储根目录里面放一个白名单文件:whitelist.txt,txt文本写入要测的模块APK应用的包名即可,表示只跑指定apk,如果是在手机根目录中放blacklist.txt,填写相应包名,指跑除blacklist.txt上指定应用的所有应用。Monkey跑完后检查log里面是否有crash、anr(在根目录下的/mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt)
其实仅仅就是拿到手机后,将/mnt/sdcard放入whitelist.txt或则blacklist.txt,里面放上应用包名,然后adb shell---》mokey命名,就可以了
命令解释:
参数: --throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
参数: --ignore-crashes
用于指定当应用程序崩溃时(Force & Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直
到事件计数完成。
参数: --ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
参数: --ignore-security-exceptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
参数: ignore-native-crashes
忽略本地代码导致的崩溃。设置忽略后,Monkey将执行完所有的事件,不会因此停止
参数: --monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码。
参数: -s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。示例:
Monkey测试1:adb shell monkey -p com.htc.Weather –s10 100
Monkey 测试2:adb shell monkey -p com.htc.Weather–s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;
参数: -v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
日志级别 Level 0
示例 adb shell monkey -p com.htc.Weather –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
日志级别 Level 1
示例 adb shell monkey -p com.htc.Weather –v -v 100
说明 提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别 Level 2
示例 adb shell monkey -p com.htc.Weather –v -v –v 100
说明 最详细的日志,包括了测试中选中/未选中的Activity信息
手机monkey测试BUG重现及解决方法的更多相关文章
- 解决IE下载 apk/ipa 变成zip:Android 手机应用程序文件下载服务器 配置解决方法
解决IE apk/ipa变成zip:Android 手机应用程序文件下载服务器 配置解决方法 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Da ...
- android手机出现sqlite3 not found的解决方法
解决方法如下: 1.如果/system目录为不可读写的,需要挂载为读写: C:\Users\easteq>adb shell root@android:/ # mount -o remount, ...
- CSS - 移动端 常见小bug整理与解决方法总结【更新中】
常见问题总结与整理系列~ 1. border一像素在手机上看着有点粗的问题: 原理是因为:1px在手机上是使用2dp进行渲染的.换成 border: 0.5像素?是不行的! 解决方法: 把border ...
- 细数IE6的一串串的恼人bug,附加解决方法!
1. li在IE中底部3像素的BUG 解决方案:在<li>上加float:left:即可解决 2. IE6中奇数宽高的BUG. 解决方案:就是将外部相对定位的div宽度改成偶数.高度也是一 ...
- bug集合及其解决方法
点击查看原文 1. java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 27 ...
- 手机WebAPP设计注意事项和解决方法
1. 基本手机网页设计 1.1 wap端的网站表头 wap端的网站,写的时候首先注意表头,因为是手机端的,所以和我们平常用的web端页面的不一样,表头为: 1.2 尽量少使用水平滚动. 水平滚动除了比 ...
- Tomcat的测试页打开空白页的解决方法
win7下安装tomcat 9简要步骤: 1.下载Tomcat 到Tomcat官网https://tomcat.apache.org/download-90.cgi下载Tomcat 9.0>Co ...
- 360wifi: 手机锁屏360wifi掉线的解决方法
如遇到iphone锁屏断网的情况,按照以下操作步骤可以解决一部分用户的问题 (该问题并不是360WifFi问题,与苹果机制有关)如有安卓手机掉线,请确保手机连接其他Wifi并不会掉线,然后尝试粉色字体 ...
- 布局的诡异bug合集+解决方法(更新中)
1.元素内部子元素的margin的边界线基准点的问题 论如何生硬起名字!!我反正已经被自己总结的题目绕晕了... “演员”介绍: 外层父元素:蓝色边框: 内部子元素:绿色区域: 粉红色区域是元素内部绿 ...
随机推荐
- IDEA快速定位错误快捷键
- WhaleCTF之web-Find me
WhaleCTF之web-Find me 前往题目 Where is the flag?这是给我提示吗? 没思路,看看源码,说不定有惊喜 哇,在这里啊,得到flag~ flag:{This_is_s0 ...
- Luogu P1312 Mayan游戏(搜索)
P1312 Mayan游戏 题意 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个\(7\)行\(\times 5\)列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必 ...
- 获取MMSQL数据库表信息
SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号=a.colorder, 字段名=a.n ...
- C++ string(STL)
发现字符串问题中 string 好厉害- string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c ...
- LintCode_44 最小子数组
题目 给定一个整数数组,找到一个具有最小和的子数组.返回其最小和. 注意事项 子数组最少包含一个数字 样例 给出数组[1, -1, -2, 1],返回 -3 思路 动态规划解决 C++代码 int m ...
- WPF:数据绑定--PropertyChangeNotification属性更改通知
PropertyChangeNotification属性更改通知 实现效果:1.拍卖金额自动随属性值变化而通知界面绑定的值变化. 关键词 : INotifyPropertyChanged Obse ...
- 让footer始终待在页面底部
1.把html和body的height属性设为100%;保证content的高度能撑满浏览器; 2.把#content的高度也设置为100% ,但是这里我们使用了“min-height”属性,而不是的 ...
- git仓库远程连接GitHub
1 先下载git for windows 然后一直点下一步安装. 2 安装之后,选择git gui.生成ssh 链接 git 公钥. 用命令也可以: $ ssh-keygen -t rsa -C &q ...
- 【洛谷】【USACO】P1118 数字三角形
题目描述 FJ and his cows enjoy playing a mental game. They write down the numbers from 1 to N (1 <= N ...