monkey测试 -- 原理和操作步骤
Monkey测试原理:
- Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
- Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法
- 是androidSDK附带的一个工具,在Android文件系统中的存放路径是:/system/framework/monkey.jar Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey,这样就可以通过在shell窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。
Monkey测试步骤:
1、将手机连接PC,测试连接是否正常
adb devices
2、查找需要测试的包名
adb shell pm list packages 列出所有包名
adb shell pm list packages testAPP123 查找名称中包含testAPP123的包名
3、执行monkey测试(adb shell monkey + 参数)
常用命令:adb shell monkey -p com.dapp.testAPP123 --throttle 200 --pct-touch 40 --pct-motion 60 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes -v -v -v 1152000 >e:\monkey_log\20190408.txt
4、停止monkey测试
adb shell ps | findstr monkey 查看进程ID
adb shell kill 26073 杀掉monkey对应的进程
Monkey参数说明:
-help 查看帮助信息
-v-v-v log的详细级别
-s <seed> 伪随机数生成器的seed值。(如果用相同的seed值再次运行monkey,将生成相同的事件序列)
-p <allowed-package-name> 指定包名。(若指定多个包,使用多个-P,一个-p后跟一个包名)
--throttle <millisecond> 在事件之间插入固定的时间(毫秒)延迟
--pct-touch <percent> 调整触摸事件的百分比,一次ACTION_DOWN,一次ACTION_UP 例如:–pct-touch 10 //百分之十为触摸事件
--pct-motion <percent> 滑动事件,按下->移动->抬起,ACTION_DOWN ACTION_MOVE ACTION_UP
-–pct-trackball percent 轨迹事件
-–pct-syskeys <percent> 系统按键事件 //如Home、Back、Start Call、End Call及音量控制键
-–pct-nav <percent> 基本导航事件(上下左右四个方向)
-–pct-majornav <percent> 主要导航事件 //如 5-way键盘的中间按键、回退键、菜单键
-–pct-appswitch <percent> 启动Activity的百分比(测试多个APP时,保证其他app都能启动并测到)
--pct-flip <percent> 键盘打开关闭
-–pct-anyevent <percent> 其他事件 //字母、数字按键等,一般是不常用的设备按钮
-–pct-pinchzoom <percent> 二指缩放事件
-–pct-permission <percent> 权限(替换掉了老版本中的--pct-rotation 屏幕旋转)
--ignore-crashes 应用程序发生崩溃或异常时,monkey继续运行
--ignore-timeouts 应用程序发生任何超时错误时(如“Application Not responding”对话框),monkey继续运行
--ignore-security-exception 当程序发生许可错误(例如启动一些需要许可的Activity)时,monkey继续运行
--ignore-native-crashes
--monitor-native-crashes
PS:
常用时间:
15小时:1080000(周内:晚上6点--早上9点)
39小时:2808000(周末:周六晚上6点--周一早上9点)
备注:因为adb发送事件,一次down算一个事件,一次up算一个事件,但是一次down加一次up才sleep一次,所以用事件间隔时间乘以事件次数,算出的运行时间并不准确。所以按照经验,给算出的次数乘以4,这样运行时间大致相等。比如:间隔500ms,执行5分钟,是600次(实际1.2分钟就执行完了)所以,想要执行5分钟的话,600次*4=2400次
monkey测试 -- 原理和操作步骤的更多相关文章
- monkey测试入门2--测试步骤、常用参数、常规monkey命令
<凤栖梧> 柳永 伫倚危楼风细细,望极春愁,黯然生天际.草色烟光残照里,无言谁会凭栏意? 拟把疏狂图一醉,对酒当歌,强乐还无味,衣带渐宽终不悔,为伊消得人憔悴. 简要步骤:adb devi ...
- 使用phpunit测试yaf项目操作步骤
yaf + phpunit 使用phpunit对yaf进行测试的核心在于bootstrip文件的配置. *1. 首先在项目目录下创建tests文件,并在tests中创建phpunit.xml < ...
- 【APP自动化测试】Monkey的测试原理和方法
参考资料:http://blog.csdn.net/io_field/article/details/52189972 一.Monkey测试原理:Monkey是Android中的一个命令行工具,可以运 ...
- monkey测试
一.理解monkey测试 1.Monkey测试是Android自动化测试的一种手段.Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. 2.当Mon ...
- Monkey压力测试操作步骤说明
一.需配置java环境和android环境 JDK安装包:链接:https://pan.baidu.com/s/1SlnBOS0f3m2wVpEZBPfmag ...
- monkey测试环境搭建 及 操作步骤
1.环境搭建 a.下载安卓SDK 链接:https://pan.baidu.com/s/1-OB6UVPvl5-N-vFdykfMmA 提取码:3spx b.配置环境变量(配置完成,重启系统,配置生效 ...
- Monkey测试3——Monkey测试结果分析
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
- Monkey测试1——Monkey的使用
Monkey工具使用 一. 什么是Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实 ...
- Android软件测试Monkey测试工具
前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其 ...
随机推荐
- 在C#/.NET应用程序开发中创建一个基于Topshelf的应用程序守护进程(服务)
本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...
- TensorRT&Sample&Python[end_to_end_tensorflow_mnist]
本文是基于TensorRT 5.0.2基础上,关于其内部的end_to_end_tensorflow_mnist例子的分析和介绍. 1 引言 假设当前路径为: TensorRT-5.0.2.6/sam ...
- ASP.NET Core 配置跨域(CORS)
1.安装程序CORS程序包 Install-Package Microsoft.AspNetCore.Mvc.Cors 一般默认都带了此程序包的 2.配置CORS服务 在 Startup类,Confi ...
- 图表插件Highcharts的动态化赋值,实现图表数据的动态化设置显示
在很早之前就介绍过图表插件Highcharts的使用了,在2014年的随笔<基于MVC4+EasyUI的Web开发框架经验总结(4)--使用图表控件Highcharts>,这里基本上都介绍 ...
- 《Effective C++》模板与泛型编程:条款32-条款40
条款41:了解隐式接口和编译期多态 class支持显示接口和运行期多态 class的显示接口由函数的名签式构成(函数名称.参数类型.返回类型) class的多态通过virtual函数发生在运行期 te ...
- thymeleaf循环
th:each属性用于迭代循环,语法:th:each="obj,iterStat:${objList}"迭代对象可以是Java.util.List,java.util.Map,数组 ...
- CodeForces 140C New Year Snowm
题目链接:http://codeforces.com/contest/140/problem/C 题目大意: 有n个雪球(半径为:r1,r2,r3.....rn):一个雪人要三个雪球.但是要求半径两两 ...
- MySQL 8.0 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
- Flask 构建微电影视频网站(四)
后台管理 实现后台管理系统使用flask sqlalchemy结合mysql数据库进行增删改查操作.分页的使用.路由装饰器定义.模板中变量调用.登录会话机制.上传文件.flask wtforms表单使 ...
- python学习日记(OOP访问限制)
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的na ...