monkey的基本语法都是:

adb  shell  monkey  -p  包名  执行的数字

monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中,他向系统发送伪随机的用户时间流(如:按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

monkey测试是一种为了测试软件的稳定性、健壮性的快速有效方法。

首先要测试一款APP,需要先知道APP对应的包名是什么,除了可以向开发人家直接获取,还可以自己获取。

在安装SDK的目录下面找到build-tools,具体路径E:\android-sdk-windows\build-tools\28.0.3,在输入框中输入cmd进入DOS命令

夜神模拟器:

第一种,获取自己已经有apk的包名:

aapt dump badging +apk存放路径

aapt dump badging  E:\soft\longteng\appium\apk\touchaction.apk

第二种:查看手机上所有APP的包名

输入adb shell,进入命令后进入目录data/data

1)adb shell

2)进入手机的  cd data/data

3) ls (需要root)

查看手机或者第三方应用的包名:

adb  shell  pm  list packages -3

真机:

打开开发者选项(小米手机在MUIU中连续点击)-之后在手机“设置”-“更多设置”中有一个“开发者选项”打开调试的功能

然后win+r,输入adb devices

如下情况表示连接成功

获得包名以后就可以操作了:

查看所有参数:

adb shell monkey

1.  -p  : 指定包名

1) 指定包名对应进行的点击数操作

adb  shell monkey -p 包名 次数

2)指定多个包

adb shell monkey -p 包名1  -p 包名2  次数

2. -v :打印日志

用于指定反馈信息级别(信息级别就是日志的详细程度),总共有三个:

1)level0:缺省值,仅提供启动提示、测试完成和最终结果等少量信息

adb  shell monkey -p 包名 -v 500

2)  level1:提供较为详细的日志,包括每个发送到activity的信息

adb shell monkey -p 包名 -v  -v  500

3)  level2:最详细的日志,包括测试中选中/未选中的activity信息

adb shell monkey -p 包名 -v  -v  -v  500

3.   -s 随机数

打印日志的时候包含了seed参数:

这个参数是发送请求的时候自动生成的伪随机数,用于产生相同序列的执行流,比如有bug了,开发可以去模拟当时一模一样的场景:v

我们可以自己指定相应的随机数seed:

adb shell monkey -s 12345 -p com.taobao.taobao -v 500

4.   throttle  : 毫秒

  用于指定用户操作即事件间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息300毫秒

  指定500次的点击事件,每次之间间隔300毫秒:

adb shell monkey -p com.taobao.taobao --throttle 300 500

5.点击次数的设置

  500  这里指点击的次数,根据经验,单个应用程序设置在100000次就ok;如果是整机,设置在500000次

6、--ignore-crashes

  应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成

  adb shell monkey -s 12345 -p com.taobao.taobao -v --ignore-crashes 500

7、--ignore-timeouts

  应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

  adb shell monkey -s 12345 -p com.taobao.taobao -v --ignore-timeouts 500

8. --ignore-security-exception

  当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

  adb shell monkey -s 12345 -p com.taobao.taobao -v --ignore-timeouts --ignore-security-exception 500

9.--kill-process-after-error

    当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。设置此项,将会通知系统停止发生错误的进程。注意,正常(成功)的结束,并没有停止启动的进程,设备只是在结束事件之后简单的保持在最后的状态

10、--monitor-native-crashes

  监视并报告Andorid系统中本地代码的崩溃事件。如果设置--kill-process-after-error,系统将停止运行。

11.  --wait-dbg

  停止执行中的Monkey,直到有调试器和它相连接。

12.  -c <main-category>

  如果你指定一个或多个类别,Monkey将只允许系统启动这些指定类别中列出的Activity。如果你不指定任何类别,Monkey将选择谢列类  别中列出的Activity,Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY。指定多个类别使用多个-c,每个-c指定一个类别。

13. --dbg-no-events

  设置此选项,Monkey将执行初始启动,进入一个测试Activity,并不会在进一步生成事件。为了得到最佳结果,结合参数-v,一个或多个包的约束,以及一个保持Monkey运行30秒或更长时间的非零值,从而提供了一个可以监视应用程序所调用的包之间转换的环境。

14.  --hprof

  设置此选项,将在Monkey生成事件序列前后生成profilling报告。在data/misc路径下生成大文件(~5Mb),所以要小心使用。

monkey事件百分比:event percentages

由上图可以看出

0:触摸事件百分比,即参数--pct-touch          1:滑动事件百分比,即参数--pct-motion

2:缩放事件百分比,即参数--pct-pinchzoom            3:轨迹球事件百分比,即参数--pct-trackball

4:屏幕旋转事件百分比,                  5:基本导航事件百分比,即参数--pct-nav

6:主要导航事件百分比,即参数--pct-majornav                       7:系统事件百分比,即参数--pct-syskeys

8:Activity启动事件百分比,即参数--pct-appswitch                  9:键盘翻转事件百分比,即参数--pct-flip

10:其他事件百分比,即参数--pct-anyevent

例如: 设置触摸事件需要占百分之60,(例如游戏的APP,触摸就会显得比较重要)

0--10这11中事件的总共百分比=100%,不能超过100%.

    设置序列号为12345,包名是com.taobao.taobao,打印简单日志,点击事件500次,触摸事件百分比占60%:

    adb shell monkey -s 12345  -p  com.taobao.taobao -v --pct-touch 60 500

