【Monkey测试】手机app测试性能测试,Monkey测试详解(全)

2023-11-14


前言

monkey是一个命令,是发送伪随机用户事件的。这里特别要说明,既然是随机事件也就是说你没法控制ta点击哪里。如果你想控制那就去修改源码。

monkey需要安装(好多人问这个问题)?其实都带着呢。。。。只需要通过adb就可以和手机进行交互了

adb又是啥?其实就是电脑和手机建立通讯的桥梁。

上面说的所有的一切只需要安装并配置好Android sdk就ok了!

一、Monkey工具

monkey 是 Android 中的一个命令行工具,由 java 编写,可以运行在模拟器里或实 际设备中。
它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现 对 APP 进行压力测试。

monkey 测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

安装好SDK和avd模拟器,就直接可以允许monkey命令

二、Monkey的优劣

优势
脱离 Case 的依赖
可封装自动化执行
可封装后作为客户端性能测试的驱动

缺陷
完全随机,不可控

三、Monkey 命令

adb shell monkey -p 包名 1 -p 包名 2 … 事件数

-p
如果用此参数指定了一个或几个包,monkey 将只允许系统启动这些包里 的 Activity。
如果你的应用程序还需要访问其它包里的 Activity,那些包也 需要在此同时指定。
如果不指定任何包,monkey 将允许系统启动全部包
里的 Activity。

要指定多个包,需要使用多个 -p 选项,每个-p 选项只能 用于一个包。

-v
指定打印信息的详细级别,一个 -v 增加一个级别。
日志级别 Level 0,缺省值,仅提供启动提示、测试完成和最终结果等少 量信息,-v;
日志级别 Level 1,提供较为详细的日志,包括每个发送到 Activity 的事 件信息,-v -v;
日志级别 Level 2,最详细的日志,包括了测试中选中/未选中的 Activity 信息,-v -v -v。

adb shell monkey -p welab.bank.mobile.stage -v -v -v 100

将log保存至本地文件:adb shell monkey -p welab.bank.mobile.stage -v -v -v 500 > D:/monkey.txt

四、Monkey结果分析

adb shell monkey -p –v -v –v > log.txt 可以将结果存储起来

正常情况,如果 monkey 测试顺利执行完成,在 log 最后,会打印出当前执行事件 的次数和所花费的时间

Monkey finished
打开 LOG,查看 log 的最下端,是否有类似以下字段:
Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)
Monkey finished 这个字段表明本次的 Monkey 没有异常,测试通过。

CRASH
如果搜索到有结果,则表明有进程出现问题,测试不通过。
CRASH: com.onekchi.downloadmanager (pid 12919)

ANR
如果有搜索结果,则表示测试过程中,测试对象出现了无响应的现象,因 此测试不通过

五、Monkey详细

顾名思义,Monkey就是猴子, 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 命令启动方式:
a、可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试
b、在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试
c、在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器

八、Monkey命令基本参数

1、使用monkey测试手机所有程序
命令:adb shell monkey 100(执行100次)

2、 -p <允许的包名列表>
命令:
获取手机中所有的第三方包名:adb shell pm list packages -3
执行该包名:adb shell monkey -p com.kmxs.reader 1000

3、 显示日志详细程度
命令:adb shell monkey -p com.kmxs.reader -v 30 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
命令:adb shell monkey -p com.kmxs.reader -v -v 30 // 提供较为详细的日志,包括每个发送到Activity的事件信息
命令:adb shell monkey -p com.kmxs.reader -v -v -v 30 // 最详细的日志,包括了测试中选中/未选中的Activity信息

4、Monkey日志分析
命令:adb shell monkey -p com.kmxs.reader -v -v 30 >D:/日志/1.txt
正常情况, 如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成\

5、-s 随机数种子
命令:adb shell monkey -s 10 100
用亍指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的

6、–throttle <毫秒>
命令:adb shell monkey -p com.kmxs.reader –throttle 300 100

7、–pct-touch 触摸事件 和 –pct-motion 手势事件
命令:adb shell monkey -v –pct-touch 70 20
调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)

–pct-touch:触摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和Up(ACTION_UP)的坐标临近,但并非相同

