安卓app测试之Monkey测试
一、Monkey特点
1、运行时机:一般是产品稳定后 首轮功能测试完成的夜间进行
2、需要知道packageName
3、目的:主要测试产品是否存在崩溃问题和ANR问题。
二、获取包名的两个方法
首先安装到模拟器上想获取的包:adb install <带路径的包名>
1、通过adb logcat获取
adb shell “logcat | grep START”【如果直接使用不出现log,可以先进入linux命令:adb shell,然后再执行:logcat | grep START】
然后打开apk ,就可以出现包名

2、aapt dump badging apk名称

三、Monkey的基本命令
1、标准monkey命令:adb shell monkey -p com.android.calculator2 -v 50
-p:packageName
-v:日志级别
50:事件数
2、adb shell monkey -p com.android.calculator2 -v -v --pct-touch 50 --throttle 600 88
--pct-touch 50 设置整个过程中点击操作所占的百分比
--throttle 600每个事件间隔600ms
3、adb shell monkey -p packagename --throttle 500 --ignore-crashes --ignore-timeouts --ignoresecurity-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>c:\monkey_test.log
--ignore-crashes 用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果 使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
--ignore-timeouts 用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是 否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计 数完成。
--ignore-security-exceptions 用于指定当应用程序发生许可错误时(如证书许可,网络许可等), Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误Monkey依然会发送事件,直 到事件计数完成。
--kill-process-after-error 用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应 用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时 的状态,系统并不会结束该应用程序的进程)。
--monitor-native-crashes 用于指定是否监视并报告应用程序发生崩溃的本地代码
四、Monkey的日志级别
参数: -v 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
1、日志级别 Level0
示例 adb shellmonkey -p com.htc.Weather –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
2、日志级别 Level 1
示例 adb shell monkey -p com.htc.Weather –v -v 100
说明 提供较为详细的日志,包括每个发送到Activity的事件信息
3、日志级别 Level 2
示例 adb shell monkey -p com.htc.Weather –v -v –v 100
说明 最详细的日志,包括了测试中选中/未选中的Activity信息
五、Monkey的事件类型
1、--pct-touch:指定触摸事件的百分比,如:--pct-touch 5
2、 --pct-motion (滑动事件)
3、 --pct-trackball (轨迹球事件)
4、 --pct-nav (导航事件 up/down/left/right)
5、 --pct-majornav (主要导航事件 back key 、 menu key)
6、 --pct-syskeys (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)
7、 --pct-appswitch (activity之间的切换)
8、--pct-anyevent (任意事件)
六、Monkey的参数 -s
参数: -s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 示例:
Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100
Monkey 测试2:adb shell monkey -p com.htc.Weather–s 10 100 两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列 操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可 以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;
七、Monkey的日志分析
1、按关键字进行搜索,ANR、Exception、Crash、Error。
2、找到有问题的地方,查看上下文信息。
3、注意第一个switch上下文信息。
4、查看monkey里面出错前的一些事件动作,可以手动执行该动作。
5、进行问题复现,可以使用之前执行的monkey命令在执行一遍,注意seed值要一样。
【测试结果分析】
(1)、ANR问题(程序无响应):在日志中搜索“ANR"(application no response)
(2)、闪退问题:在日志中搜索"crash"
(3)、异常:搜索"exception"
(4)、强制退出:搜索"force closed"
八、Crash专项
1、安装可以引起Crash的App
2、执行压力命令
3、析取Crash的Exception信息
案例: 执行压力测试,并且生成monkey_test.log日志文件。
#adb shell monkey -p cn.besttest.crashtest -v 100 >E:\monkey\monkey_test.log
#查看E盘文件夹下已经生成了monkey_test.log。

