• 13
  • 13
分享
  • Monkey测试——软件测试圈
  • 饭团🍙 2020-12-15 11:13:05 字数 4137 阅读 3453 收藏 13

Monkey介绍

通过Monkey程序模拟用户触摸屏幕,滑动Trackball,按键等操作来对设备上的程序进行压力测试,检测程序错就的时间会发生异常

Monkey用来做什么

Monkey主要用于Android的压力测试,自动的一个压力测试小工具,主要目的就是为了测试app是否会Crash(崩溃)

Monkey程序介绍

(1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar

(2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey

(3)Monkey 命令启动方式:

可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试

在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试

在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器

Monkey命令

1)执行monkey测试设备中所有app100次

adb shell monkey 100

1.png

2)执行monkey测试设备中所有app1000次输出到33.txt

adb shell monkey 1000 >D:\log\33.txt

2.png

3.png

3)执行monkey测试指定app

adb shell monkey -p 包名 测试次数

例如:

执行monkey测试应用百度10000次

adb shell monkey -p com.baidu.searchbox 10000

4.png

4)显示日志详细程度

日志仅提供启动提示,测试完成和最终结果的少量信息

adb shell monkey -p com.baidu.searchbox 1000 -v

日志较为详细,包括每个发送到Activity的事件信息

adb shell monkey -p com.baidu.searchbox 1000 -v -v

最详细的日志,包括测试中选中/未选中的Activity信息

adb shell monkey -p com.baidu.searchbox 1000 -v -v -v

5)将log信息输出到文档中

adb shell monkey -p com.baidu.searchbox 10000 -v-v-v >D:\log\888.txt

6)忽略崩溃:--ignore-crashes

应用发生崩溃或异常时Monkey会停止运行

设置--ignore(忽略)-crashes(崩溃)将忽略崩溃或异常继续发送事件给系统,直到事件计数完成

执行monkey测试10000次忽略异常输出到44.txt

adb shell monkey --ignore-crashes 10000 >D:\log\44.txt

7.png

8.png

7)忽略超时:--ignore-timeouts

应用程序发生任何超时错误(如:Application Not responding)Monkey会停止运行

设置 --ignore-timeouts(超时)忽略超时错误将继续发送事件给系统,直到事件计数完成

adb shell monkey --ignore-timeouts 1000 >D:\log\7979.txt

9.png

8)随机数:-s

https://blog.csdn.net/u011436666/article/details/53998332[Monkey随机数种子事件]

随机数种子,用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的(经常用到bug的复现上)

adb shell monkey -s 26 -v 200 >D:\log\123.txt

10.png

adb shell monkey -v -s 26 200 >D:\log\456.txt

11.png

9)时延:--throttle(毫秒)

用于指定操作事件间的时延,单位是毫秒,如果不指定这个参数,monkey会尽可能快的生成和发送消息

adb shell monkey -p com.baidu.searchbox --throttle 300 -v 100

12.png

10)触摸事件: --pct-touch 占比数


调整触摸事件百分比(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)

执行10个伪随机用户事件流,并调整其中触摸事件的百分比为80%

adb shell monkey --pct-touch 80 -v 100 >D:\log\11.txt

13.png

14.png

11)手势事件: --pct-motion 占比数

调整motion事件百分比(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)

adb shell monkey --pct-motion 70 -v 100 >D:\log\99.txt

15.png

16.png

0:--pct-touch//touch

events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)

1:--pct-motion//motion

events percentage手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯

2:--pct-pinchzoom//pinch

zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作

3:--pct-trackball//trackball 即单纯的Move(ACTION_MOVE)

events percentage轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)

4:--pct-rotation//screen

rotation events percentage屏幕旋转百分比,横屏竖屏

5:--pct-nav//nav

基本导航事件。即来自于方向输入设备的上下左右操作。

events percentage”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有

6:--pct-majornav//major

即Navigation Bar的确认,菜单,返回键等

nav events percentage”主要”导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)

7:--pct-syskeys//system(key)

operations percentage”系统”按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)

8:--pct-appswitch//app

switch events percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

9:--pct-flip//keyboard

flip percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回

10:--pct-anyevent//anyevents

该事件可能包含其他上述事件。

percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。

17.png

monkey -p com.baidu.searchbox -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>D:/log/log.txt 2>&1 &

-p后面接着的对应的包名,如果是整机测试,就不需要 -p 包名