如:adb shell monkey –pct-touch 67 -v 10
表示执行10个伪随机用户事件流,并调整其中触摸事件的百分比为67%。

注:此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比

命令:adb shell monkey –pct-motion 67 -v 10
调整手势事件motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)

–pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move(ACTION_MOVE)

如:adb shell monkey –pct-motion 67 -v 10
表示执行10个伪随机用户事件流,并调整其中动作事件的百分比为67%。
注:这里的移动是直线滑动

九、Event percentages分析

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其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等

十、异常处理

–ignore-crashes

正常操作,不忽略异常
命令:adb shell monkey -p com.kmxs.reader 100 >D:/日志/2.txt

忽略异常
命令:adb shell monkey -p com.kmxs.reader –ignore-crashes 1000 >D:\日志\4.txt

–ignore-timeouts(ANR)
命令:adb shell monkey –ignore-timeouts –v 10

十一、Monkey实例

命令:adb shell monkey -p com.kmxs.reader -s 23 –throttle 2000 –ignore-crashes –ignore-timeouts -v -v -v 10000 >D:/日志/log.txt

十二、MonKey稳定性测试

怎么使用Monkey开展稳定性测试:

  1. 每次执行5万次,每次间隔500毫秒 执行时间约为:7个 小时
  2. 执行过程中指定运行的包名,并设置报错后继续运行,监视系统中本地代码发生的崩溃
  3. 日志级别 -v-v
    4.第二天早上查看执行日志
    答案:adb shell monkey -p com.evergrande.eif.android.hengjiaosuo –throttle 500 –ignore-crashes –ignore-timeouts –monitor-native-crashes -v -v 50000 > E:\monkey_log\java_monkey_log.txt

十三、日志错误分析

日志中可能的错误:
1.程序奔溃,crash (ctrl+f搜索)
2.程序无响应,ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是为了屏蔽掉一些无效信息)
3.其他问题:在日志中搜索”Exception”。
Monkey 执行中断, 在log最后也能看到当前执行次数

十四、总结

有些人一生没有辉煌,并不是因为他们不能辉煌,而是因为他们的头脑中没有闪过辉煌的念头,或者不知道应该如何辉煌。

机会,需要我们去寻找。让我们鼓起勇气,运用智慧,把握我们生命的每一分钟,创造出一个更加精彩的人生。

