Android Tool——Monkey自动化测试

引言

Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。传统意义上,Monkey测试主要针对的是应用的健壮性与稳定性,它通过大量的随机的用户事件来检测应用是否会异常。

一、环境配置 MONKEY测试使用的是ADB命令,因此只需要配置ADB环境即可。

二、运行Monkey测试的准备工作

Monkey是谷歌自带的自动化测试工作,所以我们并不需要额外安装。
但在执行在Monkey测试前,必须进行以下准备:

  1. 手机屏幕超时设置为30分钟(或者更长),防止手机进入锁屏状态。
  2. 插入SIM卡和存储卡后将手机开机,开启ADB模式(即USB调试模式),连接到PC(存储卡剩余空间尽量留大,建议 1G以上)
  3. 开启系统log。(具体可依据每个机型平台决定,MTK平台,输入(×#×#3646633#×#×)进入工程模式)
  4. 在PC上执行 运行—>cmd,在弹出的命令窗口中,输入adb
    devices,检查设备是否连接
  5. 在弹出的命令窗口中,输入adb shell,进入Linux Shell
  6. 输入ls data/data查看data/data文件夹下的应用程序包。(注:我们能测试的应用程序包都在这个目录下面)
  7. 输入Monkey命令,回车——>开始运行了

三 、Monkey 命令详解

1、Monkey通用命令格式:

monkey [options] <随机事件的次数> [保存到具体路径下]

例:【adb shell monkey –throttle 500 -s 600 –ignore-crashes –ignore-timeouts –ignore-security-exceptions –ignore-native-crashes –monitor-native-crashes -v -v -v 800000>/mnt/sdcard/all_report01.txt】
又如:
【monkey -p com.lenovo.ideafriend –ignore-crashes –ignore-timeouts –ignore-native-crashes –pct-touch 30 -s 1 -v -v –throttle 200 100000 2>/sdcard/error.txt 1>/sdcard/info.txt】

2、Monkey参数含义详解

-p com.mediatek.bluetooth 只仅针对特定包名(com.mediatek.bluetooth)进行测试
-p <包名>-c <包里的类名>: 只仅针对特定包名里的某个类进行测试
–ignore-crashes 忽略应用程序崩溃(Force & Close错误),继续发送执行事 件,直到事件数执行完成
–ignore-timeouts 忽略应用程序发生ANR(Application No Responding)错误 时,直到事件数执行完成
–ignore-native-crashes 忽略本地应用程序发生奔溃,直到事件数执行完成
–pct-touch 30 调整触摸事件占比为30%。即整个事件过程中触摸事件占30%
-s 1 伪随机数生成器seed值。Seed值为1。相同的seed值再次执 行monkey,将产生相同的事件序列。

-v:

命令行上的每一个-v都将增加反馈信息的详细级别。
-v: Level0(默认),除了启动、测试完成和最终结果外只提供较少的信息。
-v-v: Level1,提供了较为详细的测试信息,如逐个发送到Activity的事件信息。
-v-v-v:Level2,提供了更多的设置信息,如测试中选中或未选中的Activity信息。

–throttle 200 事件之间延时200毫秒。可以控制monkey的执行速度,如果不指定该选项,monkey事件间将不会延时。
100000表示 执行事件数为10万次
2>/sdcard/error.txt Leve1 2日志保存到sdcard 上的error.txt中
1>/sdcard/info.txt Leve1 1日志保存到sdcard 上的info.txt中
–pct-motion调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)
–pct-nav调整基本的导航事件百分比。(导航事件由方向输入设备的上下左右按键所触发的事件组成)(注不常用操作。)
–pct-majornav调整主要导航事件的百分比。(这些导航事件通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退按键、菜单按键)
–pct-syskeys调整系统事件百分比。(这些按键通常由系统保留使用,如Home、Back、Start Call、End Call、音量调节)
–pct-appswitch调整Activity启动的百分比。(在随机的时间间隔中,Monkey将执行一个startActivity()调用,作为最大程度覆盖被测包中全部Activity的一种方法)
–pct-anyevent调整其他事件的百分比。(这包含所有其他事件,如按键、其他在设备上不常用的按钮等)
–dbg-no-events,Monkey将执行初始启动,进入一个测试Activity,并不会在进一步生成事件。为了得到最佳结果,结合参数-v,一个或多个包的约束,以及一个保持Monkey运行30秒或更长时间的非零值,从而提供了一个可以监视应用程序所调用的包之间转换的环境。
–hprof将在Monkey生成事件序列前后生成profilling报告。在data/misc路径下生成大文件(~5Mb),所以要小心使用。
–ignore-security-exception当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
–kill-process-after-error当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。设置此项,将会通知系统停止发生错误的进程。注意,正常(成功)的结束,并没有停止启动的进程,设备只是在结束事件之后简单的保持在最后的状态。
–monitor-native-crashes监视并报告Andorid系统中本地代码的崩溃事件。如果设置–kill-process-after-error,系统将停止运行。
–wait-dbg停止执行中的Monkey,直到有调试器和它相连接。

四、Monkey测试生成日志类型及结果分析

info.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时发送的各种事件,如触摸事件的位置等等。
error.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时产生的一些ANR、强制关闭等异常。
LOG文件:此文件在手机上的LOG文件夹中中,主要主要记录程序对MONKEY测试时的响应情况。

1、检查测试是否完成

通过info.txt文件,可以查看Monkey是否执行成功。如下图
这里写图片描述

2、结果分析整理

前文有提及,我们目前执行Monkey测试的目的是为了检查是否有隐患及程序健壮性,我们可以通过分析相关Log文件进而找出。而这类问题主要是通过Log文件来体现的(笔者目前所接触的平台是MTK6797,)。
Error文件也记录了部分异常,考虑到这部分文件格式已经很规范,因此不需要再次整理。
Log文件记录了所有信息,因此我们需要进行初步分析整理后再提交研发,以减少研发工作量。
注意:内存泄露检查目前主要针对MTK平台,高通平台等其他平台目前的LOG还未将此部分信息体现。以下说明仅针对MTK平台的LOG。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CrazyMo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值