视频:

http://v.youku.com/v_show/id_XODcyMjM1MDA4.html?from=y1.2-1-87.4.4-1.1-1-2-3

PPT:

http://www.docin.com/p-1023809505.html

1.安装jdk,sdk,TT

2.对app进行压力测试(性能测试),模拟器和真机都可以,发送伪随机事件流(一段时间内不重复)(随机事件流:抛硬币)

3.monkey是android系统自带的,位置/system/bin/monkey/monkey.jar

4.adb shell monkey +选项

  adb shell进入shell端, 然后monkey+选项

  在android真机安装android终端模拟器terminal

5.monkey架构:

不支持条件判断,不支持验证

6.基本参数:

  -v: 日志详细程度

    adb shell -p xxx -v(启动,完成,结果信息)

    adb shell -p xxx -v -v(待测活动事件)

    adb shell -p xxx -v -v -v

  -s:随机数种子size

    -s一样的话,两次monkey测试产生的序列是一样的

    adb shell -p xxx -s 10

  --throttle:两次事件的时间间隔,单位是毫秒

    adb shell -p xxx --throttle 3000 100(随机事件的个数)

7.发送事件的类型

  --pct-touch <percent>: 指定触摸事件百分比,一个点上先后有按下和抬起的操作。

  --pct-motion <percent>: 指定滑动事件百分比,先按下,滑动一段距离,然后抬起。

  --pct-trackball <percent>: 轨迹球事件百分比,一系列的随机移动和单击操作。

  --pct-nav <percent>: 基本导航事件百分比(硬件),设置基本的导航事件(上/下/左/右导航键)的生成比例。

  --pct-majornav <percent>:主要导航事件百分比,会导致UI产生回馈的事件,如单击5个方向键中的中间按钮,单击后退键或者菜单键。

  --pct-syskeys <percent>: 系统按键事件百分比(Home 、Back 、startCall 、 endCall 、 volumeControl)。

  --pct-anyevent <percent>: 任意事件百分比,普通的按键消息,设备上一些不常用的按钮事件。

8.约束条件

  -p: 包名列表

    adb shell -p xxx -p xxx

  -c: 意图的种类:Monkey只会启动可以处理这些种类的意图的活动,如果没有此选项,monkey只会启动Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY的活动。

9.调试选项

  --dbg-no-events: 指定了此选项,monkey会启动待测应用,但不发送任何消息,建议与-v,-p,-throttle一起使用。

  --hprof: 指定此选项,monkey会在发送事件前后生成性能报告(即内存的快照文件),一般在设备的/data/misc目录下生成一个5M左右的文件。

  --ignore-crashes: 指定了此选项,待测应用崩溃或发生异常时,继续发送系统消息,直到指定个数的消息全部发送完毕,否则停止运行。

  --ignore-timeouts:  指定了此选项,待测应用停止响应(如弹出“应用无响应”对话框)时,继续发送系统消息,直到指定个数的消息全部发送完毕,否则停止运行。

  --ignore-security-exceptions:指定了此选项,待测应用碰到权限方面的错误时,继续发送系统消息,直到指定个数的消息全部发送完毕,否则停止运行。

  --kill-process-after-error: 一般情况下,当monkey因为某个错误指定运行时,出问题的应用会留在系统上继续执行,这个选项通知系统当错误发生时杀掉进程。

    注意:当monkey正常执行完毕后,它不会关闭所启动的应用,设备依然停留在最后接受到消息的状态。

  -monitor-native-crashes: 监视由Android C/C++代码部分(cpu计算部分)引起的崩溃,此时如果设置了“--kill-process-after-error”,整个系统会关机。

  --wait-dbg: 启动monkey后,先中断其运行,等待调试器附加上来。

10.

  adb shell -p xxx --throttle 100 --pct-touch 50 --pct-motion 50 -v -v -v 1000 >c:\monkey.txt

11:运行

  结合TT,释放端口,检查手机连接,端口映射,

  启动monkeyrunner的脚本录制功能,可以查看手机屏幕。如果对monkeyrunner不熟悉,请参考:http://www.cnblogs.com/zh-ya-jing/p/4385418.html

  启动monkey命令

12:检测-s一致时,monkey产生的序列也是一样的

13.分析log一般有以下几个步骤

  看日志(注意第一个switch以及异常信息等)

    程序无响应:ANR

    C崩溃:Exception

  查看monkey里出错前的几个动作,并手动执行,结合TT示波器,找到崩溃点

  日志+TT,找到崩溃时的执行函数

  顺利执行完毕,会有monkey finished字样;如果中间崩溃,会有执行次数说明

第一个switch主要是monkey执行的是哪一个activity,在两个active之间划分即可。

14.monkey内存问题分析

如何确定内存泄露?

  弹出out of memory对话框

  logcat文件GC(java的垃圾回收机制)信息

  --hprof参数与报告

    adb shell -p xxx --hrof -v -v -v 100

  monkey会在发送事件的前后生成内存快照,并保存在/data/misc/下的hprof文件中(需要root权限才可以)也可以收集安装能进入系统文件夹的app去查看文件

  hprof文件跟平时的jvm文件是不一样的,需要用android自带的hprof-conv(在android-sdk/tools/)命令去转化

  成对出现的,事件前后两个成对

  hprof-conv *.hrof *.conv
 转化成的conv文件,用eclipse中的MAT打开

