monkey 测试 读书笔记

1. monkey 的基本使用

使用 monkey 有两种方式:

第一种方式:shell 端启动

进入 adb shell

运行 "/system/bin" 路径下的 monkey脚本

$ adb shell

# cd /system/bin

# monkey

第二种方式:直接 pc 启动

直接通过以下的命令运行:

$ adb shell /system/bin/monkey

这两种方式的区别: 通过 PC 端启动,monkey 运行日志可以保存到 PC 上;通过 Shell 端启动,monkey 运行日志可以保存到手机里。

加上选项[options] 的命令如下:

$ adb shell monkey [options]

2. monkey 的命令及其使用

monkey 的 option 操作都是根据具体的需求设定的,主要分为五类,分别为: 常规类、事件类、约束类、调试类和官方隐藏类参数。

2.1 monkey 的常规类命令

monkey常规类命令.PNG

-h: 显示 monkey 参数帮助信息 usage

-v: 打印出日志信息,每个 -v 将增加反馈信息的级别。命令格式为:

$ adb shell monkey -v

-v 越多日志信息月详细,不过目前最多支持 3 个 -v,即:

* 0级: 除启动提示、测试完成和最终结果外提供较少信息

* 1级: 提供较详细测试信息,如逐个发送 Activity 的事件

* 2级: 提供更详细安装信息,如测试中被选中或为被选中的 Activity

2.2 monkey 的事件类命令

monkey事件类命令.PNG

-f: 后接测试脚本名,表示要使用 monkey 运行指定的 monkey 脚本,命令示例:

$ adb shell monkey -f

$ abd shell monkey -f /mnt/sdcard/test 10

-s: 后接随机数生成器的 seed 值。如果使用相同的seed 值再次运行 monkey,将生成相同的事件序列,也就是说重复执行刚才的随机操作。

命令格式为:

$ adb shell monkey -s

--throttle: 后接时间,单位为 ms(),表示事件之间的固定延迟(即执行每一个指令间隔的时间),如果不接该选项,monkey 将不会延迟。

命令格式:

$ adb shell monkey --throttle

--ptc-touch: 后接触摸事件百分比,

命令格式:

$ adb shell monkey --ptc-touch

--ptc-motion: 后接动作事件百分比。动作事件不单单指手势操作,它泛指从某一个位置按下(即Down事件)后经过一系列伪随机事件后弹起(即Up事件)。

--ptc-trackball: 后接轨迹球事件百分比。轨迹球事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件。

--ptc-nav: 后接基本导航事件百分比。 基本导航事件主要指来自方向输入设备的上、下、左、右事件。

--ptc-majornav: 后接主要导航事件百分比。主要导航事件通常指引发图形界面的一些动作,如 5-way 键盘中间按键、返回按键、菜单按键等。

--ptc-syskeys: 后接系统按键事件百分比。系统按键事件通常指仅供系统使用的保留按键,比如 home键,back键,拨号键等。

--ptc-appswitch: 后接应用启动事件百分比。医用启动事件俗称 打开应用,通过调用startActivity() 方法最大限度地开启该 package 下的所有应用。

--ptc-anyevent: 后接其他类型事件百分比。除了上述提到的事件外全部都属于其他事件。

2.3 monkey 的约束类命令

monkey约束类命令.PNG

-p: 后接一个或多个包名(),如果应用需要访问其他包里面的 Activity,那相关的包也需要在此同时指定。如果不指定任何包,monkey将允许系统启动全部包里的 Activity。 每一个 -p 对应一个包,指定多个包时每个包名前都需要加上 -p,如:

$ adb shell monkey -p

$ adb shell monkey -p com.csmijo.test 1000

-c: 后接一个或多个类别名(即 参数),monkey 将只允许系统启动这些类别中某个类别列出的 Activity。如果不指定任何类别,monkey 将选择Intent.CATEGORY_LAUNCH 和 Intent.CATEGORY_monkey里的 Activity。

2.4 monkey 调试类命令

monkey调试类命令.PNG

--dbg-no-events: 在设置此选项后,monkey 将进入初始启动,进入到某个测试 Activity 中不会进一步生成事件。命令格式:

$ adb shell monkey --dbg-no-events

--hprof: 在设置此项后,将在monkey事件序列前后立即生成 profiling report。 该选项将在 data/misc 中生成 5MB 大小的文件,慎用!

