Monkey 介绍及使用
一、介绍
monkey是Android中的一个命令行工具,运行在模拟器里或实际设备中。通过向系统发送伪随机的用户事件,例如:按键输入、触摸屏输入、手势输入等,实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法,就是利用工具模拟人的触屏和输入等操作,在短时间内对手机APP疯狂的进行大量的疯狂的乱点,乱按,乱输入的操作,疯狂地去“折腾”这个APP。
二、测试流程详解
通过名为 monkey 的Shell脚本去启动Monkey.jar程序,在指定的APP上模拟用户点击,滑动,输入等操作以极快的速度来对设备程序进行压力测试,检测程序是否会发生异常,然后通过日志进行排错。
基本语法如下:
#monkey的基本语法如下:这是对整台机器的测试;
adb shell monkey [options]#针对某个应用的monkey测试, 对淘宝点击500次
adb shell monkey -p com.taobao.taobao 500
常用命令:
adb devices # 查看链接的设备adb shell monkey -p pkgname 对指定包名进行测试
adb shell monkey --throttle milliseconds 指定事件之间的时间间隔,单位是毫秒
adb shell monkey -s seed 伪随机数生成器的seed值,如果用相同的seed值再次运行monkey,将生成相同的事件序列
adb shell monkey -v [-v -v ] 指定日志级别
adb shell monkey --pct-touch 指定触摸事件的百分比
adb shell monkey --pct-motion 指定动作事件的百分比
adb shell monkey --pct-trackball 指定轨迹球事件百分比
adb shell monkey --pct-nav 指定基本导航事件百分比
adb shell monkey --pct-majornav 设定主要导航事件百分比,兼容中间键,返回键,菜单键
adb shell monkey --pct-syskeys 设定系统事件百分比,比如HOME、BACK,拨号及音量调节等。
adb shell monkey --pct-appswitch 设定启动不同应用程序的事件百分比
adb shell monkey --pct-anyevent 设定不常用事件百分比
adb shell monkey --ignore-crashes 忽略奔溃和异常事件
adb shell monkey --ignore-timeouts 忽略超市事件
adb shell monkey --pkg-blacklist-file 设置不需要进行测试的黑名单应用
adb shell monkey --pkg-whitelist-file 设置需要测试的白名单应用;对白名单的应用都进行测试;adb shell logcat>e:\\log.txt 抓取日志
三、结果分析
Monkey测试中主要的异常和错误:
1、Crash:表示被测试应用异常停止或退出。
2、ANR:application no response ;表示在5秒内没有响应输入的事件(例如:按键按下、屏幕触摸等)
3、Error或Exception:表示应用程序在系统运行过程中遇到了未知错误或异常。
4、aborted:表示应用程序没有正常启动或无法正常启动,monkey测试被迫中止。
monkey测试建议:
1、 尽量关闭所有网络开关(WiFi及数据连接),以及莫名消耗流量,除非测试过程必须要求互联网。
2、开启安全设置下的未知来源。
3、手机连接电源充电,模拟器不在此讨论范围。
4、测试前运行一边手机上方带有的首次提示的说明,如输入法,文件窗口,apk提示语等。
5、monkey只是测试过程的辅助手段,不必过分依赖。应该将精力放在更需要人为参与的设计高效用例、设计有效用户场景、性能测试、接口测试、自动化测试等重要工作上。
一般的分析步骤:
1、先找到出现错误的位置
2、查看出现错误之前2个switch之间的activity
3、手动执行事件,复现问题
4、若以上步骤还不能找出,产生错误时,有会seed值,输入相同的seed值,重新按照之前命令跑monkey
logcat日志级别
Verbose:显示所有日志消息(默认值)。
Debug:显示仅在开发期间有用的调试日志消息,以及此列表中较低的消息级别。
Info:显示常规使用情况的预期日志消息,以及此列表中较低的消息级别。
Warn:显示尚不是错误的潜在问题,以及此列表中较低的消息级别。
Error:显示已经引发错误的问题,以及此列表中较低的消息级别。
Assert:显示开发者预计绝不会发生的问题。
logcat命令语法:adb logcat [option] [filterspecs]
#打印默认日志数据
adb logcat
#需要打印日志详细时间的简单数据
adb logcat -v time
#需要打印级别为Error的信息
adb logcat *:E
#需要打印时间和级别是Error的信息
adb logcat -v time *:E
四、代码示例
import oscontent=os.system('adb shell monkey -p com.taobao.taobao --throttle 10 -s 12345 200').read()if 'CRASH' in content or 'crashed' in content:print('应用程序运行奔溃!')
elif 'ANR' in content or 'NOT RESPONDING' in content:print('应用程序运行时卡壳!')
elif 'Execption' in content or 'exception' in content or 'error' in content:print('程序运行出错!')
elif 'aborted' in content:print('应用程序未正常运行!')
else:print('正常运行!')
Monkey 介绍及使用相关推荐
- APP稳定性测试利器 Monkey介绍、实战使用、日志分析
第一.Monkey简介 Monkey是什么? Monkey 是安卓官方提供的一个命令行工具,可以运行在Android模拟器和实体手机上.通过Monkey 来模拟用户的触摸.点击.滑动.系统按键的操作, ...
- [原创]Android Monkey测试工具使用介绍
[原创]Android Monkey测试工具使用介绍 1 Android Monkey介绍 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件 ...
- android monkey压力测试,Android-Monkey 压力测试
1.Monkey 介绍 Monkey是Android中一个对App进行压力测试的命令行工具,可以向系统发送伪随机的用户事件流对正在开发的App进行压力测试(模拟用户操作App).压力测试主要是为了提高 ...
- android驱动测试,Android: 通过 cucumber 驱动 monkey 做稳定性测试
主要内容 稳定性测试是什么 Monkey 介绍 自动化 Monkey 稳定性测试是什么 通过随机点击屏幕一段时间,看看 app 会不会奔溃,能不能维持正常运行. Monkey 介绍 Monkey 是一 ...
- Monkey随机性能压测初探(一)
Monkey介绍 Monkey程序由Android系统自带,是Android SDK提供的一个命令行工具, 可运行Android模拟器和实体设备上.Monkey会发送伪随机的用户事件流,通过Monke ...
- android实用测试方法之Monkey与MonkeyRunner
前言 本人比较懒,但是,研究如何让人变懒,却很积极-最新版的android SDK 4.0 ,monkey和monkeyRunner,变化很大-大到默认是运行失败的-囧,虽然,monkey和monke ...
- android之monkey测试
本文同时发表于本人个人网站 www.yaoxiaowen.com monkey测试算是android自动化测试当中最简单的一种工具了.虽然简单,不过对于测试app的稳定健壮,减少崩溃还是比较有用的.所 ...
- Monkey自动化测试
Monkey 1. 通过Monkey程序模拟用户触摸屏幕.滑动Trackball. 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常; 2.Monkey 主要用于Android 的 ...
- Monkey学习心得
简介 Monkey是Android系统自带的一款测试工具,通过它可以产生一些随机事件(例如,触摸.滑动. 按键等)来对设备中的app进行压力测试,以此来检测程序是否会发生异常(Crash.ANR). ...
最新文章
- MySQL 查询重复记录
- centos6.8 安装nginx
- iOS之HTTP和HTTPS的基本知识和应用
- wpf 为html 变量赋值_JavaScript 变量
- python中线程和进程_python中线程和进程的简单了解
- 关于C生成的汇编与C++生成的汇编在函数名称上的差异
- 部门级服务器一般支持几个cpu,部门级服务器简介
- linux下怎么查看一个动态库链接了其他哪些库
- 搜索引擎只能抓取html文件,为什么有些明明存在的网页不能被搜索到?
- 蓝桥杯2019年第十届C/C++省赛B组第四题-数的分解
- python3基础-变量
- 机智云智慧烟感物联网解决方案
- 中国DCS品牌知名度调查
- win7新建文本文档快捷键
- 图像处理——乘性噪声和加性噪声
- HDOJ 1164 Eddy's research I(拆分成素数因子)
- python 函数enumerate用法
- 求定积分的不太常见的方法
- 鸿蒙系统的软件怎么下载,怎么下载鸿蒙系统?
- 湛蓝代码自动生成工具有感
热门文章
- 关联规则算法——Apriori算法
- D - 人见人爱A+B(有关进制问题)
- 三种常见加密算法MD5、对称加密,非对称加密【多测师_王sir】
- 2012年度十大杰出IT博客[nice]
- IT博客兴衰史:致那些牛逼闪闪的日子
- 移动工作站 linux,戴尔推出三款 Precision 移动工作站产品 采用 Ubuntu Linux 操作系统...
- JSON文件加注释的7种方法
- 华为升级harmonyos的机型名单,华为新机将预置HarmonyOS 2.0,分离前的荣耀老机型也不例外...
- docker制作nginx源码镜像
- apache日志 waf_cdn配置waf