shadle heap小

retail size: 如果释放相应参数,GC就可回收这部分内存  

15.monkey脚本的编写

编写好后放在SD卡

adb shell monkey -f/sdcard/*.txt 运行次数

adb shell monkey --hprof -f/sdcard/*.txt -v -v -v 3 >c:\monkey

16.具体的monkey脚本命令

start data >>

控制monkey的一些参数设置和具体的monkey命令分隔开

  count=10

  speed=10

  start data>>

  #monkey 命令

  LaunchActivity(pkg_name, cls_name)app的包名,要打开的类名

  DispatchPointer(downTime,eventTime,active,x,y,0,0,0,0,0,0,0)

  #downTime:发送消息的时间

  #eventTime:用于指定发送两个事件之间的停顿

  #active:动作是按下还是太起,0表示按下,1表示抬起

 

android自动化测试之Monkey--从参数讲解、脚本制作到实战技巧的更多相关文章

  1. Android自动化测试之Monkey 转自:LupuX

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011436666/article/details/53998332 在之前的文章Android自动 ...

  2. Android自动化测试之MonkeyRunner录制和回放脚本

    Android自动化测试之MonkeyRunner录制和回放脚本(十一) 分类: 自动化测试 Android自动化 2013-02-22 10:57 7346人阅读 评论(2) 收藏 举报 andro ...

  3. Android自动化测试之Monkey Test(一)

    Monkey是什么 Monkey是可以运行在模拟器里或实际设备中的程序.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.   Monkey简 ...

  4. Android自动化测试之Monkey

    本来是做Web后端的,来公司实习变成微信小程序前端了,到这周变成Android APP测试人员了,也是微醺啊. 由于对手工测试终究是有些抵触,所有昨天小试了一下不用写代码的自动化压力测试,在此记下我的 ...

  5. Android自动化测试之Monkey Test 安装(二)

    因为Monkey Test是在eclipse上执行的,所以玩monkey test的时候要先配置安卓开发环境 一.Android开发环境搭建指南 1.安装JDK JDK下载链接:http://www. ...

  6. [转] Android自动化测试之MonkeyRunner录制和回放脚本(四)

    测试脚本录制: 方案一: 我们先看看以下monkeyrecoder.py脚本: #Usage: monkeyrunner recorder.py #recorder.py  http://mirror ...

  7. 【转】Android自动化测试之MonkeyRunner录制和回放脚本(四)

    测试脚本录制: 方案一: 我们先看看以下monkeyrecoder.py脚本: #Usage: monkeyrunner recorder.py #recorder.py  http://mirror ...

  8. Android自动化测试之Monkey工具

    前言:Android自动化测试工具.方法和框架,包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.test tool等. 一. 什么是MonkeyMonk ...

  9. Android自动化测试之:获取 参数:comonentName 的值方法

    十年河东十年河西,莫欺少年穷! 不了解Activity的,可参考:http://www.cnblogs.com/tekkaman/archive/2011/06/07/2074211.html 相关代 ...

随机推荐

  1. 在Eclipse下搭建Hadoop开发环境

    在前面的博文中博主展示了如何在虚拟机中搭建Hadoop的单节点伪分布集群,今天给大家介绍一下如何在Eclipse环境中搭建Hadoop的管理和开发环境,话不多说,下面我们就进入正题吧! 1.JDK安装 ...

  2. spring和springmvc是单例还是多例

    这么说其实不规范 spring的bean    默认是单例 springmvc的controller    默认是单例 所以最好不要在controller里定义成员变量 都可通过注解 @scope=p ...

  3. 次小生成树(SST)

    次小生成树(SST) 题目背景 Awson是某国际学校信竞组的一只菜鸡.Awson最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等.正当Awson洋洋得意之时,信竞组其他大 ...

  4. [20190611]记录一下github的基本用法

    本文记录如何使用github创建项目并上传代码,因为有一段时间没用github了,中途又重装了系统,今天重新使用一下. 然后特地做简要记录: 1. 创建SSH Key SSH Key指一般在C:\Us ...

  5. 如何快速构建CMBD系统-glpi

    一.CMBD系统构建步骤 起初,开发这套CMBD系统是为了帮助朋友公司简化设备统计操作,以代替人工入库方式.举个例子,单位发放笔记本,或者设备更换了硬盘,都需要人工签到,手动输入统计,安装了CMBD系 ...

  6. Java中的多线程详解

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

  7. SVN合并步骤

    1.trunk->branch/tag 分支路径在分支文件夹中,选择右键检出 2.合并分支到主干分支新增 1.txt 文件 需要合并到主干 在trunck->鼠标右键合并->合并到不 ...

  8. COGS 2815. 天黑请闭眼

    ★   输入文件:jos.in   输出文件:jos.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 天亮了,请大家睁眼 昨晚是,平安夜. 处于集会中心的村民们大多数都 ...

  9. 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) A Amusing Numbers (数学)

    其实挺简单的.先直接算出之前已经排在k这个数前面的数字.比如543是三位的,那么100~543都是可以的,两位的10~54. 如果还需要往前面补的话,那么依次考虑1000~5430,5430是上界不能 ...

  10. 用函数求lnx,lgx等

    https://blog.csdn.net/liujian20150808/article/details/50628061