当前位置:   article > 正文

Monkey测试(一)

monkey测试

备注:未经博主允许禁止转载

个人笔记(整理不易,有帮助点个赞)

笔记目录学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客

个人随笔工作总结随笔_8、以前工作中都接触过哪些类型的测试文档-CSDN博客

目录

一:简介

二:常见参数

三:日志分析

四:简单脚本编写


一:简介

Monkey测试是Android平台自动化测试的一种手段, 通过Monkey程序模拟用户触摸屏幕、滑动,Trackball(轨迹球)、按键等操作来对设备上的程序进行压力测试, 检测程序多久的时间会发生异常(奔溃,闪退,无响应(性能方面的bug)等)。
monkey是命令行工具,是安卓系统自带的一个脚本,通过adb工具在PC端调用

缺点:Monkey虽然可以根据一个指定的命令脚本发送按键消息, 但其不支持条件判断, 也不支持读取待测界面的值来执行验证操作。

作用:monkey可以用来做随机测试,压力测试、自动化测试、稳定性测试,冒烟测试。
monkey什么时候用?等产品稳定了, 没有特别多的bug时候, 一般会用monkey去测试待测应用的稳定性、健壮性(是否会发生闪退、崩溃);整机测试。

monkey是压测手机app的稳定性,不是对服务器

附加:

(1)

可以找到monkey脚本在哪里

查看调用的jar包

从上面看出:monkey是装载电脑上面的,它本身就存在于每一个安卓系统中,它有monkey这样一个脚本,去调用这个jar包(理解可能还不够深入)

(2)日志和执行事件数放最后,要不可能会报错

二:常见参数

(1)-p
用于约束限制, 用此参数指定一个或多个包(Package, 即App名字) 。

指定指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包, Monkey将允许系统启动设备中的所有APP

  1. adb shell monkey -p com.eg.android.AlipayGphoneRC 1000
  2. #抖音(测试)
  3. adb shell monkey -p com.ss.android.ugc.aweme 1000
  4. #1000是事件计数(即让Monkey程序模拟1000次随机用户事件)
  5. #指定2个: -p A包 -p B包

注入事件1000次,还有一些日志

分析日志参考:https://www.cnblogs.com/fighter007/p/8439309.html

(2)-s
用于指定伪随机数生成器的seed值, 如果seed相同, 则两次Monkey测试所产生的事件序列也相同的
命令:
Monkey测试1:adb shell monkey -p 包名 -s 101 100      提前指定
Monkey测试2:adb shell monkey -p 包名 -s 101 100 
说明:
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作, 即一个序列) 是一样的。

操作序列虽然是随机生成的, 但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

(3)-v

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别
-v:日志级别Level 0 
说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息
-v -v:日志级别Level 1 
说明:提供较为详细的日志, 包括每个发送到Activity的事件信息
-v -v -v:日志级别Level 2 
说明:最详细的日志, 包括了测试中选中/未选中的Activity信息
命令:adb shell monkey-pcom.lemon.lemon ban-v 100 
 

(4)事件时延

--throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
命令:adb shell 包名 --throttle 3000 100 

--randomize-throttle
在事件之间插入随机延迟, 随机延迟范围为0到throttle设置的时间, 单位为毫秒
命令:adb shell 包名 --throttle 3000 --randomize-throttle 100 
说明: 每次事件的间隔在0到3000毫秒之间不固定

备注:执行一百次monkey随机事件

(5)白/黑名单

--pkg-whitelist-file       白名单, 后面接txt文件
1) 第一步把你设置的白名单的包名写到一个txt文档里面, 记得路径和文档名字都是英文
2) 把这个文件拉到我们的安卓机中去, 放到/data/local/tmp下面
adb push d:\whitelist.txt /data/local/tmp
命令:adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt 100 

--pkg-blacklist-file黑名单, 后面接txt文件
命令:adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt 100 

注意:包名换行

(6)保存日志

在后面加上空格 > 目录

(7)百分比事件

  1. #100%的点击事件
  2. --pct-touch 100
  3. #可以组合,同样方式拼接就行了
  1. #怎么中途停止
  2. 1;ctrl+z
  3. 2:adb shell
  4. #查看进程
  5. 3:ps
  6. 4:kill 进程端口

  1. 常用的是1,2,3,5,6,7(因为是从0开始的,都-1就行)
  2. 1:触摸(--pct-touch)
  3. #按下/抬起
  4. Touch(ACTION_DOWN)和Touch(ACTION_UP)
  5. 2:手势(--pct-motion)
  6. #直线滑动操作
  7. #按下、随机移动、抬起,在手机看到是一个没有拐弯的直线操作(比如上滑列表下滑列表)
  8. ACTION_DOWN、ACTION_MOVE、ACTION_UP
  9. 3:二指缩放(--pct-pinchzoom)
  10. #放大缩小手势操作
  11. 起始(两个手指同时点下):ACTION_DOWN、ACTION_POINTER_DOWN
  12. 中间(两个手指进行直线滑动):ACTION_MOVE
  13. 结束(两个手指同时放开):ACTION_UP
  14. 4:轨迹(--pct-trackball)
  15. 现在比较少了
  16. 5:屏幕旋转(--pct-rotation)
  17. #横屏、竖屏
  18. 其中degree:旋转方向,0表示90度,1表示180度,2表示270度,3表示360
  19. 6:基本导航事件(--pct-nav)
  20. #指定方向设备的上下左右按键操作(现在手机比较少了)
  21. key(ACTION_DOWN)、Key(ACTION_UP)
  22. 7:主要导航事件(--pct-majornav)
  23. #如中间键、回退键、菜单键
  24. 如Home键
  25. key(ACTION_DOWN)、Key(ACTION_UP)
  26. 8:系统按键(--pct-syskeys)
  27. #如Home键、返回键、音量键等
  28. key(ACTION_DOWN)、Key(ACTION_UP)
  29. 9:启动Activity事件(--pct-appswitch)
  30. #手机上每一个界面就是一个Activity
  31. 10:键盘事件(--pct-flip)
  32. #点击输入框、键盘弹起、点击输入框外区域、键盘回收等
  33. 11:其他类型事件(--pct-anyevent)
  34. #如按键、其他不常用的设备上的按钮等

(8)忽略事件

  1. #忽略某些事件
  2. --ignore [事件类型]
  3. #指定某些操作的百分比
  4. --pct [操作类型]
  5. #--ignore在monkey的执行过程中,忽略部分引起monkey停止的事件,如:
  6. crashes:应用奔溃
  7. timeoutsANR application not responding:应用未响应
  8. security:安全验证
  9. native:系统奔溃
  10. 如:忽略奔溃:--ignore-crashes

三:日志分析

拿抖音测试一下

adb shell monkey -p com.ss.android.ugc.aweme -v -v -v 1000 > d:\log2.txt

这些事件组成了一个猴子,Seeded: 1592550640194,如果要复现bug可以使用它

对按键想了解可以搜下:Android KEYCODE键值对应大全

看日志的时候,主要关注timeouts、error、ANR、exception,crash,通过ctrl+f去查看

四:简单脚本编写

  1. #头文件信息
  2. #类型
  3. type = raw events
  4. #执行1
  5. count = 1
  6. #速度
  7. speed = 1.0
  8. #启动
  9. start data >>
  10. #括号里面是包名,这里我用抖音测试
  11. LaunchActivity(com.ss.android.ugc.aweme)
  12. #点击事件,这里的定位我随便写的
  13. Tap(73,1247)
  14. UserWait(5000)
  15. Tap(600,1200)
  16. UserWait(5000)
  17. Tap(620,12)
  18. UserWait(5000)

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号