APP稳定性测试工具:Monkey

news2024/11/28 2:30:38

一、Monkey 简介

Monkey 是一款 app 的自动化测试工具,monkey 是猴子的意思,所以从原理上说,它的自动化测试就类似猴子一样在软件上乱敲按键,猴子什么都不懂,就爱捣乱。Monkey 原理也是类似,通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、滑动 Trackball、手势输入等操作),来对设备上的程序进行测试,检测程序长时间的稳定性,多久的时间会发生异常。

Monkey 工具存在 Android 系统中,使用 Java 语言写成,jar 包在 Android 文件系统中的存放路径是:
/system/framework/monkey.jar;Monkey.jar 程序是由一个名为“monkey”的 Shell脚本来启动执行,shell 脚本在 Android 文件系统中的存放路径是:/system/bin/monkey;monkey 需要通过 adb 来唤醒,即通过在 cmd 窗口中执行: adb shell monkey {+命令参数}来进行 Monkey 测试;

二、Monkey 工作原理

在 Monkey 运行的时候,它会生成事件,并把它们发给系统。同时,Monkey 还对测试中的系统进行监测,对下列三种情况进行特殊处理:

(1)如果限定了 Monkey 运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止;
(2)如果应用程序崩溃或接收到任何失控异常,Monkey 将停止并报错;
(3)如果应用程序产生了应用程序不响应 ANR(application not responding)的错误,Monkey 将会停止并报错;按照选定的不同级别的反馈信息,在 Monkey 中还可以看到其执行过程报告和生成的事件。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

三、Monkey 命令基本参数介绍

0、–help : 列出简单的用法

adb shell monkey -help

1、允许启动手机里面所有的 App , 随机操作 1000 次

adb shell monkey 1000

2、-p : 允许启动 App 的包名

启动一个包名的应用,QQ 的包名为: com.tencent.mobileqq

案例:随机操作 手机 QQ 1000 次

#获取App的包名,先启动qq并获取焦点
adb shell dumpsys window | findstr mCurrentFocus
#启动App
adb shell monkey -p com.tencent.mobileqq 1000
启动指定的多个 App,微信的包名为:com.tencent.mm

案例:随机操作 手机 QQ 和 微信 1000 次

adb shell monkey -p com.tencent.mobileqq -p com.tencent.mm 1000

3、-v : 操作日志记录

命令行的每一个-v将增加反馈信息的级别。

-v:Level 0(缺省值)除 启动提示、测试完成和最终结果之外,提供较少信息。
-v -v :Level 1提供较为详细的测试信息,如逐个发送到Activity的 事件。
-v -v -v :Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
adb shell monkey -p com.tencent.mobileqq -v -v -v 100

4、-s : 伪随机数生成器的seed值

如果用相同的seed值再次运行monkey,将生成相同的事件序列。

adb shell monkey -p com.tencent.mobileqq -s 12345 -v 10

5、--throttle : 插入固定延迟

在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被执行。

案例:随机执行 500 个事件,每个事件之间延迟 500 毫秒被执行。

adb shell monkey -p com.tencent.mobileqq –-throttle 500 -v 500

6、--ignore-crashes : 忽略操作是崩溃异常

通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

adb shell monkey -p com.tencent.mobileqq –-ignore-crashes -v 1000

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

通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

adb shell monkey -p com.tencent.mobileqq –-ignore-timeouts -v 1000

8、
--ignore-security-exceptions : 忽略程序发生许可异常

通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

adb shell monkey -p com.tencent.mobileqq–-ignore-security-exceptions -v 1000

9、调整触摸事件百分比

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

#调整触摸事件百分比为100%
adb shell monkey -p com.tencent.mobileqq -v -v --pct-touch 100 200

10、调整手势事件百分比

#调整手势占比为100%
adb shell monkey -p com.tencent.mobileqq -v -v --pct-motion 100 200

11、调整应用启动事件的百分比

如果你希望调整应用启动事件的百分比。

--pct-appswitch:后面接应用启动事件百分比。
adb shell monkey -p com.tencent.mobileqq --pct-appswitch

12、调整屏幕旋转事件百分比

--pct-rotation 后面接屏幕旋转事件的比例值。
adb shell monkey -p com.tencent.mobileqq --pct-rotation

Monkey弱点:

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

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1028605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JsonUtils

1、工具类 package com.atguigu.utils;import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.Deserialization…

解决hadoop使用put上传报错问题

hadoop使用put上传报错 WARN hdfs.DataStreamer: DataStreamer Exception org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /input/yxqzdata.COPYING could only be replicated to 0 nodes instead of minReplication (1). There are 0 datanode(s) runnin…

MySQL搭建主从复制集群,实现读写分离

目录 一、准备 二、配置 2.1 配置主库 修改配置文件/etc/my.cnf 重启服务 为主库再创建一个账户并授权 查看状态 2.2 配置从库 修改配置文件/etc/my.cnf 重启mysql服务 配置需要同步的主机 启动salve同步 查看是否同步 三、测试主从复制是否生效 四、读写分离案…

【计算机毕业设计】基于SpringBoot+Vue热门网游推荐网站的设计与实现

