本文作者:包子也沉默

Appium+python自动化(十九)- 猴哥失散多年的混血弟弟还是妹妹- Monkey(猴子)参数(超详解)

包子也沉默 3年前 (2019-07-15) ( 07-15 ) 1835 1条评论
摘要: ;以下命令表示运行Intent.CATEGORY_LAUNCHER类别的Activity并发送1000个随机事件。$adbshellmonkey-cIntent.CATEGORY_LAUNCHER1000    2.5调试类参数1.应用程序崩溃后继续发送事件如果你希望monkey在应用程序崩溃后继续发送事件,则需要用到--ignore-crashes命令$adbshellmon

 简介

  前边几篇介绍了Monkey以及Monkey的事件,今天就给小伙伴们介绍和分享一下Monkey的参数。

rotation把横竖屏切换事件调整到10%。3、使用-s参数来指定命令执行的seed值Monkey会根据seed值来生成对应事件流,同一个seed生成的事件流是完全相同的。这里指定了seed值,是为

  首先我们看一下这幅图来大致了解一下:

代码上传至SCF,就可以自动运行;▪可以更高效的利用资源,按照执行时间和调用次数收费,代码不运行时不产生费用;▪可以快速建立持续扩展的能力,每个云函数互不影响,并行处理不同的逻辑。此外,小程序·云开发

1、Monkey 命令 基本参数介绍

-p <允许的包名列表>         

