Monkey一般什么在什么场景下应用

2021-04-13 19:12发布

4条回答
我是大脸猫
1楼 · 2021-04-16 09:25.采纳回答

1.monkey应用场景

> monkey测试是Android平台自动化测试的一种手段,通过monkey程序模拟用户触摸屏幕、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常

======================================

异常:

崩溃:XX应用停止运行

无响应:

闪退:程序运行时,毫无征兆返回到了桌面

======================================

>monkey 是命令行工具

>弱点:monkey虽然可以根据一个指定的命令脚本发送按键消息,但不支持条件判断,也不支持读取待测界面的值来执行验证操作(即不支持断言、执行的时候傻瓜式依次逐行执行)

>monkey用来做什么?

  可以用来做压力测试也可以做自动化测试

>monkey什么时候用?

  产品稳定的时候,没有特别多的bug,一般会用monkey去测应用的稳定性、健壮性

>monkey怎么用?

  Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上。

  每台android手机里都有Monkey工具,但是我们是看不到的,因为,Monkey不是一个可视化的工具

  借助ADB才能与Monkey进行通讯

2.monkey命令格式

>开启安卓模拟器/真机

>进入命令行界面

>查看设备连接情况 adb devices

>在命令行界面输入monkey命令

如果monkey需要指定设备,基本语法如下:

adb  -s  [device]  shell  monkey  [options]

常用:

adb shell monkey -p  包名  -v  -v  -v -s 200 1000

3.monkey常见参数

3.1  -p

>用于约束限制,用此参数指定一个或多个包名。指定包名之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中所有的app。

>命令:

adb shell monkey -p 包名 1000

其中,1000是事件计数(即让monkey模拟1000次随机用户事件)

包名:

方式一:adb shell dumpsys activity| find "mFocusedActivity"

方式二:adb shell dumpsys window | findstr mCurrentFocus 获取当前应用的包名

3.2 -s

>用于指定伪随机数生成器的seed值,如果seed值相同,则两次monkey测试所产生的事件序列也是相同的

>命令:

monkey测试1:adb shell monkey -p 包名 -s  101   1000

monkey测试2:adb shell monkey -p 包名 -s  101   1000

>说明:

两次测试的效果是相同的,因为模拟的用户操作序列是一样的。操作序列虽然是随机生成的,但是只要指定了相同的seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以说这个操作序列是伪随机的。

(操作序列:每次操作按照一定的先后顺序所组成的一系列操作,即一个序列),比如:

同时,该图代表3次事件次数

>目的:

通过seed值可以复现bug

3.3 -v

>用于指定反馈信息级别(就是日志的详细程度),总共分为三个级别

-v  日志级别 level 0

说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息

-v -v 日志级别 level 1

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

-v -v -v 日志级别 level 2

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

>命令:

adb shell monkey - p 包名 -s  180  -v -v -v 1000  

1000是事件计数(即让monkey模拟1000次随机用户事件)

3.4 --throttle <毫秒>

>用于指定用户操作(即事件)的时延,单位是毫秒

>命令:

adb shell monkey -p 包名  --throttle 3000  100

>说明:执行一百次monkey随机事件,每次事件之间的延迟是3s

3.5 --randomize-throttle

在事件之间插入随机延迟,随机延迟范围为0到throttle设置的时间,单位为毫秒

>命令:

adb shell monkey -p 包名 --throttle 5000 --randomize-throttle 100

>说明:执行一百次monkey随机事件,每次事件的间隔在0-5000毫秒之间不固定

3.6 --pkg-whitelist-file  白名单,后面接txt文件

1)第一步把你设置的白名单的包名写到一个txt文档里面,记得路径和文档名字都是英文!如,D:\whitelist.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

3)可以在上面adb 命令后重定向输出查看monkey运行日志,可以用来辅助logcat日志定位问题

3.7 --pkg-blacklist-file  黑名单,后面接txt文件

>操作步骤参考白名单,效果与之相反

>命令:

 adb  shell  monkey   --pkg-blacklist-file   /data/local/tmp/blacklist.txt  100

3.8 百分比事件

>使用:

adb shell monkey  -p 包名  -s  210  -v -v -v  --pct-touch 100  400 //百分百为点击事件

adb shell monkey -p 包名 -s 210 -v -v -v  --pct-touch 50  --pct-rotation 50  400   //一半点击一半旋转

