前言

假设你做Android开发,还没有使用过Monkey进行測试,那么今天看到这篇文章,希望能解决你Android測试中的一些问题。起码能帮你省点測试的时间而且发现很多其它的问题。

Monkey简单介绍

Monkey是一个可执行在模拟器和实际设备中的Android命令行自己主动化測试工具,它能够模拟伪随机的用户事件流,比如点击、触摸、手势等。你能够使用Monkey对正在开发的程序进行压力測试。

Monkey的特征:
  • 測试的对象为程序包名,通过-p參数指定。
  • Monkey測试使用的事件流、数据流是随机的,不能进行自己定义。

Monkey的使用

Monkey是Android系统自带,有Java语言编写的自己主动化測试工具,在Android文件系统中的存放路径为:/system/framework/monkey.jar

monkey.jar程序是由一个名为"monkey"的Shell脚本来启动运行,shell脚本在Android文件系统的存放路径为:/system/bin/monkey

基本的语法

adb shell monkey [option] <event-count>

參数

[Option] -p

用于约束限制,用此參数指定一个包或多个包(Package,即APP)。指定之后,Monkey仅仅同意系统启动指定的APP,假设不指定,Monkey将同意系统启动全部的APP

[Option] -v
用于指定反馈信息级别(信息级别就是日志的具体程度),总共分为三个级别,分别对于參数例如以下所看到的:

日志级别:Level 0

演示样例:adb shell monkey -p com.example.list -v 100

说明:缺省值,仅提供启动提示、測试完毕和终于结果等少量信息

日志级别:Level 1

演示样例:adb shell monkey -p com.example.list -v -v 100

说明:提供较为具体的日志信息,包含发送到Activity的事件信息

日志级别:Level 2

演示样例:adb shell monkey -p com.example.list -v -v -v 100

说明:提供最为具体的日志信息,包含測试中选择和未选中的Activity信息

[option] --kill-process-after-error

说明:用于指定当前应用程序错误发生时,是否停止其执行。假设指定此參数,当用户应用程序错误发生时,应用程序停止而且保持在当前的状态

[option] --throttle <milliseconds>

说明:用于指定Monkey操作事件的间隔时间,单位是毫秒

[option] --pct-trackball <percent>

说明:调整轨迹事件的百分比

[option] --pct-nav <percent>

说明:调整基本导航事件的百分比

[option] --pct-majornav <percent>

说明:调整主要导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

[option] --pct-anyevent <percent>


说明:调整其它类型事件的百分比

<event-count>

说明:指定随机事件的次数

Example

记录一下我常常使用的monkey命令,就是组合使用了以上參数:

adb shell monkey -p com.example.listview -v -v -v --kill-process-after-error  --pct-trackball 0 --pct-nav 0 --pct-majornav 0 --pct-anyevent 0 --throttle 500 500000 > /mnt/sdcard/monkey.log 2 >&1 &

自己主动化脚本

写了一个脚本供自己主动化測试,省的每次都输入一大串monkey命令了,代码例如以下:

#!/bin/bash

REPORT_DIR=./report
DATE_TIME=`date "+%Y%m%d"` #remove old report files
echo "remove old reporting files..."
if [ -d $REPORT_DIR ]; then
rm -r $REPORT_DIR
fi #mkdir for new report files
echo "report files will be stored in $REPORT_DIR"
mkdir $REPORT_DIR #run monkey on phone system
echo "Monkey is running"
adb shell monkey -p com.example.listview -v -v -v --kill-process-after-error --pct-trackball 0 --pct-nav 0 --pct-majornav 0 --pct-anyevent 0 --throttle 500 500000 > $REPORT_DIR/monkey_$DATE_TIME.log #grep creash log
echo "catch crash log..."
grep -A 10 -h -r CRASH $REPORT_DIR > $REPORT_DIR/crash_$DATE_TIME.log

