Monkey测试

申明: 本文为转载内容,在练习时有改动
原文地址: https://blog.csdn.net/just__like/article/details/83757492

Monkey的介绍

它是Android系统自带一个命令行工具,可以运行在模拟器里或者真是设备中运行。

monkey向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。

monkey包括很多选项,大致四大类:

1.基本配置选项,如设置尝试的事件数量。

2.运行约束选项,如设置只对单独的一个包进行测试。

3.事件类型和频率。

4.调试选项

monkey命令特性

不可能使用monkey来指定做一样测试,重复做很多次。因为monkey产生的是伪随机的事件流。但是我们可以通过添加 命令选项将操作限制在一定的范围内。

一,首先你要先搭建环境

1.先下载jdk 具体安装流程请参考:https://blog.csdn.net/write6/article/details/79136388

2.再下载sdk 具体安装流程请参考:https://blog.csdn.net/u011541946/article/details/77142045

二,打开手机的开发者调试工具,用usb数据线链接你的手机;

三,monkey前的准备命令

1.windows+r 输入cmd进入dos命令行;

2.输入adb devices 下面出现类似下图的组合你就成功了;(

3.获取包名(我常用的几种)

(1)输入 adb shell pm list packages 查看你的手机所有的安装包;输入 adb shell pm list packages -3 查看手机上所有的第三方安装包,看一眼差不多就知道哪一个是你要的安装包;
(2)使用uiaotumator之类的软件查看,
(3)DOS环境输入:adb shell logcat|findstr "Displayed" ,打开待测试的APP;
(4)获取已打开的包名/Acitivity名: 输入adb命令: adb shell dumpsys window | mCurrentFocus

这样可以尽快的找到想要的安装包名称;

四,首先用一个最简单的mokey去试着找哪个是你想要的安装包名称:

1.参数:

/ / -p参数:表示指定测试的程序(空格后面跟安装包名字,拿刚才的第三方安装包一个个试)

/ /-v参数:表示查看monkey执行过程的信息(日志级别)(-v 越多越详细,最多三个)

/ /数字100:表示测试事件数为100

指定一个包 adb shell monkey -p com.gwecom.app -v -v -v 100 (此时指定软件会被打开并开始乱点乱按)
指定多个包 adb shell monkey -p com.tencent.news -p com.pdfreader -p com.widgets -v 1000
不指定包 adb shell monkey -v 1000

结果如图:
在这里插入图片描述

在这里插入图片描述

Event percentages(事件百分比):

1.Seed :想要两次执行相同的操作,我们就要设置一个seed值:

adb shell monkey -p  包名  -s 数字   次数      
	例如:  `adb shell monkey -p 包名 -s 50 100`

2.设置点击事件占总事件的百分比:

adb shell monkey -v -p 包名 --pct-touch 50 100 
(解释一下:-v打印日志,-p测试哪个app, --pct-touch 50 点击事件占总事件的50%      100触发100次随机事件)  

3.动作事件:

adb shell monkey -v -p 包名 --pct-motion 50 100    #(由第二小点总结的理解第三小点并不难)  
	 如果想要约束两个或者三个事件一起执行的百分比,写法如下	 
adb shell monkey -v -p 包名 --pct-touch 50 --pct-motion 50 100 #(意思就是点击事件和动作事件的百分比各占50%)

4.轨迹球事件:

adb shell monkey -v -p 包名 --pct-trackball 80 100  #轨迹球事件占总事件的80%,总共执行100次   

5.基本导航事件:

adb shell monkey --pct-nav 80 100  #基本导航事件(输入设备的上下左右)占总事件的80%,总共执行100次

6.主要导航事件:设定主要导航事件的百分比,兼容性中间键,返回键,菜单键

adb shell monkey  --pct-majornav 80 100  # 主要导航事件占总事件的80%,总共执行100次

7.系统导航事件:设定系统导航事件的百分比,HOME、BACK、拨号及音量键

adb shell monkey --pct-syskeys 80 100   #系统导航事件占总事件的80%,总共执行100次

8.启动Activity事件:

adb shell monkey --pct-appswitch 80 100
启动Activity事件占总事件的80%,总共执行100次
  1. 不常用事件:不常用事件占总事件的80%,总共执行100次
adb shell monkey  --pct-anyevent 80 100    
  1. 崩溃事件:设置一下,在系统跑崩溃之后还要继续执行。直到事件数跑够才停止。
adb shell monkey --ignore-crashes <event-count>
  1. 超时事件:设置一下,在系超时之后还要继续执行。直到事件数跑够才停止。
adb shell monkey --ignore-timeouts <event-count>
  1. CRASH结果的析取:
    实现步骤:安装一个能引发CRASH 的 App →执行压力测试命令(触发CRASH)→提取CRASH的Exception信息,
	adb shell monkey -v -p 包名 --ignore-crashes 10000   //出现Crash后继续执行在这里插入代码片
ANR结果的析取:
实现步骤:安装一个能引发ANR的 App →执行压力测试命令(触发ANR)→提取ANR的Exception信息。手动测试的时候出现ANR怎么获取Log信息:
adb shell 
cd data/anr        //到anr目录下
ls                 //查看一下文件
  1. 尽管monkey产生是伪随机事件流,但是我们希望我们的操作有一定的规律性,即按键、触屏等各类事件操作有所偏重。
    eg:

     (1). 对文本框操作,需要更多的按键操作。
     (2). 玩游戏,需要更多的点击和滑动操作。
    
  2. –throttle 设定两个事件之间一个固定延迟,可以减缓monkey的执行速度。如果不指定,monkey将不会被延迟,事件将尽可能快地生成和发送消息。单位:毫秒

    eg:adb shell monkey --throttle 3000 -p com.gwecom.app 100

向app发送1000次随机事件,每次事件间隔为3秒。

  1. –hprof
    指定了该参数,Monkey会在发送事件序列的前、后,生成性能分析报告。通常会在data/misc目录下生成一个5MB左右大小的文件

  2. –ignore-crashes
    通常情况下,monkey会在测试应用程序崩溃或者发生异常后停止运行,若指定了该参数,则monkey将会在产生异常后,继续向系统发送事件,直到指定事件全部运行完毕。

  3. –ignore-timeouts
    通常情况下,当应用程序发生任何超时错误(application not responding)时,monkey将停止运行。若指定了该参数,则monkey将会在产生错误信息后,继续向系统发送事件,直到指定事件全部运行完毕

  4. –ignore-security-exceptions
    通常情况下,指定应用程序发生许可错误时(如证书许可,网络许可等),monkey将停止运行。若指定了该参数,即使应用程序发生许可错误,monkey会继续向系统发送事件,直到指定事件全部运行完毕。

    eg:adb shell monkey --throttle 3000 --pct-trackball 50 -p com.tencent.news --ignore-security-exceptions 100

————————————————
版权声明:本文为CSDN博主「一土小亘兄」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/just__like/article/details/83757492

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值