Monkey测试个人笔记
安卓monkey简介
Monkey是一款安卓自带的、java编写的app自动化测试工具,monkey是猴子的意思,所以从原理上说,它的自动化测试就类似猴子一样在软件上乱敲按键,猴子什么都不懂,就爱捣乱。Monkey原理也是类似,通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、滑动Trackball、手势输入等操作),来对设备上的程序进行测试,检测程序长时间的稳定性,多久的时间会发生异常。
主要目的:测试 app 是否会是否会 Crash。模拟器:夜神,逍遥
路径地址
通过adb shell 进入路径:/system/framework可以找到monkey.jar;/system/bin可以找到monkey
C:\Users\duxiaowei>adb shell pm list packages|findstr tyjh
package:com.tyjh.lightchain查看安卓手机包路径 :pm list packages -f
获取所有包名:adb shell pm list package
获取第三方包名:adb shell pm list package -3
adb logcat | findstr START 输入该命令,然后点击要启动的app,即可获取到包名和activity
调试
配置
1.开发者模式:关于设备 —> MIUI版本,连续点击5-7次,开发者模式
2.USB调试:开发者模式—>打开USB调试
oppo、华为:选项长时间不操作手机,自动断开USB调试
3.链接手机,USB/WIFI(adb-connecter)同一个局域网
4.cmd:adb devices回撤
devices:表示正常
offline:插拔USB即可 模拟器–>模拟器升级到最新版本
no device: 驱动
unauthorized:表示未授权,允许授权即可
端口占用:netstat -ano |findstr “5037”
360/手机助手,容易出现占用端口
USB线:数据传输,adb驱动
操作命令
参数
1.count 事件数,必填
2.[][][–ignore-crashes] [–ignore-timeouts] [–ignore-security-exceptions]
crashes:崩溃,闪退;
timeouts: 超时,无响应
如果使用这个参数,发生崩溃或者无响应的时候,会结束应用进程,从新打开继续执行,直到事件次数结束
不使用该参数:发生上述问题,monkey测试停止在问题界面–缺乏稳定性测试的意义
一般是使用该参数的
参数
基础参数:
-p 指定包名
-v 表示反馈信息的级别,打印 log 级别,-v 越多日志信息越详细,最多支持 3 个 -v -v -v ,例如:华为手机100万次 -v -v -v
-s 如果用相同的seed值再次运行monkey,将生成相同的事件序列;每个seed可能发生N个bug,不利于测试稳定性,所以要唯一指定!
–throttle 在事件之间插入固定的时间(毫秒)延迟,你可以使用这个设置来减缓Monkey的运行速度,如果你不指定这个参数,则事件之间将没有延迟,事件将以最快的速度生成。
-f:后接测试脚本名
# 简单的测试 -p 指定包,-s 指定测试id号, -v日志打印详细程度 adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v 500
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] …]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] …]
[–ignore-crashes] [–ignore-timeouts]
[–ignore-security-exceptions]
[–monitor-native-crashes] [–ignore-native-crashes]
[–kill-process-after-error] [–hprof]
[–match-description TEXT]
[–pct-touch PERCENT] [–pct-motion PERCENT]
[–pct-trackball PERCENT] [–pct-syskeys PERCENT]
[–pct-nav PERCENT] [–pct-majornav PERCENT]
[–pct-appswitch PERCENT] [–pct-flip PERCENT]
[–pct-anyevent PERCENT] [–pct-pinchzoom PERCENT]
[–pct-permission PERCENT]
[–pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[–pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[–wait-dbg] [–dbg-no-events]
[–setup scriptfile] [-f scriptfile [-f scriptfile] …]
[–port port]
[-s SEED] [-v [-v] …]
[–throttle MILLISEC] [–randomize-throttle]
[–profile-wait MILLISEC]
[–device-sleep-time MILLISEC]
[–randomize-script]
[–script-log]
[–bugreport]
[–periodic-bugreport]
[–permission-target-system]
COUNT–pct-事件类别 11 个事件百分比控制
–pct-touch
作用:调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)
注:常用参数,此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。
0:点击事件百分比,即参数–pct-touch
1:滑动事件百分比,即参数–pct-motion
2:缩放事件百分比,即参数–pct-pinchzoom
3:轨迹球事件百分比,即参数–pct-trackball
4:屏幕旋转事件百分比,即参数–pct-rotation
5:基本导航事件百分比,即参数–pct-nav
6:主要导航事件百分比,即参数–pct-majornav
7:系统按键事件百分比,即参数–pct-syskeys
8:Activity启动事件百分比,即参数–pct-appswitch
9:键盘唤出隐藏事件百分比,即参数–pct-flip
10:其他事件百分比,即参数–pct-anyevent
–throttle <毫秒> 延时
指定,用户才做延时,单位:毫秒
adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --throttle 3000 100
– randomize-throttle
在事件之间插入随机延迟,随机延迟范围从0到throttle 设置的事件,单位毫秒
adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --throttle 5000 --randomize-throttle 100
adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --throttle 5000 --randomize-throttle 100 > D:\apk\monkey_log.txt ;日志保存文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CsHtLvl7-1631843439385)(C:\Users\duxiaowei\AppData\Roaming\Typora\typora-user-images\image-20210805173117040.png)]
黑名单不扫描的包;白名单,扫描的包
adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --pct-touch 100 300 #全是点击事件
adb shell monkey -p com.tyjh.lightchain -s 110 -v -v -v --pct-touch 50 --pct-rotation 50 300 #百分之50点击,百分之50旋转
关闭monkey进程:
adb shell
ps #进程号3344
kill 3344
exit
adb shell monkey -p com.tyjh.lightchain -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:\monkey_log\java_monkey_log.txt
说明:monkey作用的包:com.tyjh.lightchain 产生时间序列的种子值:500 忽略程序崩溃 、 忽略超时 、 监视本地程序崩溃、详细信息级别为2 , 产生 10000个事件 所产生的日志保存在:E:\monkey_log\java_monkey_log.txt
注:测试产生了日志,最重要的是要学会分析日志 在log中搜索4种关键字加以分析: 1、crash 闪退 2、exception 异常 3、force closed 强制退出 4、anr(application no response) 程序无响应。
实际使用
Monkey测试参数建议
间隔时间:500毫秒;
种子数:指定;
遇到错误:不停止;
执行时长:每机型不小于12小时或点击次数:100万次;
机型覆盖建议:覆盖高中低端机型
不同芯片平台(高通、海思、MTK等)
不同分辨率(480*800以上主流分辨率)
不同安卓版本(安卓4.0以上主流安卓版本);
Monkey参考命令
adb shell monkey -p com.tyjh.lightchain --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes -v -v -v 1000000>D:\monkey_log\monkeyScreenLog.log
测试可以发现的问题**
Android平台应用程序可能产生以下两种问题:
1、Crash
2、ANR (响应延时)
Monkey日志定位问题**
- 2.1 典型Monkey测试日志文件输出,如下:
//主要Log文件说明
anr目录:从手机/data/anr导出的日志,保存发生anr crash 时的相关信息;
- 2.2 通过日志定位问题步骤
(1)在MonkeyScreen.Log日志文件搜索关键词“Fatal”、“Crash”、“ANR”定位到发生Crash的详细堆栈信息,或分析发生Crash前后的日志事件;
如图:
然后把相应的日志发给开发即可。
工作中monkey的使用:
日志的分析
bug的定位
bug编写规范
anr日志提取
adb logcat的使用
Monkey测试个人笔记相关推荐
- 行意天下正文 Android Day02-Android中单元测试(junit测试)monkey测试
Android中junit测试有2种实现方式 第1种:一般Android工程的实现方式 1.在清单文件中添加2项内容 首先在AndroidManifest.xml中加入下面红色代码: <mani ...
- monkey学习总结笔记
一.什么是monkey? Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序 ...
- Monkey测试2——Monkey测试策略
Monkey的测试策略 一. 分类 Monkey测试针对不同的对象和不同的目的采用不同的测试方案,首先测试的对象.目的及类型如下: 测试的类型分为:应用程序的稳定性测试和压力测试 测试对象分为:单一a ...
- monkey测试_用 Instrumentation 改良 Monkey 工具实战
作者:杭州城西费德勒 - 曾中华 这里 Monkey 不是猴子,而是 Android 系统中用来做自动化测试的工具,即盲点.压力测试. 在之前的移动端产品迭代中,Monkey 工具一直没有利用起来.开 ...
- Monkey测试1——Monkey的使用
1 Monkey工具使用 2 3 一. 什么是Monkey 4 5 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输 ...
- [原创]Android Monkey测试工具使用介绍
[原创]Android Monkey测试工具使用介绍 1 Android Monkey介绍 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件 ...
- cmd与monkey测试
monkey测试的相关命令 monkey是模拟用户触摸操作,不支持条件判断. monkey命令格式: 启动安卓模拟器/真机 点击运行->输入cmd->进入命令行界面 查看设备连接情况,a ...
- Monkey测试简介
在android手机上做自动化测试,monkey比cts,Android UnitTest 好用多了,他其实是继承与adb shell中的一段的shell指令. 一monkey测试的相关的原理 mon ...
- monkey测试_爱码小士丨 APP稳定性测试(附视频详解)
在实际的测试过程中,主要是对系统的功能来进行测试,用于校验功能的正确性 还需要考虑到系统在未修改的状态下,是否能够稳定运行,即崩溃.闪退.重启.系统异常等等等地情况 在APP中,稳定性测试一般是交由M ...
- android测试之monkey测试
1.首先安装SDK包 2.配置环境变量 3.打开CMD命令窗口,查看是否安装成功 命令:adb version 4.要做monkey测试的安卓包名,获取方式如下(必须启动要获取报名的app) 1.ad ...
最新文章
- xcode6 dyld_sim is not owned by root
- ComboBox.TextChanged等事件的注意问题
- 用Go语言建立一个简单的区块链part4(1):交易(1)
- BJUI修改弹窗dialog的宽度和高度
- JS获取当前时间的前n天/后n天
- mysql-学习-7-20170517-mysql分区
- java获取mp3的时长和播放mp3文件
- array remove java_how to remove array from another array in javascript
- 程序设计模式浅析(plain framework商业版设计模式)
- Mac 中 PyCharm 配置 Anaconda环境
- cdh中hue集成hbase_HBase版本 | Cloudera Enterprise 6.2.0发布
- oracle创建表空间并赋予权限
- 9大最佳知识库软件/文档管理工具
- 四六级、考研英语单词记忆---知米背单词APP推荐!
- 华为Routing Switching切换为Datacom,究竟变了些什么
- kali局域网ARP攻击欺骗+图片获取
- 【USACO题库】1.2.1 Milking Cows挤牛奶
- 如何按要求比较两个数的大小(不使用大于、小于以及if语句)
- Graphviz 双向边和无向边
- 知识蒸馏相关技术【模型蒸馏、数据蒸馏】以ERNIE-Tiny为例
热门文章
- 熊国正版游戏之TXT文字乱码【已解决】【rutracker】【byrut】【单机】【破解】【俄罗斯】
- Java程序员面试时,如何进行自我介绍呢?
- jquery 内容分页_为内容创建现代jQuery分页
- 12、【易混淆概念集】-第六章3 资源平衡 VS 资源平滑 进度压缩 制定进度计划 定义活动 里程碑清单
- 极智AI | 目标检测 VOC 格式数据集制作
- 先思索后动笔:论讨论与结论的区别
- 文本挖掘系列之文本信息抽取
- 软件测试黑马程序员课后答案_(完整版)软件测试技术基础课后习题答案
- linux下使用libxml2库,解析xml文件
- 红帽的RHCSA、RHCE、RHCA值得报考吗?