当前位置:网站首页>【monkey】monkey测试入门
【monkey】monkey测试入门
2022-06-28 10:18:00 【春天的菠菜】
目录
一、安装
安装jdk8和android-sdk环境,网上自行搜索
验证安装结果
二、真机或者模拟器
注意打开开发者模式,以及usb调式
本文使用模拟器
三、基本命令
adb shell monkey + 行为参数 + ">" + {日志保存路径}
# 几个常用命令
1、adb shell monkey 100 monkey命令执行100次随机随机事件
2、adb shell monkey -跑p akp包名 1000 指定包名进行测试
3、adb shell monkey --ignore-crashes 100 忽略崩溃
4、adb shell monkey --ignore-timeouts 100 忽略超时
5、adb shell monkey -v 100 指定日志详细程度级别
6、adb shell monkey -s seed号 34432221000指定种子号
7、adb shell monkey --throttle 100 100 指定事件延迟100毫秒
8、adb shell monkey --pct-touch 10 1000 指定触摸事件百分比10%
9、adb shell monkey --pkg-whitelist-file/data/tmp/whitelist.txt 1000 白名单测试
小demo:
adb shell monkey -p com.xxx.myapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000 > d:\mylog.log
# com.xxx.myapp appPackage名称 adb shell pm list packages (-f:所有应用的包名,-3:非系统安装的包名)
案例场景:
需要控制monkey执行的时间,可以通过设置执行时长/事件发送延时,计算出需要执行的次数。
如:想要monkey运行24小时,每100毫秒发送一个事件。24*60*60*1000/100=864000(次)
adb shell monkey -p *** -v -v -v --ignore-crashes --ignore-timeoutss --throttle 100 864000 >D:\monkey.log
表示:此次monkey将会运行24小时
命令参数:
monkey的命令参数分为:
基础参数:-v 、-s 、-p 、--throttle等
调试选项:--ignore-crashes等
事件类型:--pct-touch等
(一)基础参数
1、最简单的monkey命令(monkey 100)
表示:在设备上,针对整个系统发送100个伪随机事件。
2、-v参数
用于指定反馈信息级别(信息级别就是日志的详细程度)总共分为3级,默认为-v(对应:level0)
-v:只提供启动提示、测试完成提示和最终结果等少量信息。
-v -v:较为详细的日志,包括每个发送到activity的时间信息。
-v -v -v:最详细的日志,包括测试中选中/未选中的activity信息。
注意:在monkey测试完成时,最后一定会有一个:monkey finished标识。
3、-p参数
在我们测试时,是针对具体的app进行测试的,所以在使用monkey测试时,我们需要提供具体的app包名给monkey,此时就需要用到参数-p。在-p后跟随app包名。
在测试时,可以不指定包名,此时monkey会在测试设备上随机启动app进行操作;如果只需要测试一个app,使用一个-p即可;如果有多个app同时测试,可以直接使用-p 包名1 -p 包名2指定具体要测试的app。
4、-s参数
种子值(seed),因为monkey是发送的是伪随机的事件流,但是如果两次seed值相同,那两次monkey测试所产生的事件序列也相同。(所以一般在测试时要记录seed值,以防出现无响应和crash,不容易验证。)
注意:-s需要跟在包名后,次数前
5、--throttle参数
设置执行操作的延迟时间(毫秒)--是指两个事件之间的间隔,如果没有指定此参数,会尽可能快的生成和发送事件。
(二)调试选项
1、--ignore-crashes
用于指定当应用程序崩溃时,Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,monkey依然会发送事件,直到事件计数完成。
2、---ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
3、--ignore-security-exceptionss
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
4、--kill-process-after-error
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。
5、--monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码
6、--hprof
该选项设置后,将会在monkey事件序列前后立刻生成report,大小为大于5MB,存储在/data/misc
(三)事件类型
monkey在发送伪随机事件时,是有不同的类型的。默认随机分配比例,也可以指定其百分比。如果不设置会是--pct-anyevent为100%,也就是纯随机事件;如果配置了其他参数,但是不够100%,余下的百分比部分也是--pct-anyevent事件。
具体事件类型分别为:
1:触摸事件--pct-touch
调整touch触屏事件的百分比,触碰事件就是指在屏幕上的一个单独位置的一次点击/抬起的事件。
2:滑屏事件--pct-motion(手势事件)
(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯)
3:轨迹球--pct-trackball
(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)
4:旋转(--pct-rotation)
旋转屏幕
5:导航--pct-nav
(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有)
6:主导航--pct-majornav
调整主要导航事件的百分比(如中间键、取消、确定或菜单引发的图形接口的动作)
7:系统按键--pct-syskeys
调整系统按键事件,如:home/back/startcall/endcall以及音量控制键等
8:app切换--pct-appswitch
调整启动activity的百分比,在随机间隔中,执行一个startActivity()方法调用,作为一种最大化的覆盖安装包的所有的activity的方法
9:键盘翻转(--pct-flip)
10:随机--pct-anyevent
调整其他类型的事件的百分比,比如按键或其他不太常用到的一些事件的百分比
四、 停止命令
1)adb shell ps
查找出com.android.commands.monkey的进程PID
2)杀掉进程
adb shell kill pid
五、测试结果分析
(一) 初步分析方法
Monkey测试出现错误后,一般的查错步骤为以下几步:
1、找到是monkey里面的哪个地方出错
2、查看Monkey里面出错前的一些事件动作,并手动执行该动作
3、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样--复现
(二)一般的测试结果分析:
1、 ANR问题:在日志中搜索“ANR”
2、崩溃问题:在日志中搜索“Exception” Force Close
信息收集来源:
边栏推荐
- 如何利用k线图做技术分析
- 老板叫我写个APP自动化--Yaml文件读取--内附整个框架源码
- MySQL cannot be opened. Flash back
- R语言使用car包中的avPlots函数创建变量添加图(Added-variable plots)、在图像交互中,在变量添加图中手动标识(添加)对于每一个预测变量影响较大的强影响点
- Django database operation and problem solving
- bad zipfile offset (local header sig)
- 增量快照 必须要求mysql表有主键的吗?
- Who knows if it is safe to open an account with CSC securities
- bye! IE browser, this route edge continues to go on for IE
- 接口自动化框架脚手架-利用反射机制实现接口统一发起端
猜你喜欢
mysql数据库概述以及安装过程
一款自动生成单元测试的 IDEA 插件,开发效率提升 70% 以上!
Interface automation framework scaffold - use reflection mechanism to realize the unified initiator of the interface
How to use dataant to monitor Apache apisex
Instant messaging and BS architecture simulation of TCP practical cases
第六天 脚本与动画系统
【力扣——动态规划】整理题目1:基础题目:509、70、746、62、63、343、96(附链接、题目描述、解题方法及代码)
How to view the web password saved by Google browser
An error is reported when uninstalling Oracle
再見!IE瀏覽器,這條路由Edge替IE繼續走下去
随机推荐
Realize an air conditioner with compose to bring you cool in summer
mysql打不开,闪退
读取pdf文字和excel写入操作
Understand 12 convolution methods (including 1x1 convolution, transpose convolution and deep separable convolution)
BLE蓝牙模块NRF518/NRF281/NRF528/NRF284芯片方案对比
最小栈<难度系数>
生成token
Internet of things application case of wireless module transparent transmission technology
[NLP] this year's college entrance examination English AI score is 134. The research of Fudan Wuda alumni is interesting
Realization of a springboard machine
June training (day 28) - Dynamic Planning
一种跳板机的实现思路
Wireless communication module fixed-point transmission - point to multipoint specific transmission application
sentinel
满电出发加速品牌焕新,长安电动电气化产品吹响“集结号”
接口自动化框架脚手架-利用反射机制实现接口统一发起端
Minimum stack < difficulty coefficient >
引入 flink-sql-mysql-cdc-2.2.1 好多依赖冲突,有解决的吗?
DlhSoft Kanban Library for WPF
Discard Tkinter! Simple configuration to quickly generate cool GUI!