趁着年轻,多出去走走看看。读万卷书,不如行万里路,行万里路,不如阅人无数。愿你迈着青春的脚步,走向成功的人生!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Monkey测试】手机app测试性能测试,Monkey测试详解(全) 的相关文章

  • 【软件测试】学习笔记-高效提交Bug

    本篇文章介绍如何才能写出一份高效的软件缺陷报告 测试工程师需要利用对需求的理解 高效的执行力以及严密的逻辑推理能力 迅速找出软件中的潜在缺陷 并以缺陷报告的形式递交给开发团队 缺陷报告是测试工程师与开发工程师交流沟通的重要桥梁 也是测试工程
  • 使用Hypothesis生成测试数据

    Hypothesis是Python的一个高级测试库 它允许编写 测试用例 时参数化 然后生成使测试失败的简单易懂的测试数据 可以用更少的工作在代码中发现更多的bug 安装 pip install hypothesis 如何设计 测试数据 通
  • 外包干了2个月,技术退步明显...

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • Python接口自动化测试处理不同接口间参数依赖

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 小白也能学会的创建Git仓库实操

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Selenium小技巧!

    Chrome DevTools 简介 Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器 如 Chrome Opera 和 Microsoft Edge 中的工具 用于帮助开发人员调试和研究网站 借助 Chro
  • 步骤详图 教你在linux搭建容器环境

    警告 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker 1 准备工作 系统要求 要安装Docker CE 社区版 操作系统的最低要求是CentOS7 7以下版本都不被支持 卸载旧版本 Docker改版
  • 测试开发必知:有Tomcat,为什么还要Nginx?

    只用Tomcat 不用Nginx搭建Web服务 行不行 我曾经提出的愚蠢问题 今天详细给自己解释下 为什么必须用Nginx 不用Nginx 只用Tomcat的Http请求流程 浏览器处理一个Http请求时 会首先通过DNS服务器找到域名关联
  • 微信小程序的自动化测试框架

    微信发布了小程序的自动化测试框架Minium 提供了多种运行验证方式 其特点 支持一套脚本 iOS Android 模拟器 三端运行 提供丰富的页面跳转方式 看不到也能去得到 可以获取和设置小程序页面数据 让测试不止点点点 可以直接触发小程
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 软件测试|pycharm关联GitHub的详细步骤

    简介 GitHub 是全球最大的开源代码托管平台之一 而 PyCharm 是一款强大的 Python 集成开发环境 将两者结合使用 可以提高团队协作和代码管理的效率 本文将详细介绍如何在 PyCharm 中管理 GitHub 账号 包括如何
  • 一篇文章带你了解Python常用自动化测试框架——Pytest

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Jmeter 性能-阶梯式性能指标监听

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 甜蜜而简洁 —— 深入了解Pytest插件pytest-sugar

    在日常的软件开发中 测试是确保代码质量的关键步骤之一 然而 对于测试报告的生成和测试结果的可读性 一直以来都是开发者关注的焦点 Pytest插件 pytest sugar 以其清晰而美观的输出 为我们提供了一种愉悦的测试体验 本文将深入介绍
  • 2024拒绝行业内卷!八年软件测试20K*16薪行业心得 想入行必看

    目前工作做软件测试工作8年 属于高级测试员那个级别吧 现在看到各行各业的人都在转行学习软件测试 想给大家一些学习建议和忠告 很多粉丝都跟我说今年行情很差 找不到工资 真的找不到工作了吗 我们常在网上看到的 程序员饱和 程序员过剩 其实一般是
  • 程序员找工作难!拿到外包公司的 offer 我应该去么?

    引言 前一阵子有一个帖子引起了非常广泛的讨论 描述的就是一个公司的外包工作人员 加班的时候因为吃了公司给员工准备的零食 被公司的HR当场批评 这个帖子一发出来 让现在测试行业日益新增的外包公司备受关注 那么外包公司和非外包公司有什么样的不一
  • Web自动化测试 —— cookie复用

    一 cookie简介 cookie是一些数据 存储于用户电脑的文本文件中 当web服务器想浏览器发送web页面时 在链接关闭后 服务端不会记录用户信息 二 为什么要使用Cookie自动化登录 复用浏览器仍然在每次用例开始都需要人为介入 若用
  • Web自动化测试 —— capability参数配置

    一 capability概述 capability是webdriver支持的标准命令之外的扩展命令 配置信息 配置web驱动属性 如浏览器名称 浏览器平台 结合selenium gird完成分布式 兼容性测试 官网地址 https www
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关