博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容:毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…

C++之va_start、vasprintf、va_end应用总结(二百二十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

腾讯mini项目-【指标监控服务重构】2023-07-29

今日已办 根据导师代码评审的 comment 改进 修改命名 otelclient.otelExporterOtlpEndpoint to otelclient.endpoint禁用 TLS 加密,移除 otelclient.insecureMode避免命名缩写影响代码的阅读理解把两个函数(createTraceExp和createTraceProvider&#…

Softing物联网(IoT)方案之OT/IT数据集成

一 利用数据提高效率和绩效 多年以来数据集成和工业物联网一直在推动着市场的发展,目前我们已经能够集成并成功使用先进的技术、大量的传感器和复杂的数据格式等。而在工业物联网或工业4.0中,还有运营技术(OT)和信息技术&#xf…

会C++还需要再去学Python吗?

提到的C、数据结构与算法、操作系统、计算机网络和数据库技术等确实是计算机科学中非常重要的基础知识领域,对于软件开发和计算机工程师来说,它们是必备的核心知识。掌握这些知识对于开发高性能、可靠和安全的应用程序非常重要。Python作为一种脚本语言&…

Spring Authorization Server入门 (十八) Vue项目使用PKCE模式对接认证服务

Vue单页面项目使用授权码模式对接流程说明 以下流程摘抄自官网 在本例中为授权代码流程。 授权码流程的步骤如下: 客户端通过重定向到授权端点来发起 OAuth2 请求。 对于公共客户端,此步骤包括生成code_verifier 并计算code_challenge,然后…

实验5 跨交换机实现VLAN

交换机端口隔离(access模式) 实验目的实验拓扑实验步骤(1)在未划分vlan前,配置pc1、pc2、pc3、pc4的地址,如图所示(2)测试两台pc机的连通性(3)在S1中创建vlan…

必看!S3File Sink Connector 使用文档

S3File 是一个用于管理 Amazon S3(Simple Storage Service)的 Python 模块。当前,Apache SeaTunnel 已经支持 S3File Sink Connector,为了更好地使用这个 Connector,有必要看一下这篇使用文档指南。 描述 将数据输出…

springboot druid多数据源配置,及druid监控

基础配置&#xff1a; springboot2.x版本 jdk1.8 依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version> </dependency> &…

分享一个基于微信小程序的高校图书馆预约座位小程序 图书馆占座小程序源码 lw 调试

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

Linux高性能服务器编程 学习笔记 第五章 Linux网络编程基础API

我们将从以下3方面讨论Linux网络API&#xff1a; 1.socket地址API。socket最开始的含义是一个IP地址和端口对&#xff08;ip&#xff0c;port&#xff09;&#xff0c;它唯一表示了使用TCP通信的一端&#xff0c;本书称其为socket地址。 2.socket基础API。socket的主要API都定…

打开泰坦陨落提示msvcp120.dll丢失怎么办?三个解决方法快速解决

首先&#xff0c;我们来了解一下msvcr120.dll是什么文件。msvcr120.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2013 Redistributable中的一个组件。这个文件对于一些软件的运行是非常重要的&#xff0c;如果缺失或损坏&#xff0c;就会导致软件无法正常运行。…

从淘宝数据分析产品需求(商品销量总销量精准月销)

淘宝数据分析总体来说可以分为商品分析、客户分析、地区分析、时间分析四大维度(参考数据雷达的分析思路)。在这里我重点说商品分析。 在淘宝上开店的竞争还是非常激烈的&#xff0c;随便拿出一个单品就有很多竞品存在&#xff0c;所以做起来还是很难的&#xff0c;而想要在众…

Git:利用Git模拟企业级项目管理

文章目录 基础知识Git分支设计规范master分支release分支develop分支feature分支hotfix分支 模拟进行企业级项目管理 本篇主要总结的是企业级开发模型以及利用Git模拟企业级别的项目管理方式 基础知识 前面已经进行了全部的关于Git的各项操作&#xff0c;那么Git是作用于企业…

<Altium Designer>向PCB导入网表(.NET)

目录 01 AD PCB导入网表(.NET) 添加.NET文件到AD工程 通过show Differences操作导入器件 02 文章总结 大家好&#xff0c;这里是程序员杰克。一名平平无奇的嵌入式软件工程师。 硬件工程师使用的是Cadence的OrCAD画原理图&#xff0c;输出的是.NET网表&#xff0c;而杰克使…

自动化测试---选择框

radio框选择选项&#xff0c;直接用WebElement的click方法&#xff0c;模拟用户点击就可以了。 比如, 我们要在下面的html中&#xff1a; 1.先打印当前选中的老师名字 2.再选择 小雷老师 <div id"s_radio"><input type"radio" name"teach…

在静态方法中访问@Value注入的静态变量!!

一、 静态变量 static修饰的成员变量&#xff0c;称为静态成员变量&#xff0c;静态成员变量最大的特性&#xff1a;不属于某个具体的对象&#xff0c;是所有对象所共享的 简单来说&#xff1a;在某些类的对象中存在一些相同的成员变量&#xff0c;那么这种成员变量就可以设置…