monkey测试

醉酒当歌 提交于 2020-11-29 04:56:39

一 monkey测试简介

monkey就是SDK中附带的一个命令行工具,模拟器/真实设备【尽量用真实设备】。发送伪随机的用户【如按键输入,触摸屏输入,手势输入等】,实现压力测试。

作用:提过APP稳定性,健壮性

运行平台:Android

 

二 monkey工具使用

monkey使用前提条件:

1.配置Android SDK,jdk环境变量

2.连接手机--进入开发者模式--打开USB调试

验证是否成功:打开cmd--输入命令【adb devices】

 

monkey基本组成

monkey选项主要分为四大类:

1.基本配置选项,如设置尝试的事件数量【一般下班前测试,第二天早上看日志分析】

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

3.事件类型和频率

4.调试选项

基本命令组成

 adb shell monkey -p 程序包 -v 测试次数

注:

1.-v最多显示3个,-v就是日志显示格式。

2.其中程序包名称通过adb shell pm list packages -3显示所有第三方APP程序包

3.执行mokey测试前,先看下有哪些参数,执行命令【adb shell monkey】

4.执行monkey测试

这里测试是医咖大夫APP

 打开cmd-输入命令【adb monkey -p cn.medsci.yun.doctor -v 次数】,如下图所示

monkey 测试通过依据,尾部出现【monkey finished】

 

所有的参数写在-p包后面,事件数 之间,输入2个-v,获取更多信息,更详细点

 

  •  Android APP monkey中crash和anr的bug一定要解决掉,否则用到客户手中发生crash和anr问题机率很大

 seed值指定义了事件的序列。作用:用于测试验证bug,用于开发解决bug--复现bug,seed值尽量不变,同个值。

 复现seed值操作,加上-s,如下图:

涉及参数解析:

【-s】:伪随机数生成器的 seed 值。如果用相同的 seed 值再次运行 Monkey ,它将生成相同的事件序列。

【-v】:命令行的每一个 -v 将增加反馈信息的级别。最多出现3个,-v越多,日志信息越详细。

【-p】:此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。要指定多个 包,需要使用多个 -p选项,每个-p选项只能用于一个包。

【--throttle】:在事件之间插入固定延迟。通过这个选项可以减缓 Monkey 的执行速度。如果不指定该选项, Monkey 将不会被延迟,事件将尽可能快地被产成。

指令含义介绍:

如上命令含义:测试的应用程序为医咖大夫,三个-v表示输出的monkey的log最详细的数据,测试事件次数1000,log保存在E盘的test_log.txt里面

 

如上命令含义解读:测试的应用程序为医咖大夫,种子seed的值为100,事件间的延时为100毫秒,一个-v表示输出的monkey的log较为详细的数据,测试事件次数100,

 三、monkey日志分析

  1. 程序无响应的问题:在日志中搜索【ANR】
  2. 崩溃问题,在日志中搜索【Exception】
  3. monkey顺利执行完成,在log最后会打印当前执行事件的次数和花费事件。或者最后出现monkey finished代表执行完成。
  4. monkey执行中断,在log后面能看到当前已执行的次数
  5. 【crash】类型错误--异常退出,异常停止问题

四、monkey内存泄漏

 执行monkey测试时,有时会有内存泄漏情况。

  1. 手机弹出out of memory对话框-----则确定有内存泄漏
  2.  手机没提示但是实际有内存泄漏,排除方法通过logcat文件GC输出log信息,搜索关键词GC。

            若存在以下任意一个情况,就可能存在内存泄漏。【操作:打开2个命令窗口,一个执行adb logcat;另个执行monkey,结束后,Ctrl+c中断log抓取】

            a、GC_FOR_ALLOC, 因为在分配内存时内存不够引发的

            b、GC_EXPLICIT, 表明GC被显式请求触发的,如System.gc调用

            c、GC_CONCURRENT,  表明GC在内存使用率达到一定的警戒值时,自动触发

            d、GC_BEFORE_OOM, 表明在虚拟机抛出内存不够异常OOM之前,执行最后一次回收内存垃圾

发现内存泄漏,可利用hprof参数的内存生成内存报告。

发现内存泄漏,执行相同monkey,加个参数【hprof】

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

如果指定了这个选项,monkey会在发送时间的前后生成app内存快照文件,一般会在手机设备的/data/misc目录下生成hprof的文件。

(注:  /data/misc  需要root权限,可以在手机上安装个RE查看或通过手机助手查看)

 

【--hprof】:指定该项后在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项

【--throttle】:每个事件结束后的间隔时间——降低系统的压力

【--pct-touch】:指定触摸事件的百分比,如:--pct-touch 5%

【--pct-motion】:<percent> (滑动事件)

拓展:

--pct-trackball <percent> (轨迹球事件) 、

--pct-nav <percent> (导航事件 up/down/left/right)、

--pct-majornav <percent> (主要导航事件 back key 、 menu key)、

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

--pct-appswitch <percent> (activity之间的切换)、

--pct-anyevent <percent>(任意事件)

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!