--ignore-crashes: 在设置此项后,当应用程序崩溃或者发生失控异常时, monkey 将继续运行直到计数完成。如果不设置此选项,monkey 遇到上述崩溃或者异常将停止运行。

--ignore-timeouts: 在设置此选项后,当应用程序发生任何超时错误(如ANR)时,monkey 将继续运行直到计数结束。如果不设置此选项,monkey 遇到此类超时对话框将停止运行。

--ignore-security-exceptions: 在设置此选项后,当应用程序发生任何权限错误(如启动一个需要某些权限的 Activity)时,monkey 将继续运行直到计数完成。如果不设置此选项,monkey 遇到此类权限错误将停止运行。

--kill-process-after-error: 在设置此选项后,当monkey 因为应用程序发生错误停止时,将会通知系统体质发生错误的进程。如果不设置此项,在monkey 停止时发生错误的应用程序将继续处于运行状态。

--monitor-nativie-crashes: 在设置此选项后,monkey 运行时 native code 的崩溃事件将被监视被报告。如果不设置则不会监视。

--wait-dbg: 在设置此选项后,将暂停执行中的 monkey,知道有调试器与它连接。

2.5 官方隐藏类参数

--pkg-blacklist-file: 限制 monkey 不测试指定黑名单文档中记录的包(package)。如果没有使用这个参数,monkey 会测试系统内所有的的包。如果使用了这个参数,可通过在黑名单文档中记录所有不需要测试的包名称,来相纸 monkey 的执行范围。 黑名单文档中每一行只能放一个包名

--pkg-whitelist-file: 限制monkey 只测试指定的白名单文档中记录的包。如果没有使用这个参数,monkey 会测试系统内所有的包。如果使用了这个参数,可通过在白名单文档内记录所有要测试的包,来限制monkey 的执行范围。白名单文档中每一行只能放一个包名。

注意:如果要测试的包与其他的包有关联,则必须一起指定这些包来执行这项参数。

3. monkey 脚本编写

3.1 monkey API 详解

轨迹球事件

DispatchTrackball(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)

只需要关注: action、x、y 即可

ACTION_DOWN = 0

ACTION_UP = 1

ACTION_MULTIPLE = 2

输入字符串事件

DispatchString(String text)

点击事件

DispatchPointer(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)

只需要关注: action、x、y 即可

启动应用

LaunchActivity(String pkg_name,String cl_name)

等待事件

UserWait(long sleeptime)

时间的单位为:毫秒(millisecond)

按下键值

DispatchPress(int keyCode)

长按键值

LongPress(int keyCode)

发送键值

DispatchKey(long downTime, long eventTime, int action, int code, int repeat, int metaState, int device, int scancode)

开关软键盘

DispatchFlip(boolean keyboardOpen)

3.2 monkey 脚本编写

type= raw events

count= 10

speed= 1.0

start data >>

captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,0.06666667,0,0.0,0.0,65539,0)

captureDispatchKey(5113146,5113146,0,20,0,0,0,0)

captureDispatchFlip(true)

...

4. monkey 日志分析

4.1 monkey 日志的保存方法

保存在 pc 中,命令如下:

$ adb shell monkey [options] > d:\monkeylog.txt

保存在手机中,命令如下:

$ adb shell

# monkey [options] /mnt/sdcard/monkeylog.txt

标准流与错误流分开保存,命令如下:

# monkey [options] 1>/mnt/sdcard/monkeylog.txt 2>/mnt/sdcard/monkeyErrorlog.txt

4.2 monkey 日志内容解析

搜索关键字"ANR" 查找 ANR 相关信息

搜索关键字"CRASH" 查找 Crash 相关信息

[参考文献]

《深入理解Android自动化测试》

《腾讯Android自动化测试实战》

