android测试-monkey测试


前言

Monkey 测试是通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序客户端的稳定性测试;
通俗来说,Monkey 测试即“猴子测试”,是指像猴子一样,不知道程序的任何用户交互方面的知识,就对界面进行无目的、乱点乱按的操作;
Monkey 测试是一种为了测试软件的稳定性、健壮性的快速有效的方法;
Monkey 程序是 Android 系统自带的,由 Java 语言写成,在 Android 文件系统中的存放路径是: /system/framework/monkey.jar;
Monkey 程序需要通过 adb 来运行。

一、为什么Monkey测试

1、用户量比较大
2、用户的时间比较长

压力测试、稳定性测试
压力测试:在一定时间内进行大量操作
稳定性测试:趋势

进行monkey测试的阶段
功能基本稳定,项目验收前

二、什么是Monkey测试

操作:随机的,针对整机,模拟人操作(调节亮度、声音、去截屏设置)、伪随机(有逻辑)

monkey位置:系统中文件夹,/system/bin/monkey

monkey优点:
1)一条语句就是一个自动化脚本
2)有log输出
3)速度可控
4)长时间测试稳定(adb稳定)
缺点
1)无法回溯路径
2)log信息量巨大,难以排查bug

三、如何做monkey测试

1、基本环境准备
1)电脑设置
jdk、sdk准备好
环境变量 java --version
sdk压缩,解压缩即可使用 adb version

2)手机端
打开开发者模式->USB调试

3)手机(模拟器)连接adb成功
adb连接成功 adb devices

2、执行monkey测试
整机测试,200是count(必填)

adb shell monkey 200

1)连接模拟器

192:~ yingyan$ adb connect 127.0.0.1:62001

2)查看是否成功

192:~ yingyan$ adb devices
List of devices attached
127.0.0.1:62001	device

3)执行monkey测试
查看monkey相关参数

192:~ yingyan$ adb shell monkey
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
              [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
              [--ignore-crashes] [--ignore-timeouts]
              [--ignore-security-exceptions]
              [--monitor-native-crashes] [--ignore-native-crashes]
              [--kill-process-after-error] [--hprof]
              [--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] [--pct-pinchzoom PERCENT]
              [--pct-permission PERCENT]
              [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
              [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
              [--wait-dbg] [--dbg-no-events]
              [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
              [--port port]
              [-s SEED] [-v [-v] ...]
              [--throttle MILLISEC] [--randomize-throttle]
              [--profile-wait MILLISEC]
              [--device-sleep-time MILLISEC]
              [--randomize-script]
              [--script-log]
              [--bugreport]
              [--periodic-bugreport]
              [--permission-target-system]
              COUNT

具体例子

1、针对整机进行200次事件操作

adb shell monkey 200

如何看包名?
-s 系统
-3 客户

192:~ yingyan$ adb connect 127.0.0.1:62001
connected to 127.0.0.1:62001
#查看报名 adb shell pm list packages
192:~ yingyan$ adb shell pm list packages -3
package:com.sankuai.meituan
package:com.mt.mtxx.mtxx
package:com.tencent.mobileqq

点击哪个就显示哪个包名(有时app卡死,不建议用)
adb shell am monitor

2、对指定应用进行200次的事件操作

192:~ yingyan$ adb shell monkey -p com.sankuai.meituan 200

3、忽略参数
[–ignore-crashes]
[–ignore-timeouts]
如果使用该参数,则执行中发生了崩溃或者anr的问题,会结束app,重新启动执行操作,继续之前的事件数,而且会在日志中记录该问题。
[–ignore-security-exceptions] 安全证书

4、序列
[-s SEED]序列值、种子值 如果两次monkey命令执行一样的seed值,那么表示操作的流程是一样的,但是操作的界面或者对象是否一样就不能保证
[-v [-v] …] 日志的级别程度 -v -v -v 最详细的日志体现

5、延迟时间(两个操作的间隔时间,模拟人操作要有停顿)
[–throttle MILLISEC] 延迟时间,单位:毫秒 450
工作中的事件数 35万次 +延迟时间,8-10小时

例子:
adb shell monkey + 行为参数 + “>” + {日志保存路径}

adb shell monkey -p com.xxx.myapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000 > d:\mylog.log

结果分析
1、//monkey finished表示测试成功,其他情况都是失败,需要提交bug
1)crash崩溃 logcat
2)anr 无响应 adb shell /data/anr/traces.txt
3)monkey测试没有完成,异常中断
4)关机
5)重启reboot

2、结果查看
1)进行mokey测试,可以看到进行事件的百分比(这个需要开发文档查看)比如:tag、touch…
在这里插入图片描述

bug提交:专项测试
标题:[monkey][CRASH/anr/重启/关机]app在执行mongkey测试是发生问题
步骤
1、准备
2、命令
3、查看结果
预期结果
执行monkey无异常
实际结果
日志信息[来源于logcat]
fatal、exception、reboot、oom、anr
03-02 21:54:39.508 I/art ( 5815): Wrote stack traces to ‘/data/anr/traces.txt’

发现anr,需要把数据pull到本地,然后再给开发定位

192:~ yingyan$ adb pull /data/anr/traces.txt /Users/yingyan/Desktop/adb/log/
/data/anr/traces.txt: 1 file pulled, 0...ed. 41.3 MB/s (294529 bytes in 0.007s)
部分参考:https://blog.csdn.net/weixin_37124805/article/details/122846710?ops_request_misc
推荐:看详细参数解析,可以看上面链接
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值