outs命令。$adbshellmonkey--ignore-timeouts<event-count>--ignore-timeouts:在设置此选项后,当应用程序发生任何超时错误(如A

用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果丌指定包, monkey将允许系统启动设备中的所有app。  

,它集成了微信公众平台及腾讯云两个核心业务的技术能力,免鉴权、免后端配置和运维、一切围绕API和SDK为核心。以云调用功能为例,只要在小程序端触发云函数,便将经过微信自动鉴权直接调用,如数据分析、客服

指定一个包:

ty()方法最大限度地开启该package下的所有应用。 7.调整屏幕旋转事件百分比$adbshellmonkey--pct-rotation<percent>--pct-rot

adb shell monkey -p com.shjt.map 100

指定多个包:

算发展演化的必然结果。『传统开发痛点解析及解法』“Serverless所提供的接口,简化了云计算的编程,其代表了程序员生产力的又一次的变革,一如编程语言从汇编时代演变为高级语言时代。”2019年,伯克

adb shell monkey -p fishjoy.control.menu  &ndash;p com.shjt.map  100

-v        

monkey-f<scriptfile><event-count>eg:$adbshellmonkey-f/mnt/sdcard/test1 2.伪随机数生成种子值使

用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示: 

(2006年诞生IaaS),云计算的进程从物理机演进到IaaS,再到PaaS,已经将应用程序的运行环境和通用组件,越来越多地交给云服务商。Serverless进一步将主机管理、操作系统管理、资源分配、

Level 0  :  adb shell monkey -p com.shjt.map -v 100               // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息   

Level 1  :  adb shell monkey -p com.shjt.map -v  -v 100          // 提供较为详细的日志,包括每个发送到Activity的事件信息

Level 2  :  adb shell monkey -p com.shjt.map -v  -v  -v 100     // 最详细的日志,包括了测试中选中/未选中的Activity信息


-s(随机数种子)            

100//提供较为详细的日志,包括每个发送到Activity的事件信息Level2:adbshellmonkey-pcom.shjt.map-v-v-v100//最详细的日志,包括了测试中选中/未选中

用亍指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。  示例:

Monkey遇到意外时能继续执行在执行Monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数--ignore-crash和--ignore-timeouts,让Monk

monkey测试1:

的文件ID,使用文件ID可以在image、audio等小程序组件中直接访问文件。通过小程序·云开发上传的文件在小程序内默认允许访问,不需要配置CDN域名白名单。2019年1月,腾讯云宣布推出总价值超过

adb shell monkey -p com.shjt.map &ndash;s 10 100

monkey测试2:

nt-count>--ignore-security-exceptions:在设置此选项后,当应用程序发生任何权限错误(如启动一个需要某些权限的Activity)时,monkey将继续运行直到计

adb shell monkey -p com.shjt.map &ndash;s 10 100


--throttle <毫秒>            

和安全防护的能力。在用户量突增时,小程序·云开发的开发人员会立即通过响应的监控及告警发现流量的变化,然后确认是否需要扩容。腾讯云基础运维能力也保证了开发者拥有能够快速扩充服务的能力,以避免对用户的服务

用亍指定用户操作(即事件)间的时延,单位是毫秒;如果丌指定这个参数,monkey会尽可能快的 生成和发送消息。

;event-count>eg:$adbshellmonkey-pcom.tal.kaoyan500$adbshellmonkey-pcom.tal.kaoyan-pcom.tencent.mm

示例:

less面前,迎刃而解。甚至在前后端分离与联调所产生的一系列权责、沟通与调试等开发痛点上,Serverless也能从以下5个维度完美解决:▪按需计费。不同于IaaS/PaaS预先分配计算资源的计费方式

adb shell monkey -p com.shjt.map --throttle 3000 100

2、monkey 参数

2.1参数分类

  • 常规类参数

  • 事件类参数

  • 约束类参数

  • 调试类参数

2.2常规类参数

常规类参数包括帮助参数和日志信息参数。帮助参数用于输出Monkey命令使用指导;日志信息参数将日志分为三个级别,级别越高,日志的信息越详细。

1.帮助类参数

monkey -h

 

2.日志级别

$ adb shell monkey -v <event-count>

-v:打印出日志信息,每个-v将增加反馈信息的级别。-v越多日志信息越详细,不过目前最多支持3个-v,即:

 

 

方。『小程序·云开发架构详解』云开发是一种BaaS,在引入了Serverless技术架构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云

使用的种子值等。频率参数主要限制事件执行的时间间隔。1.执行指定脚本$adbshellmonkey-f<scriptfile><event-count>eg:$adbshell

le30001002、monkey参数2.1参数分类常规类参数事件类参数约束类参数调试类参数2.2常规类参数常规类参数包括帮助参数和日志信息参数。帮助参数用于输出Monkey命令使用指导;日志信息参数

将大幅度提升;▪高扩展。Serverless架构的横向扩展是完全自动、有弹性的,且由服务提供者所管理;▪无需运维。运维的发展经历了人肉运维、自动化运维、DevOps和AIOps等阶段,而Serverl

构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云函数端,开发者可以直接使用官方提供的NodeSDK,来操作云资源。目前小程序·云开发一

 

 

方。『小程序·云开发架构详解』云开发是一种BaaS,在引入了Serverless技术架构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云

使用的种子值等。频率参数主要限制事件执行的时间间隔。1.执行指定脚本$adbshellmonkey-f<scriptfile><event-count>eg:$adbshell

le30001002、monkey参数2.1参数分类常规类参数事件类参数约束类参数调试类参数2.2常规类参数常规类参数包括帮助参数和日志信息参数。帮助参数用于输出Monkey命令使用指导;日志信息参数

将大幅度提升;▪高扩展。Serverless架构的横向扩展是完全自动、有弹性的,且由服务提供者所管理;▪无需运维。运维的发展经历了人肉运维、自动化运维、DevOps和AIOps等阶段,而Serverl

构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云函数端,开发者可以直接使用官方提供的NodeSDK,来操作云资源。目前小程序·云开发一

2.3事件类参数

事件类参数的作用是对随机事件进行调控,从而使其遵照设定运行,如设置各种事件的百分比、设置事件生成所使用的种子值等。频率参数主要限制事件执行的时间间隔。

1.执行指定脚本

$ adb shell monkey -f <scriptfile> <event-count>

eg:

$ adb shell monkey -f /mnt/sdcard/test1

 

2.伪随机数生成种子值

使用 -s命令可以重复执行之前的伪随机操作。本身每次执行伪随机事件操作也会默认生成一个seed值

$ adb shell monkey -s <seed> <event-count>

eg:

$ adb shell monkey -s 666 100

 

3.设置间隔

如果你希望在每一个指令之间加上固定的间隔时间,可以用--throttle(注意,前面是--)命令。

$ adb shell monkey --throttle <milliseconds>

eg:

$ adb shell monkey --throttle 3000  5

--throttle:后面接时间,单位为ms(<milliseconds>),表示事件之间的固定延迟(即执行每一个指令间隔的时间),若不接该选项,monkey将不会延迟。

 

4.调整触摸事件百分比

如果你希望调整触摸事件的百分比,记住使用--pct-touch。

$ adb shell monkey --pct-touch

eg:

$ adb shell monkey -v -v --pct-touch 100 200

<percent>--pct-touch:后面接触摸事件百分比

注意:触摸事件不单单是按键,它泛指发生在某一位置的一个down-up事件。

 

5.调整手势事件百分比

$ adb shell monkey --pct-motion

eg:

$ adb shell monkey -v -v --pct-motion 100 200

 

6.调整应用启动事件的百分比

如果你希望调整应用启动事件的百分比,记住使用--pct-app-switch。

$ adb shell monkey --pct-appswtich <percent>

--pct-appswitch:后面接应用启动事件百分比。

应用启动事件(即activity launches)俗称打开应用,通过调用startActivity()方法最大限度地开启该package下的所有应用。

 

7.调整屏幕旋转事件百分比

$ adb shell monkey --pct-rotation <percent>

--pct-rotation 后面接屏幕旋转事件的比例值。

 

8.其他参数

 

 

方。『小程序·云开发架构详解』云开发是一种BaaS,在引入了Serverless技术架构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云

使用的种子值等。频率参数主要限制事件执行的时间间隔。1.执行指定脚本$adbshellmonkey-f<scriptfile><event-count>eg:$adbshell

le30001002、monkey参数2.1参数分类常规类参数事件类参数约束类参数调试类参数2.2常规类参数常规类参数包括帮助参数和日志信息参数。帮助参数用于输出Monkey命令使用指导;日志信息参数

将大幅度提升;▪高扩展。Serverless架构的横向扩展是完全自动、有弹性的,且由服务提供者所管理;▪无需运维。运维的发展经历了人肉运维、自动化运维、DevOps和AIOps等阶段,而Serverl

构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云函数端,开发者可以直接使用官方提供的NodeSDK,来操作云资源。目前小程序·云开发一

2.4约束类参数

1.包约束

-p:后面接一个或多个包名(<allowed-package-name>),如果应用需要访问其他包里的Activity,那相关的包也需要在此同时指定。如果不指定任何包,monkey将允许系统启动全部包里的Activity。

$ adb shell monkey -p <allowed-package-name> <event-count>

eg:

$ adb shell monkey -p com.tal.kaoyan 500

$ adb shell monkey -p com.tal.kaoyan -p com.tencent.mm 500

 

2.activity类约束

如果你希望将monkey限制在一个或几个类别中,使用如下命令:

adb shell monkey -c <main-category> <event-count>

以下命令表示运行Intent.CATEGORY_LAUNCHER类别的Activity并发送1000个随机事件。

$ adb shell monkey -c Intent.CATEGORY_LAUNCHER  1000

  

事件(即activitylaunches)俗称打开应用,通过调用startActivity()方法最大限度地开启该package下的所有应用。 7.调整屏幕旋转事件百分比$adbshellm

 

 

方。『小程序·云开发架构详解』云开发是一种BaaS,在引入了Serverless技术架构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云

使用的种子值等。频率参数主要限制事件执行的时间间隔。1.执行指定脚本$adbshellmonkey-f<scriptfile><event-count>eg:$adbshell

le30001002、monkey参数2.1参数分类常规类参数事件类参数约束类参数调试类参数2.2常规类参数常规类参数包括帮助参数和日志信息参数。帮助参数用于输出Monkey命令使用指导;日志信息参数

将大幅度提升;▪高扩展。Serverless架构的横向扩展是完全自动、有弹性的,且由服务提供者所管理;▪无需运维。运维的发展经历了人肉运维、自动化运维、DevOps和AIOps等阶段,而Serverl

构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云函数端,开发者可以直接使用官方提供的NodeSDK,来操作云资源。目前小程序·云开发一

2.5调试类参数

1.应用程序崩溃后继续发送事件

如果你希望monkey在应用程序崩溃后继续发送事件,则需要用到--ignore-crashes命令

$ adb shell monkey --ignore-crashes <event-count>

在设置此选项后,当应用程序崩溃或发生失控异常时,monkey将继续运行直到计数完成。如果不设置此选项,monkey遇到上述崩溃或异常将停止运行。

 

2.超时错误继续发送事件

如果你希望monkey在任何超时错误发生后继续发送事件,则需要用到--ignore-timeouts命令。

$ adb shell monkey --ignore-timeouts

<event-count>--ignore-timeouts:在设置此选项后,当应用程序发生任何超时错误(如ANR,即Application Not Responding)时,monkey将继续运行直到计数完成。如果不设置此选项,monkey遇到此类超时对话框将停止运行。

 

3.应用程序权限错误发生后继续发送事件

如果你希望monkey在应用程序权限错误发生后继续发送事件,则需要用到--ignore-security-exceptions命令。

$ adb shell monkey --ignore-security-exceptions

<event-count>--ignore-security-exceptions:在设置此选项后,当应用程序发生任何权限错误(如启动一个需要某些权限的Activity)时,monkey将继续运行直到计数完成。如果不设置此选项,monkey遇到此类权限错误将停止运行。

 

4.其他

 

 

方。『小程序·云开发架构详解』云开发是一种BaaS,在引入了Serverless技术架构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云

使用的种子值等。频率参数主要限制事件执行的时间间隔。1.执行指定脚本$adbshellmonkey-f<scriptfile><event-count>eg:$adbshell

le30001002、monkey参数2.1参数分类常规类参数事件类参数约束类参数调试类参数2.2常规类参数常规类参数包括帮助参数和日志信息参数。帮助参数用于输出Monkey命令使用指导;日志信息参数

将大幅度提升;▪高扩展。Serverless架构的横向扩展是完全自动、有弹性的,且由服务提供者所管理;▪无需运维。运维的发展经历了人肉运维、自动化运维、DevOps和AIOps等阶段,而Serverl

构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云函数端,开发者可以直接使用官方提供的NodeSDK,来操作云资源。目前小程序·云开发一

3、Monkey参数应用综合案例

3.1测试场景

测试考研帮app Android版。测试希望通过Monkey来模拟用户的随机操作,检查被测应用是否会出现异常(应用崩溃或者无响应)。

3.2需求分析

1、测试是指定应用,因此需要使用-p指定被测app包名:com.tal.kaoyan

2、这个测试的目的是希望模拟用户操作,因此需要让Monkey执行的事件尽可能地接近用户的常规操作,这样才可以最大限度地发现用户使用过程中可能出现的问题。因此需要对Monkey执行的事件百分比做一些调整:

触摸事件和手势事件是用户最常见的操作,所以通过--pct-touch和--pct-motion将这两个事件的占比调整到40%与25%;目标应用包含了多个Activity,为了能覆盖大部分的Activity,所以通过--pct-appswitch将Activity切换的事件占比调整到10%;被测应用在测试中出现过不少横竖屏之间切换的问题,这个场景也必须关注,因此通过--pct-rotation把横竖屏切换事件调整到10%。

3、使用-s参数来指定命令执行的seed值 Monkey会根据seed值来生成对应事件流,同一个seed生成的事件流是完全相同的。这里指定了seed值,是为了测试发现问题时,便于进行问题复现。

4、使用--throttle参数来控制Monkey每个操作之间的时间间隔 指定操作之间的时间间隔,一方面是希望能更接近用户的操作场景,正常用户操作都会有一定的时间间隔;另一方面也是不希望因为过于频繁的操作而导致系统崩溃,尤其是在比较低端的手机上执行测试时。因此通过--throttle设置Monkey每个操作固定延迟0.4秒。

5、使用--ignore-crashs和--ignore-timeouts参数使Monkey遇到意外时能继续执行 在执行Monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数--ignore-crash和--ignore-timeouts,让Monkey在遇到崩溃或没有响应的时候,能在日志中记录相关信息,并继续执行后续的测试。

6、使用-v指定log的详细级别 Monkey的日志输出有3个级别:日志的级别越高,其详细程度也越高。为了方便问题的定位,这里将日志设为 -v -v.

3.3测试命令

adb shell monkey -p com.tal.kaoyan

--pct-touch 40 --pct-motion 25 

--pct-appswitch 10

--pct-rotation 5

-s 1666 --throttle 400

--ignore-crashes

--ignore-timeouts

-v -v  200

4、小结

  好了,Monkey参数暂且到这里,告一段落,下一篇计划介绍分享Monkey的日志管理,各位小伙伴敬请期待哈!!!

您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得点波 推荐 哦!!!(点击右边的小球即可)

个人公众号

个核心业务的技术能力,免鉴权、免后端配置和运维、一切围绕API和SDK为核心。以云调用功能为例,只要在小程序端触发云函数,便将经过微信自动鉴权直接调用,如数据分析、客服消息,插件管理等开放API接口。

微信群

痛点解析及解法』“Serverless所提供的接口,简化了云计算的编程,其代表了程序员生产力的又一次的变革,一如编程语言从汇编时代演变为高级语言时代。”2019年,伯克利在《将云中的编程变得简单:伯克

文章版权声明:除非注明,否则均为本站原创文章,转载或复制请以超链接形式并注明出处。
分享到:
赞 (0

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

发表评论

快捷回复:

评论列表 (有 1条评论, 1835人围观) 参与讨论
网友昵称:问问
问问 游客 2020-04-11 1楼 回复
发我