monkey日志的导出

 指定电脑某个位置:

  adb shell monkey -p com.taobao.taobao -v  500 > e:\test.txt

log分析:

  日志最开始都会显示Monkey执行的seed值、执行次数、测试的包名

  查看日志里是否出现了ANR或者异常

  ANR:日志里搜索“ANR ”(此处有空格)

  崩溃问题:日志里搜索“Exception”,快速定位到关键事件信息,然后查看Monkey里面出错前的一些时间动作,手动执行该动作,找到重现步骤,给你开发

成功日志和报错日志:

成功日志会显示monkey finish ,events injected :100   # 执行完成,点击事件100次

错误的话会有闪退或者卡死,明显的error字眼:

会有CRASH字眼,后面跟上包名,闪退

ANR异常,无响应的:原因比如代码设计不合理,网络搜索事件太长

需要提供给开发的内容:

1) 被测试手机的详细信息;

2)monkey测试日志: 在cmd中输入命令后的内容

3)手机运行截图;

4)monkey运行时手机日志:可以定位到某一位置 adb logcat  >d:\test

转载于:https://www.cnblogs.com/yangguanghuayu/p/10970509.html

monkey操作,获取包名,参数,日志,百分比相关推荐

  1. android 获取monkey日志_monkey操作,获取包名,参数,日志,百分比

    monkey的基本语法都是: adb  shell  monkey  -p  包名  执行的数字 monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中,他向系统发送伪随机的用 ...

  2. adb logcat 通过包名过滤日志并输出到txt文件

    最近学使用ADB命令抓包APP闪退的日志: 1)在cmd命令行中可以使用adb logcat 命令查看android系统的log,也可以使用adb shell进入到adb shell专用命令行 2)d ...

  3. Unity获取包名,产品名,版本号等

    Unity获取包名,产品名,版本号等 string PackageName = Application.identifier; //包名string APPversion = Application. ...

  4. 通过BAT脚本直接从apk文件获取包名和安装APK

    参考:bat处理教程 @echo off ::开启变量延迟,解决方法:开启变量延迟,并且变量要用一对叹号"!!"括起来. setlocal enabledelayedexpansi ...

  5. java 获取包名类名_获取指定包名下的所有类的类名(全名)

    参考来源: 以下代码一键运行: package test; import java.io.File; import java.io.IOException; import java.net.JarUR ...

  6. APK获取包名的办法

    法一: adb shell pm list package -f 将获取手机内所有apk对应的包名和路径 方法二: adb shell dumpsys window w | findstr \/ | ...

  7. android logcat 包名过滤日志

    ** 如何让测试帮你弄出高质量的bug 日志? ** 场景:有时候测试会给开发提一些偶现bug,复现的很难,代价很大.这时候你希望测试给你一些日志,一般的测试就是会用 adb logcat -v ti ...

  8. android获取包名的几种方法

    方法一: adb shell pm list package -f 将获取手机内所有apk对应的包名和路径 方法二: adb shell dumpsys window w | findstr \/ | ...

  9. Android 获取包名,版本信息及VersionName名称

    话不多说,直接上代码,此处,主要是在版本升级的时候,使用较多. private String getAppInfo() { try { String pkName = this.getPackageN ...

最新文章

  1. Webkit 最新 Javascript 引擎领先 Chrome
  2. Android Webview H5 秒开方案实现
  3. 使用matlab模拟、检验和估计泊松过程
  4. wordpress配置SMTP服务发送邮件
  5. mysql groupby 拼接_mysql分组并多行拼接--group_concat和groupby的使用
  6. 变成小白的第一本Python入门书,第五章循环与判断课后题答案
  7. oracle数据库操作文档,oracle数据库操作
  8. 申请以及集成 Stripe 的 Alipay 支付方案
  9. 微软Whitehorse modeler的背后
  10. (65)-- 爬取兄弟连老师信息
  11. sir模型初始值_SIR模型
  12. pe系统测试软件,使用PE系统显示器测试工具检测电脑屏幕的方法
  13. 神经网络的相关函数以及误差类型
  14. matlab tfrstft工具箱,toolbox matlab时间序列分析工具箱 - 下载 - 搜珍网
  15. Spring+SpringMVC+Mybatis(开发必备技能)04、mybatis自动生成mapper_dao_model(包含工具与视频讲解) 纯绿色版本、配套使用视频,100%运行成功
  16. 矩阵 的逆、 迹、 秩
  17. 如何删除Win10“此电脑”中多出的“CD驱动器”盘符
  18. 如何安装部署beego项目
  19. 力扣刷题记录-回溯算法相关题目
  20. 利用Qt来进行文件后缀的更改

热门文章

  1. 嵌套组合图echarts
  2. php将mysql转换为json字符串_在PHP中将MySQL记录集转换为JSON字符串
  3. 【动态规划】P1220:区间dp:关路灯
  4. LeetCode 583 两个字符串的删除操作
  5. ffmpeg系列-编译
  6. android 圆点指示器,ViewPager加上小圆点指示器效果
  7. JS/JQuery操作iframe元素
  8. ueditor编辑器初始化
  9. mysql用jdbc执行回滚吗_java – mysql jdbc不成功回滚
  10. 为什么不能生成accde_原来“转换生成语言学”就是这么回事