-s后面是对应的种子数,一般种子数在23,同步测试的结果,一般种子的个数固定为23,和选择的操作步骤就是同步的。

–ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash(崩溃)或者timeout(超时)的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。

-v 指的是Monkey测试时打印log级别。

100000 这里是指点击的次数,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次.D:/log/log.txt测试的log记录在手机上D:/log/下面的log.txt里面。

2>&1 固定的写法,代表的意思是中间忽略的东西的日志一并输入到指定的文件中。

最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。

测试所有模块 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &

测试所有模块忽略崩溃,超时,设置时延200毫秒,23的伪随机数种子 最详细的log日志 测试运行10000次,最后将日志输出到test.txt文件 中,中间忽略的东西也一并输入到指定的文件中,可以拔掉数据线,不会影响Monkey测试

adb shell monkey --ignore-crashes --ignore-timeouts --throttle 200 -s 23 -v-v-v 10000 >D:/log/test.txt 2>&1


作者:照彬

原文链接:https://blog.csdn.net/weixin_45173721/article/details/110239946#comments_14205328

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 鱼和熊掌不可兼得。但理想可以照进现实,现实可以修订理想。理想照进现实,往往让充满理想的人感到很痛苦。现实缺少了理想,总觉得生活得了无生趣。理想来自过往的经历,照进现在的现实,早已经不是当初的河流,无非是刻舟求剑罢了。如果希望理想照进现实,还能改造现实,务必要从现实出发,对照理想修订。现实不容置疑,只是你不相信罢了。夏天就是夏天,偶尔下雨变冷,还是夏天,不要当成全部。改造世界的前提不是完全的认识世界,我们终其一生,不过是盲人摸象而已。有问题很正常,有痛苦很正常,有期待很正常,有想法也很正常。不正常的是,我们总是期待没有问题,没有痛苦,没有期待,没有想法。这都是侮辱自己的智商和大脑。我们生活到今天...
            1 1 881
            分享
          • 前言不同类型的软件产品测试的方式和重点不一样,测试流程也会不一样。同样类型的软件产品,不同的公司所制定的测试流程也会不一样。虽然不同软件的详细测试步骤不同,但它们所遵循的最基本的测试流程是一样的。分析测试需求测试人员在制定测试计划之前需要先对软件需求进行分析,以便对要开发的软件产品有一个清晰的认识,从而明确测试对象及测试工作的范围和测试重点。在分析需求时还可以获取一些测试数据,作为测试计划的基本依据,为后续的测试打好基础。此外,分析测试需求也是对软件需求进行测试,以发现软件需求中不合理的地方。被确定的测试需求必须是可核实的,测试需求必须有一个可观察、可评测的结果。无法核实的需求就不是测试需求。...
            0 0 1487
            分享
          • 前言一转眼做技术也有 7、8 年时间,担任测试开发教学也有4个年头了。因为常年帮助各个公司的测试同仁们解决问题,自然比待在某个固定的环境能接触到更多的实际案例,也能见到更多团队的痛点。同时又有时间去系统学习,完善自己的技术栈。既然有这个优势,也有这个精力,那就去分享更多有价值的东西。行业整体技术提升了,大家都是受益者。这才是我们创建 **"片言"** 的初衷--更高效地帮助技术人员解决问题。可以分享的内容实在太多,所以在想什么对大家最有价值呢?越来越多的公司开始注重服务端的测试。接口测试正是服务端最好的测试方式,也是我认为所有的测试手段里性价比最高的一个。但是本次不讲基础,...
            0 1 2547
            分享
          •   本文深入探讨了在实际软件测试项目中遇到的挑战,并反思了如何通过一系列策略来提升个人和测试团队的工作效率。文章首先分析了何为效率及效率提升对人和企业有什么益处,接下来介绍当前测试行业环境下,如经济压力、年龄增长和体力下降等因素对测试人员的影响,接下来介绍了在实际项目中遇到的问题,然后通过遇到的问题提出了通过文档化知识、分享经验、明确职责等方法来优化工作流程。包括内容如下:  1、提升效率的本质  何为效率,效率分为生产效率,时间效率,资源利用效率,管理效率等,对于我们底层工作的人来说和我们密切相关的主要为时间效率,时间效率是指,我们常常用“做事效率”来形容某人完成任务所需的时间与其能力的匹配...
            0 0 231
            分享
      • 51testing软件测试圈微信