Android Monkey自己主动化測试的更多相关文章

  1. android uiautomator自己主动化測试

    前提是自己电脑上配置好JDK,android和ant的环境 1.命令行下进入\Android-sdk\tools\文件夹下,执行命令:    android list    查看相应android版本 ...

  2. Android自己主动化測试之Monkeyrunner用法及实例

    眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...

  3. Android 自己主动化測试(3)&lt;monkeyrunner&gt; 依据ID查找对象&amp;touch&amp;type (python)

    我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...

  4. 【金阳光測试】大话Android自己主动化測试--Android自己主动化系列(1)--金阳光于2013年4月份

    Android自己主动化測试框架和工具在四年多的发展日趋成熟. 从五年前的第一代自己主动化架构演进到眼下第四代(本系列讲座第7篇后将具体剖析第三代和第四代自己主动化框架)从曾经最早谷歌推崇的monke ...

  5. Android自己主动化測试解决方式

    如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolect ...

  6. MAC中在eclipse luna上搭建移动平台自己主动化測试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录

    这几天由于原来在用的hp laptop的电池坏掉了,机器一不小心就断电.所以仅仅能花时间在自己的mackbook pro上又一次搭建整套环境.大家都知道搭建好开发环境是个非常琐碎须要耐心的事情,特别是 ...

  7. iOS自己主动化測试的那些干货

    前言 假设有測试大佬发现内容不正确.欢迎指正,我会及时改动. 大多数的iOS App(没有持续集成)迭代流程是这种 也就是说.測试是公布之前的最后一道关卡.假设bug不能在測试中发现,那么bug 就会 ...

  8. 带有机器人框架的.NET自己主动化測试

    Clayton Neal在软件測试和质量保证方面有超过13年的经验,当中有八年的Windows, web,和移动应用程序的測试自己主动化经验.他在測试领域的全部等级都工作过.近期他在Bloomberg ...

  9. 基于QTP的自己主动化測试框架介绍

    继前面用了七章介绍了基于QTP的自己主动化測试框架,以下再用几个视频再补充一下.        视频一:基本框架特点介绍说明 .框架的特点从正反两面进行了分析以及主要思想      http://v. ...

随机推荐

  1. EasyUI - Slider组件

    效果: html代码: <input id="box" /> JS代码: $(function () { $('#box').slider({ width: ,//设置 ...

  2. 解决Xcode 7编译错误:does not contain bitcode

    连接地址:http://jingyan.baidu.com/article/8065f87f96cf462331249801.html 好不容易更新到Xcode 7.0.1,重新编译代码,报错: do ...

  3. 一个很简单的php留言板。。。。搭建在sae上的。。。

    我在sae上搭建了一个个人简历的页面: 有兴趣的可以访问  http://671coder.sinaapp.com/ 在做下面一个简单的留言板的时候,卡了我很久,虽然完全没用过php..但是还是最后勉 ...

  4. 基于visual Studio2013解决C语言竞赛题之1070删除相同节点

        题目 解决代码及点评 /************************************************************************/ /* ...

  5. 也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离)

    前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异.痛定思痛,今天我们重新思考了“前后端”的定义,引入前端同学都熟悉的NodeJS,试图 ...

  6. Kendo UI开发教程(23): 单页面应用(一)概述

    Kendo单页面应用(Single-Page Application,缩写为SPA)定义了一组类用于简化Web应用(Rich Client)开发,最常见的单页面应用为Gmail应用,使用单页面可以给用 ...

  7. 设计模式(三)-- 适配器模式(Adapter)

    适配器模式(Adapter) 考虑一个记录日志的应用,由于用户对日志记录的要求很高,使得开发人员不能简单地采用一些已有的日志工具或日志框架来满足用户的要求,而需要按照用户的要求重新开发新的日志管理系统 ...

  8. POJ 1160 Post Office (动态规划)

    Post Office Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15412   Accepted: 8351 Desc ...

  9. Oracle 验证IOT表数据存储在主键里

    iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT.但是在不指定主键Primary Key的情况下,是不允许建表的. create ...

  10. 论javascript模块化的优缺

    如今backbone.emberjs.spinejs.batmanjs 等MVC框架侵袭而来.CommonJS.AMD.NodeJS.RequireJS.SeaJS.curljs等模块化的JavaSc ...