#打开文件,进行crash分析
九、ANR专项
步骤同上
1、安装可以引起ANR的App
2、执行压力命令
3、析取ANR的Exception信息
1、查看monkey的log
2、/data/anr/traces.txt
3、查看logcat日志 ANR
安卓app测试之Monkey测试的更多相关文章
- 安卓app测试之Monkey日志分析《转载》
安卓app测试之Monkey日志分析 链接:https://www.cnblogs.com/wuzm/p/10965762.html
- 安卓app测试之Monkey日志分析
转:原文:https://blog.csdn.net/a136332462/article/details/76066909 一.一般测试结果分析-搜索关键字: 1.无响应问题可以在日志中搜索 “A ...
- APP测试之Monkey测试
一.简介 1.什么是Monkey测试? Monkey testing,也有人叫做搞怪测试.就是用一些稀奇古怪的操作方式去测试被测试系统,以测试系统的稳定性.Monkeytest,一般指这样的测试活动, ...
- 安卓app测试之cpu监控
安卓app测试之cpu监控,如何获取监控的cpu数据呢? 一.通过Dumpsys 来取值 1.adb shell dumpsys cpuinfo 二.top 1.top -d 1|grep packa ...
- 安卓手机APP压力monkey测试
一.Monkey概述 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行 ...
- android测试之monkey测试
1.首先安装SDK包 2.配置环境变量 3.打开CMD命令窗口,查看是否安装成功 命令:adb version 4.要做monkey测试的安卓包名,获取方式如下(必须启动要获取报名的app) 1.ad ...
- 安卓APP测试之使用Burp Suite实现HTTPS抓包方法
APP的测试重点小部分在APP本身,大部分还是在网络通信上(单机版除外).所以在安卓APP测试过程中,网络抓包非常重要,一般来说,app开发会采用HTTP协议.Websocket.socket协议,一 ...
- 手机APP测试之monkey
Monkey测试是一种为了测试软件稳定性.健壮性的快速有效的方法,Monkey程序由Android系统自带,使用Java语言写成.本此由于公司APP产品所需,用monkey进行稳定性测试,下面将本次使 ...
- App测试之Monkey压力测试
随机推荐
- c#如何设置成:【当前打开的项目是什么,就默认它为启动项目】,不然新添或打开别的项目都要设置一次启动 [原创]VS2012中将当前选定项目做为启动项
主菜单→[工具]→[选项]→[项目和解决方案]→[生成并运行],选中“对于新解决方案,使用当前选定的项目作为启动项目” 应该是右键单击解决方案,点击属性打开,选中“当前选定内容”那一项,就可以把你正在 ...
- Android多媒体-MediaPlayer唤醒锁及音频焦点
MediaPlayer的唤醒锁 一般使用MediaPlayer播放音频流,推荐使用一个Service来承载MediaPlayer,而不是直接在Activity里使用.可是Android系统的功耗设计里 ...
- web container和spring container之间的关系
1 tomcat是一个web container,它提供java web应用的运行环境,因为它实现了好多java ee规范,比如java Servlet.JSP等,也就是说,没有它,java web应 ...
- luogu2540 斗地主增强版
题目大意 给你一副手牌,没有飞机带翅膀,按斗地主的规则,求将所有牌打出的最少次数. 题解 先不考虑顺子 我们已经知道花色对牌没有影响,那么如果不考虑顺子,每个牌具体是什么数字我们也用不着知道,我们关心 ...
- RK3288获取摄像头的Sensor ID【原创】
平台信息:内核:linux3.0.68 系统:android/android6.0平台:RK3288 作者:庄泽彬(欢迎转载,请注明作者) 邮箱:2760715357@qq.com 说明:通过I2C总 ...
- how to modify vs2017
https://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio 直接用everything搜索vs_install ...
- 6章 Models
传统的MVC结构中,有模型这么一个概念.Django中,Models又是怎么一回事呢? 刚才生成的这些乱七八糟的数据迁移就是Django自带的一些应用 INSTALLED_APPS = [ 'djan ...
- C#实现的鼠标钩子
http://www.oschina.net/code/snippet_104607_45975 使用 Socket 获得网页内容,可以捕获错误页的内容 HttpClient http://www.o ...
- (进制)51NOD 1057 N的阶乘
输入N求N的阶乘的准确值. Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120解:这其实是MOD进制,将一个 ...
- Agar.io 简单但是有趣的网页游戏
攻略,进阶 上榜第一次 (有点水,九百多分) 上榜第二次 (完成四杀,逆袭上榜) 上榜第三次 (忘写名字,自己补上) 上榜第四次 (人生巅峰!) 上榜第五次 (踩了狗屎运,上榜这么容易了?收了一个小 ...