>使monkey进程停止:

进入adb  shell 

ps 查看进程,

找到monkey进程:

杀掉进程:

kill  进程号 


ban_gank
2楼 · 2021-04-14 09:43

参数:  -p  

        用于约束限制,指定一个或多个包。设置后则系统只启动指定的APP,不指定包则会启动系统内的所有APP.

        指定一个包:adb shell monkey -p com.moonbasa 1000

        指定多个包:adb shell monkey -p com.moonbasa -p com.moonbasa.taylorsage 1000

        不指定包:adb shell monkey 1000

        (用monkey模拟1000次随机用户事件)

     ● 参数: -S (同一seed值可重复事件序列,方便复现问题。seed值由测试者自由指定)

        用于指定伪随机数生成器的seed值,如果值相同则2次测试所产生的事件序列也一样。

        1.adb shell monkey -p com.moonbasa -s 188 100

        2.adb shell monkey -p com.moonbasa -s 188 100

        1,2两次测试的效果是相同的,因为模拟的用户操作序列是一样的。

     ● 参数: -V  

        用于指定反馈信息级别(日志详细程度),总共分为三个级别

        -V   Level0   缺省值,仅提供启动提示、测试完成和最终结果等少量信息

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

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

       例:adb shell monkey -p com.moonbasa -v -v 1000.

              (用monkey模拟1000次随机用户事件,输出的日志级别为Level1)

     ● 参数:--throttle <毫秒>

        用于指定用户操作(事件)间的时延,单位是毫秒

        例:adb shell monkey -p com.moonbasa --throttle 3000  1000

               (用monkey模拟1000次随机用户事件,事件之间有3秒的延迟)

     ● 参数:--randomize -throttle

        事件间插入随机延迟,范围为0到throttle设置的值 

        例:adb shell monkey -p com.moonbasa --throttle 5000 --randomize -throttle 1000

               (执行1000次的monkey随机事件,事件间隔0~5秒)

    ● 参数:

--pct-{+事件类别}{+事件类别百分比}


杨晓春
3楼 · 2021-04-16 11:07

1.monkey应用场景

> monkey测试是Android平台自动化测试的一种手段,通过monkey程序模拟用户触摸屏幕、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常

征戰撩四汸
4楼 · 2022-03-11 17:35

 参数:-p  

用于约束限制,指定一个或多个包。设置后则系统只启动指定的APP,不指定包则会启动系统内的所有APP.

指定一个包:adb shell monkey -p com.moonbasa 1000

指定多个包:adb shell monkey -p com.moonbasa -p com.moonbasa.taylorsage 1000

不指定包:adb shell monkey 1000

(用monkey模拟1000次随机用户事件)

 参数: -S (同一seed值可重复事件序列,方便复现问题。seed值由测试者自由指定)

用于指定伪随机数生成器的seed值,如果值相同则2次测试所产生的事件序列也一样。

 1.adb shell monkey -p com.moonbasa -s 188 100

 2.adb shell monkey -p com.moonbasa -s 188 100

 1,2两次测试的效果是相同的,因为模拟的用户操作序列是一样的。

参数: -V  

用于指定反馈信息级别(日志详细程度),总共分为三个级别

 -V   Level0   缺省值,仅提供启动提示、测试完成和最终结果等少量信息

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

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

 例:adb shell monkey -p com.moonbasa -v -v 1000.

 (用monkey模拟1000次随机用户事件,输出的日志级别为Level1)

 参数:--throttle <毫秒>

 用于指定用户操作(事件)间的时延,单位是毫秒

 例:adb shell monkey -p com.moonbasa --throttle 3000  1000

  (用monkey模拟1000次随机用户事件,事件之间有3秒的延迟)

 参数:--randomize -throttle

  事件间插入随机延迟,范围为0到throttle设置的值 

  例:adb shell monkey -p com.moonbasa --throttle 5000 --randomize -throttle 1000

 (执行1000次的monkey随机事件,事件间隔0~5秒)