编译 android monkey,Android monkey使用详解相关推荐

  1. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

  2. iPhone和Android的WEB应用开发详解

    iPhone和Android的WEB应用开发详解 在我们现在的生活中,移动设备的作用日益重要.我们使用它们进行交流.我们使用它们进行导航.我们甚至可以将它们用作方便的手电筒.面向 iPhone 和 A ...

  3. Android开发之打包APK详解

    Android开发之打包APK详解 一.APK简介 二.无需密匙的 apk 三.有密匙的 apk(常规) 生成 apk 其实有两个方法: 方法一:生成无密匙的 apk 文件: 方法二:生成有密匙的 a ...

  4. android studio gradle3.3,Android studio 3.2 升级详解及Gradle配置

    Android studio 3.2 升级详解及Gradle配置 发布时间:2018-09-29 15:36, 浏览次数:618 , 标签: Android studio Gradle 一直在使用An ...

  5. JNI开发之-Android.mk和Application.mk 详解

    Android.mk和Application.mk 详解 Android.mk 基础知识 变量和宏 NDK 定义的 include 变量 目标信息变量 模块描述变量 NDK 提供的函数宏 Applic ...

  6. libraries 和android runtime之间的关系,《Android Studio应用开发实战详解》——第1章,第1.3节Android系统架构...

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.3节Android系统架构,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&quo ...

  7. 《Android多媒体应用开发实战详解:图像、音频、视频、2D和3D》——2.3节简析Android安装文件...

    本节书摘来自异步社区<Android多媒体应用开发实战详解:图像.音频.视频.2D和3D>一书中的第2章,第2.3节简析Android安装文件,作者 王石磊 , 吴峥,更多章节内容可以访问 ...

  8. 《Android多媒体应用开发实战详解:图像、音频、视频、2D和3D》——2.1节简析Android安装文件...

    本节书摘来自异步社区<Android多媒体应用开发实战详解:图像.音频.视频.2D和3D>一书中的第2章,第2.1节简析Android安装文件,作者 王石磊 , 吴峥,更多章节内容可以访问 ...

  9. android开发TextView(文本框)详解

    android开发TextView(文本框)详解 作用 TextView(文本框),用于显示文本的一个控件 属性详解 以该代码段为例 <TextViewandroid:id="@+id ...

  10. Android自定义View进阶-MotionEvent详解

    欢迎Follow我的GitHub, 关注我的CSDN. 其余参考Android目录 我们微信公众号:杨守乐 推荐文章: 如果你喜欢上了一个程序员小伙,献给所有的程序员女友 学习资料(干货汇集)不断更新 ...

最新文章

  1. SRTP是如何工作的
  2. C++通过vmware.exe检测虚拟机
  3. 【通知】有三AI书籍和文化产品读者欢迎入群,送4本书!
  4. python基本模块中的对象_Python 学习笔记 -- OS模块的常用对象方法
  5. IIS中防止MDB被下载的办法
  6. 采用Kettle分页处理大数据量抽取任务
  7. 43. Know how to access names in templatized base classes.
  8. wampserver php 目录,小常识-WAMPServer自定义根目录
  9. 苹果iPad忘记了Apple ID密码该怎么办?(手机教程)
  10. 裤子尺码对照表eur40_有了裤子尺码对照表,再也不用担心买错裤子了
  11. 项目是如何死掉的?太过真实!哈哈哈~嗝~~
  12. 身份证号验证(正则升级版)
  13. 区块链软件公司:区块链赚钱的领域有哪些
  14. 视觉技术中的图像采集卡
  15. 计算机网络(4)传输层
  16. Python数据可视化第四节-图表样式美化实例
  17. 谷歌浏览器取消idm在微信读书PC页面自动下载pdf
  18. 20220712 初识JS
  19. ThinkPHP3.2/ThinkPHP5对比
  20. “双减”下 K12 教育集体折戟,AI 会是教培行业力挽狂澜的稻草吗?

热门文章

  1. 不一样的方式实现performSelector接收多个参数(转)
  2. 中国住宅设施杂志中国住宅设施杂志社中国住宅设施编辑部2022年第9期目录
  3. Arduino - 最小系统(基于ATMEGA8-16PU)
  4. 黑马旅游网——旅游路线详情展示和旅游路线收藏功能(完结)
  5. (附源码)ssm医护服务平台 毕业设计 260954
  6. autorun.vbs病毒专杀
  7. Asp.net GridView分页功能的实现
  8. 视频修复工具recover_mp4,视频录制一半掉电,如何查看已保存数据?
  9. 开发者账号申请流程(公司的),APPID的申请,邓白氏编码的申请
  10. 绿色免费企业管理软件V3.2┊财务、进销存、生产、人事管理、工资管理、考勤管理...