Android的测试工具Monkey(yaozq翻译,仅供参考)

简介: Monkey是一个可以在模拟器或者实际设备中运行的命令行程序,它可以向程序中发出一系列的伪随机事件流(比如按键输入、触摸输入、手势输入等的用户事件和一些系统级的事件)。

Monkey是一个可以在模拟器或者实际设备中运行的命令行程序,它可以向程序中发出一系列的伪随机事件流(比如按键输入、触摸输入、手势输入等的用户事件和一些系统级的事件)。开发者可以通过Monkey工具以一种随机且可以重复的方式来对正在开发的程序进行压力测试。

Monkey使用综述

Monkey是一个可以在模拟器或者实际设备中运行的命令行程序,可以向程序中发出一系列的伪随机事件流,来对正在开发的程序进行压力测试。

Monkey工具包含很多可选项,主要可以分为4中基本类型:

-基本的配置选项,比如可以设定要发送的事件数。

-操作限制,比如可以限制只测试的一个应用程序包。

-测试事件的类型和测试频率

-调试选项

Monkey运行的时候,它将向系统发送随机产生的事件,并对测试下的系统进行观测,特别留意三种条件:

-当限制Monkey只对一个或者多个特定应用程序包进行测试的时候,it watches for attempts to navigate to any other package, and block them

-如果你的程序崩溃或者遇到了什么未处理的议程,Monkey将停止运行,并将错误显示出来。

-如果你的程序产生了一个无反应的错误,Monkey也将停止运行,并报告错误。

根据你设定的事件的多少,你将会在命令行中看到Monkey产生的事件和运行过程。

Monkey的使用方法

启动方式:可以通过使用命令行或者脚本文件来启动Monkey工具。因为Monkey工具运行在模拟器或者实际设备中,所以,你必须在模拟器或者实际设备的Shell中启动Monkey。如果你没进入shell中,你也可以在每个Monkey命令之前加上adb shell,当然如果你已经进入shell中,这种情况下直接使用Monkey命令就行了。

基本的使用方式如下:

$ adb shell monkey [options] <event-conunt>
如果没指定 options Monkey 将以一种 quiet(non-verbose) 模式启动,在这种模式下 Monkey 将向你的设备或模拟器上安装的每一个程序发送事件。下面是一种更典型的使用方式,具体功能就是向你的程序发送 500 个伪随机事件:

$ adb shell monkey -p your.package.name -v 500


命令中的 Options 可选参数

下面的表包含了可以在Monkey命令中所有可选项。

类型

可选参数option

描述

General

--help

打印一个简单的使用指导

-v

命令行中的每一个 -v都将增加verbosity levelverbosity的意思是冗余,具体意思就是关于测试信息的多少,level越高,测试信息月详细)。level0(默认)仅提供关于开始启动、测试完成和最重结果的很少的信息。Level1提供了更多的关于测试的信息,比如每一个正在发送给你的activities的事件。Level2又比Level1提供了更多的关于启动的信息,比如提供了要测试和不要进行测试的activities

Events

-s <seed>

伪随机事件产生器的seed值。如果你使用相同的seed值第二次运行 Monkey命令的时候,它将产生与第一次相同的伪随机事件。

--throttle <milliseconds>

在事件之间插入一个固定值。你可以通过这个option来减慢Monkey的运行。如果没指定这个值的话,事件之间没有停顿,事件产生器将以最快的速度产生命令。

--pct-touch <percent>

调整触摸事件的百分比(用户的触摸事件在屏幕上是down-up形式的)。

--pct-motion <percent>

调整移动事件的百分比。

--pct-trackball <percent>

调整trackball事件的百分比。

--pct-nav <percent>

调整导航事件的百分比。(导航事件主要是输入设备的方向键,比如向上、下、左、右)

--pct-majornav <percent>

调整主要的导航事件的百分比。

--pct-syskeys <percent>

调整系统按键事件(比如HomebackStart Call

--pct-appswitch <percent>

调整activity的启动百分比。

--pct-anyevent <percent>

调整其他类型事件的百分比。

Constraints

-p <allowed-package-name>

指定要测试的应用程序包名

-c <main-category>

指定要测试的categories

Debugging

--dbg-no-events

--hprof

--ignore-crashes

--ignore-timeouts

--ignore-security-exceptions

--kill-process-after-error

--monitor-native-crashes

--wait-dbg





相关文章
|
9月前
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
176 0
|
1月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
36 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
JSON API 数据格式
淘系等商品评论Json数据格式参考,API接口测试
通过以上示例和说明,你可以了解淘系商品评论的JSON数据结构和如何使用相关API接口获取评论数据。在实际操作中,你需要参考具体的API接口文档和开放平台的相关说明进行配置和调用。
|
5月前
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
318 4
Android性能测试——发现和定位内存泄露和卡顿
|
5月前
|
测试技术 Shell Android开发
Android 性能测试初探 (六)
本节聊聊性能测试的最后一项- 流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试,但本系列文章都不去一一探讨了。
81 6
|
5月前
|
JavaScript 测试技术 Android开发
Android 性能测试初探 (四)
本文介绍了GPU在移动端性能测试中的重要性,并详细解释了过度绘制、帧率和帧方差的概念。针对GPU测试,文章列举了三项主要测试内容:界面过度绘制、屏幕滑动帧速率和平滑度。其中,过度绘制测试需遵循特定标准,而帧速率和平滑度测试则可通过软件或硬件方法实现。在软件测试中,使用Systrace插件和高速相机是两种常用手段。对于不同机型,帧率及帧方差的测试标准也需相应调整。
80 5
|
5月前
|
测试技术 Shell Android开发
Android 性能测试初探 (三)
本文承接《Android性能测试初探(二)》,深入探讨CPU与内存测试。介绍了移动端内存测试的重要性及其测试目标,并详细列举了不同状态下应用内存消耗情况的测试项目。此外,还提供了多种内存测试方法,包括使用`procrank`等工具的具体操作步骤。最后,文章也简要提及了CPU测试的相关内容,帮助读者更好地理解Android性能测试的关键要素。
71 5
|
5月前
|
测试技术 Shell 定位技术
Android 性能测试初探 (五)
聊聊大家不常关注的测试项- 功耗
74 3
|
5月前
|
算法 测试技术 Android开发
Android 性能测试初探 (二)
上回大体介绍了下在 android 端的性能测试项,现在我们就细节测试项做一些阐述(包括如何自己 DIY 测试)
74 4
|
5月前
|
测试技术 API Android开发
Android 性能测试初探 (一)
Android 性能测试,跟pc性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类: 一类为 rom 版本的性能测试;一类为应用的性能测试。
72 3

热门文章

最新文章

  • 1
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    24
  • 2
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    32
  • 3
    Android历史版本与APK文件结构
    119
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    27
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    56
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 8
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    73
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    117
  • 10
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    29