相关问题推荐

  • 回答 12

    自动化测试主要分为三个层次:单元测试自动化、接口测试自动化和UI测试自动化。单元测试自动化调用测量的类或方法,根据类或方法的参数传递相应的参数并返回结果。最终断言判断返回的结果是否与预期结果相等。相等,测试通过,不相等,测试失败。因此,在单元...

  • 回答 13
    已采纳

    Fiddler可以干的东西太多了 ,例如:1.动态Web调试,可以抓取http&分析之,这个不说了,别的很多抓包软件也可以实现2.配合Proxifier可以抓取&代理原本不支持http代理但使用http协议通信的应用3.中间人攻击,因为fiddler本质是个http proxy自然可以给http包下...

  • 回答 19

    1、具备计算机操作基础2、软件测试基础理论知识。3、对于常用的数据库,简单的操作要具备。学习数据库可以自己安装一个数据库,常练习。4、具备一定的逻辑推理能力:这点主要偏向于写测试用例。测试用例是软件测试的核心。写测试用例,可以参考网络一些比较经...

  • 回答 9

    可以根据项目需要进行选择 1.模块化框架(test script modularity)。 2.函数库结构框架(test library architecture)。 3.关键字驱动测试框架(keyword-driven/table-driven testing)。 4.数据驱动测试框架(data-driven testing)。...

  • 回答 7
    已采纳

    自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入...

  • 软件测试都学什么呀2020-03-11 11:17
    回答 15

    嗯 ,软件测试入门容易,零基础也能学会,下面我给你讲一下学习的具体内容:先第一个阶段主要学习软件测试核心理论:软件测试方法和分类都有什么,白盒测试、黑盒测试、单元测试、集成测试、系统测试、负载测试、兼容性测试等等,还有当下的热门领域测试技巧...

  • 回答 10

    自动化测试工具有如下几种:1、WinRunnerMercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的...

  • APP自动化测试思路2021-01-28 11:12
    回答 12

    1、需求分析测试都是基于需求,所以首先我们需要先理清楚需求,划分之后找到实现的关键点。自动化测试就是实现机器完成测试需求的关键点的一系列操作,并且在脚本的实际运行中添加需要的业务逻辑判断,实现测试自动化。根据脚本的具体实现,整理出打开文件测...

  • 回答 6

    1.分析测试需求测试需求其实就是测试目标,也可以看作是自动化测试的功能点。自动化测试是做不到100%盖率的,只有尽可能提高测试覆盖率。条测试需求需要设计多个自动化测试用例,通过测试需求分析判定软件自动化测试要做到什么程度。一般情况下,自动化测试优...

  • 回答 7

    第一,需求稳定,不会频繁变更第二,研发和维护周期长,需要频繁执行回归测试第三,需要在多种平台上重复运行相同测试的场景。第四,某些测试项目通过手工测试无法实现,或者手工成本太高。第五,被测软件的开发较为规范,能够保证系统的可测试性。另外,某些...

  • 回答 14

    自动化测试对于软件测试工程师来说十分重要。是软件测试人员必备技能。自动化测试框架是为自动化测试脚本提供执行环境的脚手架。框架为用户提供了各种优势,帮助他们有效地开发、执行和报告自动化测试脚本。它更像是一个专门为自动化组织的测试而创建的系统。...

  • 回答 7

    自动化测试的成本高,效果差,是一个相对的,而针对某些具体项目,是必须要接入自动化测试的。首先说一些什么时候会需要自动化测试首先咱们讨论这个问题之前要带着一个疑问:决定要不要做自动化测试的因素有哪些?应该说时间才是一个衡量比重比较大的因素。假...

  • 回答 6
    已采纳

    Appium一款应用于移动端的自动化测试框架,支持跨平台应用,Native、Hybird、Mobile Web都支持。其特点概括一下:跨平台只要一套代码不需要设置签名,不污染源代码不需要项目源代码就可以测试多语言支持可支持多种通用框架完全开源,社区活跃appium应用场景...

  • 回答 4
    已采纳

    第一步,先要安装JDK并配置好相应的环境变量;第二步,下载、部署Android SDK,并配置环境变量。MonkeyRunner位于Android SDK下的tools目录,所以需要把这个目录加入操作系统环境变量PATH中。第三步,编写MonkeyRunner脚本。脚本中需要用到三个类,分别为Monk...

  • 回答 4
    已采纳

    首先我使用了百度搜索adb(Android Debug Bridge)安装包,接下来,我想共享这个安装包:https://pan.baidu.com/s/14SysAIZQhzYKZzQMikE2jQ拿到安装包,首先我把它解压到我的Android文件包里,接着,打开cmd(使用Win+R键--->cmd)点击确定按钮出现输入adb以...

没有解决我的问题,去提问