monkey的基本使用

一、monkey介绍

   1.功能:采用伪随机测试的方式,来完成app的稳定性测试

   2.执行原理:通过monkey的shell脚本去执行安卓系统中自带的monkey.jar工具

   3.通常用于盲测,压力测试和冒烟测试

      1)盲测:忽略功能和业务逻辑进行随意的测试

      2)压力测试:通过长时间的高频操作,测试app在测试机上运行的性能

      另外:压测仅仅靠monkey是不够的,还需要别的工具,如Jmeter

      3)冒烟测试:在进行功能测试之前,通过monkey测试app的基本可用性

   4.局限性:无法遵循功能逻辑进行自动化测试,因此不能将其用于通常的功能自动化

二、adb介绍和环境搭建:

   1.我们需要安装adb,用pc在手机上调用monkey的shell脚本,去执行monkey.jar

   2.adb是一个C/S架构的命令行工具,主要由3部分组成

   

3. 环境搭建:

   1)下载SDK:解压到不包含中文和空格的目录下

   2) 管理SDK内容:运行SDK MANAGER,安装platform-tools.tools以及需要的API版本及对应的build-tools

   3) 配置环境变量:将platform-tools路径添加到环境变量path中

   4)adb版本查看:adb version

   

三、monkey命令介绍:

   1、命令执行方式:adb shell monkey

   

   2、常用属性:

      1)-p 选择包名(--pkg-whitelist-file 白名单)

      2)-v 指定日志级别,一般用-v -v -v指定3级的详细日志

      3)-s 随机事件的种子数,种子数相同则生成相同随机操作序列

      4)--throttle 操作的延时

      5)count 执行次数(该参数必须带上)

   3.获取app包名的命令:adb shell pm list package -3

   其中-3代表第三方应用(即不是安卓自带的应用)

   4.指定某app进行测试:

      1)该app包名为:com.timeweekly.timefinance

      2)输入命令:adb shell monkey -p com.timeweekly.timefinance -v -v -v --throttle 300 500 >E:\MonkeyLog\timeweekly.txt

      其中adb shell monkey 表示完成对安卓系统中命令的调用;

      -p com.timeweekly.timefinance 表示指定了某个app的包名;

      -v -v -v 表示指定3级日志;

      --throttle 300 表示延时时长;

      500 表示执行次数(一般跑上万次);

      >E:\MonkeyLog\timeweekly.txt 表示把日志内容放在E盘,MonkeyLog文件夹下的timeweekly.txt文件里。

四、日志分析:

   1、正常结束后,日志结尾一般能看到//Monkey finished;但是系统崩溃后,不一定能看到该结尾

   2、app无响应时日志文档结尾出现:Monkey aborted due to error

   3.一般在日志中查询关键字:exception、crash和error

      1)exception:定位错误提示信息,给开发看,让开发改bug

      2)crash:崩溃问题

      3)anr(application not responding):应用程序未响应

   4、当出错后,有可能是机型的兼容性问题,也有可能是app的问题

   5、出错类型举例:比如多次点击某个按钮,出现空指针错误

五、高级参数的应用:

   1、--ignore [事件类型] 若某些事件导致monkey脚本终止,可以该参数忽略问题,继续执行monkey,而不中途退出

 

      一般要加上crash和timeouts。因为公司实际执行monkey时,通常跑几个小时或者几天,若出错,测试人员无法及时得知,一般都是跑完才去看。所以加上忽略事件就很有必要

命令:adb shell monkey -p com.timeweekly.timefinance --throttle 200 --ignore-crashes --ignore-timeouts -v -v -v 10000 >E:\MonkeyLog\20190401.txt

  日志:操作10000次,运行了约8分钟

 

2、--pct [操作类型] [该操作所占的百分比] 指定某类操作的百分比,让monkey只做或者不做某一类操作

   比如:--pct -touch 100 仅做触摸操作

   

   3、用monkey的种子编号(seed)去复现操作(-s seed序列),记得要关闭app后再执行该命令

   

4、当测试机有多个时,用 -s + 设备名称 选择某测试机进行测试:

先用adb devices查看所有已连接的设备

命令:adb -s emulator-5554 shell monkey -p com.timeweekly.timefinance --throttle 200 --ignore-crashes --ignore-timeouts -v -v -v 100 >E:\MonkeyLog\20190401-multiDevices.txt

发布了26 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/changyixue/article/details/88862245