Android ADB Monkey ——压力测试

 

阅读目录
一.环境搭建
二.Monkey简介
三.Monkey 介绍
四.Monkey必须重视Crash
五.Monkey 架构
六.Monkey 参数大全
七.Monkey 命令基本参数介绍
八.Monkey 日志分析
             

 一.环境搭建

①,打开环境变量配置窗口。右击计算机,属性-高级系统设置-环境变量。

②,添加android系统环境变量。在系统变量下点击新建按钮,输入环境变量名

③,在path中添加刚刚添加的环境。选择系统变量中Path,点击编辑按钮,输入刚刚建好的环境,方法和配置java一样,记住要加两个百分号

④,测试环境变量。首先打开运行命令,运行在开始菜单中就有,如果找不到可以在开始中搜索即可,也可以直接按住win+R快捷键,打开运行。

⑤,在运行中输入cmd,调用命令操作窗口。进入后输入adb查看运行结果是否环境变量配置成功

 二.Monkey简介

Monkey是Android系统的一个命令行工具,可以运行在模拟器、手机设备中。它向系统或软件发送伪随机的用户

事件流(如键盘输入、触摸屏输入、手势输入、鼠标输入等),实现对正在开发的APP应用程序进行压力性能测试。

通过Monkey程序模拟用户操作,检测程序多久的时间会发生异常。


Monkey测试是一种测试软件稳定性、健壮性的快速有效的方法。
Monkey测试目前被大规模应用在APP开发企业。

  三.Monkey 介绍

 什么是monkey

顾明思义,monkey就是猴子,monkey测试,就像一只猴子,在电脑面前,
乱敲键盘在测试。通过monkey程序模拟用户触摸、滑动Trackball、按键
等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常

monkey用来做什么
monkey 主要用于android系统自动的一个压力测试小工具,主要目的就是为
测试APP时否会Crash

四.必须重视Crash 

 虽然Monkey测试有部分缺陷,我们无法准确地得知重现步骤, Monkey测试所出现的NullPointException, 都

是可以在用户使用时出现的, 何时出现只是时间问题理论上来说, Monkey所有的Crash 都需要在发布前修复

 五.Monkey 架构

Monkey 运行在设备或模拟器上面,可以脱离PC运行(普遍做法是将monkey作为一个像待测应用发送 随机按键
消息的测试工具。验证待测应用在这些随机性的输入面前是否会闪退或者崩溃)

六.Monkey 参数大全

 

七.Monkey 命令基本参数介绍

 

-p <允许的包名列表>

用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果丌指定包, monkey将允许系统启动设备中的所有app。

指定一个包:adb shell monkey -p com.shjt.map 100

指定多个包:adb shell monkey -p fishjoy.control.menu –p com.shjt.map 100


-v

用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示:

Level 0 : adb shell monkey -p com.shjt.map -v 100 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

Level 1 : adb shell monkey -p com.shjt.map -v -v 100 // 提供较为详细的日志,包括每个发送到Activity的事件信息

Level 2 : adb shell monkey -p com.shjt.map -v -v -v 100 // 最详细的日志,包括了测试中选中/未选中的Activity信息


-s(随机数种子)

用亍指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 示例:

monkey测试1:adb shell monkey -p com.shjt.map –s 10 100

monkey测试2:adb shell monkey -p com.shjt.map –s 10 100


--throttle <毫秒>

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

例:adb shell monkey -p com.shjt.map --throttle 3000 100

 

八.Monkey 日志分析

monkey -p com.example.android.apis -v -v -v 100
:Monkey: seed=0 count=100
:AllowPackage: com.example.android.apis
IncludeCategory:android.intent.category.LAUNCHER
IncludeCategory:android.intent.category.MONKEY
//种事件所占的比例。
//各数字分别表示:
[--pct-touch PERCENT]
[--pct-motion PERCENT]
[--pct-trackball PERCENT]
[--pct-syskeys PERCENT]
[--pct-nav PERCENT]
[--pct-majornav PERCENT]
[--pct-appswitch PERCENT]
[--pct-flip PERCENT]
[--pct-anyevent PERCENT]
// Event percentages:
// 0: 15.0%
// 1: 10.0%
// 2: 15.0%
// 3: 25.0%
// 4: 15.0%
// 5: 2.0%
// 6: 2.0%
// 7: 1.0%
// 8: 15.0%
:Switch:
//表示跳转到com.example.android.apis里面的ApiDemos这一个Activity里。
#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.example.android.apis/.ApiDemos;end
//允许此Intent跳转,
// Allowing start ofIntent { act=android.intent.action.MAIN
//cat=[android.intent.category.LAUNCHER]cmp=com.example.android.apis/.ApiDemos } in
//packagecom.example.android.apis
//发送的一些动作,如点击按下,点击放开,移动。
:Sending Pointer ACTION_MOVE x=-4.0 y=2.0
:Sending Pointer ACTION_UP x=0.0 y=0.0
:Sending Pointer ACTION_DOWN x=207.0y=282.0
:Sending Pointer ACTION_UP x=189.0 y=289.0
079 :Sending Pointer ACTION_DOWN x=95.0y=259.0
080 :Sending Pointer ACTION_UP x=95.0y=259.0
081 :Sending Pointer ACTION_DOWN x=295.0y=223.0
082 :Sending Pointer ACTION_UP x=290.0y=213.0
083 :Sending Pointer ACTION_MOVE x=-5.0y=3.0
084 :Sending Pointer ACTION_MOVE x=0.0y=-5.0
//拒绝此跳转,因为它是跳转到非它自己的包的Activity,本测试中是指写测试它程序所在的包,此跳转是跳出本程序,进入到桌面。
// Rejecting start ofIntent { act=android.intent.action.MAIN cat=[android.intent.category.HOME]
//cmp=com.android.launcher/.Launcher} in package com.android.launcher
//继续发送动作。
:Sending Pointer ACTION_DOWN x=74.0 y=201.0
:Sending Pointer ACTION_UP x=74.0 y=201.0
:Sending Pointer ACTION_MOVE x=3.0 y=-2.0
:Sending Pointer ACTION_UP x=0.0 y=0.0
:Sending Pointer ACTION_MOVE x=-4.0 y=2.0
Events injected: 100
//丢弃的,键=0,指针=0,轨迹球=0,翻转=0。
:Dropped: keys=0 pointers=0 trackballs=0flips=0
//网络统计经过时间为4202ms,其中4202ms是用于在手机上的,0ms用于无线网络上,没
//有连接的时间为0ms。
## Network stats: elapsed time=4202ms(4202ms mobile, 0ms wifi, 0ms not connected)
//monkey测试完成。
// Monkey finished

如何分析日志:

Monkey 测试出现错误后,一般的分析步骤

看Monkey的日志 (注意第一个swith以及异常信息等),在日志文件中搜索

1. 程序无响应的问题: 在日志中搜索 “ANR ”(Application No Response )
2. 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug

3. crash :在得到log后,搜索”crash”字段,如果搜索到有结果,则表明有进程出现问题,测试不通过。
截屏一般截包括错误出现附近的事件(带错误附近100事件)

4. Error 关键字

正常情况,  如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成\

 

posted @ 2018-01-16 10:28  winky诗  阅读(179)  评论(1编辑  收藏  举报