随机推荐

  • mysql 1054错误 "Unknown column 'xxx' in 'field list'"

    出现问题的代码如下 s 测试 sql INSERT INTO ffff ID VALUES s s try cursor execute sql db commit print 写入成功 except Exception as e prin
  • FPGA基本IP核之FIFO(异步)

    异步FIFO 创建新的异步FIFO IP核 可以看出相比于同步FIFO这里做了写和读两侧并且各自用一个时钟 一般选用二级同步 然后勾选读和写两侧需要用到的三种信号 选择添加额外的MSB 由于分成两侧时 中间不知道数据是否写满了或者写空了 添
  • GE IS215VCMIH2BB IS200VCMIH2BCC 数字量输入模块

    GE IS215VCMIH2BB 和 IS200VCMIH2BCC 是数字量输入模块 通常用于工业自动化和控制系统中 用于接收和处理数字量输入信号 以下是这些模块可能具备的一些常见功能和产品特点 多通道输入 这些模块通常具有多个数字量输入通
  • 【数据读写】csv文件与xls/xlsx文件

    目录 一 csv格式与xls xlsx格式的区别 二 两种文件格式的读写操作 1 csv文件的读 写函数 csvread csvwrite 2 xls xlsx文件的读 写函数 xlsread xlswrite 三 应用案例 1 实例1 参
  • STM32寄存器

    问题 什么是寄存器 什么是存储器映射 什么是寄存器映射 STM32架构 程序存放在FLASH中 const的常量存放在FLASH中 变量 全局 静态变量 存放在SRAM中 System总线主要读取寄存器 AHB 高速 总线上挂着SDIO 复
  • 【微信公众号开发系列文章】二、Access token相关操作

    所有内容首发微信公众号 WEB前端李志杰 欢迎关注 点赞并转发 写在最前 关于获取Access token这部分内容建议仔细阅读官方文档 本文章对于重点内容进行了摘录 有利于大家把握重点部分 最后文章中会给出这一部分的程序设计思路及示例代码
  • c++编译踩坑大赏

    1 编译错误error binding const Person to reference of type Person discards qualifiers 意思是在进行函数传参时 不能把常变量 这里是常引用 传递给非常变量 Perso
  • 在vs2019上编写Linux系统下的c++程序_远程 Linux 系统上的 Ubuntu

    在vs2019上编写Linux系统下的c 程序 远程 Linux 系统上的 Ubuntu 正文 遇到的问题 方法一 如果方法一无法解决 您可以尝试方法二 正文 第一步 先将自己的Linux 系统设为静态IP 具体操作如下 在修改以下文件时
  • 做好三件事,就能避免远程办公变成“肥宅办公”

    随着上海疫情持续 越来越多的白领开启了远程办公 可由于宅家办公运动量小 一天三餐还是照常吃 因此有些人的远程办公渐渐变成了 肥宅办公 自己变得不爱动弹 体态也变得臃肿 这可怎么办才好 专业人士表示 如果做到了这三件事就可以避免远程办公变成
  • 微信小程序(或uniapp)引入腾讯视频插件播放视频

    1 申请插件 注意 个人开发者无法使用 登录微信公众平台 在你的小程序后台的设置 第三方服务 插件管理 搜索插件并点击添加 添加成功之后 点击详情 查看该插件的具体信息 拿到该插件的appid以及版本号 github地址 https git
  • 使用ogg 从oracle 同步mysql遇到问题记录

    ORACLE 同步mysql遇到问题 2018 08 27 10 59 54 WARNING OGG 01004 Aborted grouped transaction on DESIGNXXxx Database error 1105 S
  • SQL批量操作大全

    1 list嵌套list查询SQL
  • 解决IDEA中maven导入jar包

    查 看 File gt Project Structure gt Libraries如下面没有maven所引入的jar包则为该错误 1 错误原因 是导入的module错误 应该导入maven的module 解 决 File gt Proje
  • JS 传各种文件到后端

    一个前端上传文件按钮功
  • 伯努利分布的最大似然估计

    前言 昨天晚上参加阿里巴巴的实习面试 各种被虐 面试了将近90分钟 才做了3个题 加上项目的介绍 在机器学习方面 问到了一个伯努利分布的最大似然估计的推导 想到逻辑回归的推导就是利用最大似然估计 然后就套用了其推导过程 可能前面被说的有点迷
  • python之js解密_python中的RSA加密和JS中的解密

    我是密码学的全新人物 我想从服务器端生成RSA密钥对 并将其发送给所有客户端 浏览器 但在此之前 我只是通过加密python中的数据并通过pubnub发送到index html文件并尝试在JavaScript中解密来测试场景 问题是当我做加
  • Redis——Windows安装

    本篇只谈安装 后续会深入讲解Redis 比如它的内存管理 快照 订阅等待 针对不同的用户 Redis有Windows和Linux两种环境安装 官网上下的是Statble版是Linux 大家一定要注意 由于本人做本地端 所以以下谈的是Wind
  • SpringBean生命周期&扩展接口&简化配置

    目录 1 生命周期简图 2 扩展接口介绍 BeanFactoryPostProcessor接口 Aware接口 BeanPostProcessor接口 InitializingBean接口 DisposableBean接口 3 spring
  • kafka 集成SpringBoot

    目录 一 Kraft模式 配置 集群启动停止脚本 二 集成SpringBoot 资源配置 生产者 消费者 三 API 依赖 yml格式配置文件 properties格式配置文件 一 Kraft模式 kafka 2 8 0后新特性 2 8 0
  • 【Monkey测试】手机app测试性能测试,Monkey测试详解(全)

    目录 导读 前言 一 Monkey工具 二 Monkey的优劣 三 Monkey 命令 四 Monkey结果分析 五 Monkey详细 六 Monkey用来做什么 七 Monkey程序介绍 八 Monkey命令基本参数 九 Event pe