一篇文章讲明白MonkeyAPP压力稳定性测试

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一篇文章讲明白MonkeyAPP压力稳定性测试

一、monkey 的使用场景

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

用来做什么的

压力稳定性测试

做自动化测试

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

monkey什么时候用?

等你们的产品稳定,没有特别多的bug时候,一般会用monkey去测试

测应用的稳定性、健壮性(是否会发生闪退、崩溃) ; 整机测试

app会出现哪些异常

崩溃、闪退、ANR 日志分析:

二、monkey 测试步骤

1、启动安卓模拟器/真机,怎么连接真机需要开启开发者模式,百度下很简单

2、点击运行 -- 输入cmd --- 进入命令行界面

3、查看设备连接情况:adb devices

夜神模拟器默认端口 62001  

adb connect 127.0.0.1:62001 

链接手机的状态下,在命令行界面输入monkey 命令测试APP

adb shell monkey -p com.lemon.lemonban --ignore-crashes --ignore-timeouts --throttle 400 -v -v -v -s 3500 10000 > D:\monkey_log.txt  

命令主要意思:指定安装包名、忽略崩溃、忽略超时、时间间隔、执行100000次、指定日志输出到本地  

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

$ adb -S 【device】 shell monkey 【options】  

三、怎么获取APP的包名

  在测试过程中我们需要 APP 包名来测试是否会出现崩溃的情况

1、真机或模拟器与电脑链接

2、真机或模拟器打开APP应用

3、输入获取当前开启应用的包名,命令:

Android 8.0以下输入命令:

adb shell dumpsys activity I find "mFocusedActivity"  

Android 8.0 或以上版本命令:

adb shell dumpsys activity | find "mResumedActivity"  

四、monkey 命令

1.money 执行次数

一般小项目十万次,大项目一百万次

2.测试APP主要命令:

adb shell monkey -p com. lemon.lemonban --ignore-crashes --ignore-timeouts --throttle 400 -v -v -v -s 3500 10000 > D:\monkey_log.txt

命令解释:指定安装包名、忽略崩溃、忽略超时、时间间隔、执行100000次、指定日志输出到本地

3.各字段解释

-p

用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,monkey将只允许系统启动指定的APP,如果不指定包,将允许系统启动设备中的所有APP.

指定一个包: adb shell monkey -p tv.danmaku.bili 10

指定多个包:adb shell monkey -p cn.emoney.acg –p cn.emoney.wea -p cn.emoney.acg 100

不指定 -p 包名:adb shell monkey 100

不指定包名,会随机指定手机中的安装包,对整个系统进行monkey 测试  

com.tencent.edu为包名, 100是事件计数(即让Monkey程序模拟1000次随机用户事件)

--ignore-crashes

忽略崩溃

用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

因为Monke执行的时候如果碰到了App崩溃的问题,默认停止运行,所以需要忽略崩溃

命令

adb shell monkey -p cn.emoney.acg --ignore-crashes 1000

测试过程中即使 acg 程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止

adb shell monkey -p cn.emoney.acg 1000

测试过程中,如果acg程序崩溃,Monkey将会停止运行

--ignore-timeouts

忽略超时

用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。  

命令

adb shellmonkey -p cn.emoney.acg --ignore-timeouts 1000  

--throttle

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

命令

adb shell monkey -p cn.emoney.acg –throttle 5000 100

-v

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

日志级别 Level0  

示例:adb shell monkey -p cn.emoney.acg –v 100  

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

日志级别 Level //代码效果参考:http://www.zidongmutanji.com/bxxx/325610.html

1  

示例:adb shell monkey -p cn.emoney.acg –v -v 100  

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

日志级别 Level 2:一般使用这个    

示例:adb shell monkey -p cn.emoney.acg –v -v –v 100      

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

-s

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

命令

Monkey 测试1:adb shell monkey -p cn.emoney.acg –s 10 100  

Monkey 测试2:adb shell monkey -p cn.emoney.acg –s 10 100  

10 是-s的伪随机数,100是事件数  

说明

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

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

操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,  

就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;  

--ignore-security-exceptions

忽略许可异常

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。  

命令

adb shell monkey -p cn.emoney.acg --ignore-security-exception 1000

--randomize-throttle

事件之间增加延迟

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

如果使用随机延迟,一定要加上固定延迟--throttle   

命令

adb shell monkey -p com.lemon.lemonban --throttle 5000 --randomize-throttle 100  

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

--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    

--pkg--blacklist-file

黑名单,后面接txt文件

拉取文件到手机  

adb push D:\blacklist.txt /data/local/tmp/    

注意这两个反斜杠    

命令

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

五、Monkey 日志分析

正常情况

如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成\

异常情况

Monkey 测试出现错误后,一般的分析步骤

看Monkey的日志 (注意第一个swith以及异常信息等)

1. 程序无响应的问题: 在日志中搜索 “ANR”

2. 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug

Monkey 执行中断, 在log最后也能看到当前执行次数

APP异常日志分析:崩溃、闪退、ANR

六、百分比时间

1、命令格式

adb shell monkey {+事件参数}事件次数

adb shell monkey 1000

  运行1000次

2、实例

--pct-touch

  调整触摸事件的百分比(触摸事件是一个down-up事件 ,它发生在屏幕上的某单一位置)

命令

adb shell monkey -p com.tencent.edu --pct-touch 10 --pct-rotation 40 -V -V -V 1000

3、其他百分比详情

--pct-touch

调整点击事件的百分比, down-up ,编号为0

--pct-motion

调整移动事件的百分比,直线滑动,编号为1

--pct-pinchzoom

调整两指缩放压缩手势的百分比,比如放大缩小手势操作,编号为2

--pct-trackball

调整轨迹球时间百分比,不常用,编号为3现在手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数

--pct-rotation

调整旋转事件的百分比,横屏竖屏,编号为4

--pct-nav

调整导航事件的百分比,编号为5 ,包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有

--pct-majornav

调整主要导航事件的百分比,编号为6 ,例如中间键、回退键、菜单键

--PCt-syskeys

调整"系统"按键事件的百分比,编号为7 ,这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制

--pct-appswitch

调整app切换事件的百分比,编号为8

--pct-flip

调整键盘唤出隐藏的百分比,编号为9

--pct-anyevent

跳转除上面事件外,其它事件的百分比,编号为10,如按键、其他在设备上不常用的按钮等

*请大家尊重原创,如要转载,请注明出处:转载自:谢谢!!*

本文仅供参考;如果这篇文件对你有所帮助,麻烦动动发财的小手,推荐一波支持下万分感谢

*请大家尊重原创,如要转载,请注明出处:作者:守护@往昔;转载自:谢谢!!*

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9天前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
1月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
8天前
|
存储 监控 前端开发
如何确保测试脚本的稳定性和可靠性?
确保测试脚本的稳定性和可靠性是保证性能测试结果准确有效的关键
|
1月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
112 32
|
2月前
|
测试技术 UED 开发者
软件测试的艺术:从代码审查到用户反馈的全景探索在软件开发的宇宙中,测试是那颗确保星系正常运转的暗物质。它或许不总是站在聚光灯下,但无疑是支撑整个系统稳定性与可靠性的基石。《软件测试的艺术:从代码审查到用户反馈的全景探索》一文,旨在揭开软件测试这一神秘面纱,通过深入浅出的方式,引领读者穿梭于测试的各个环节,从细微处着眼,至宏观视角俯瞰,全方位解析如何打造无懈可击的软件产品。
本文以“软件测试的艺术”为核心,创新性地将技术深度与通俗易懂的语言风格相结合,绘制了一幅从代码审查到用户反馈全过程的测试蓝图。不同于常规摘要的枯燥概述,这里更像是一段旅程的预告片,承诺带领读者经历一场从微观世界到宏观视野的探索之旅,揭示每一个测试环节背后的哲学与实践智慧,让即便是非专业人士也能领略到软件测试的魅力所在,并从中获取实用的启示。
|
5月前
|
负载均衡 Java 测试技术
性能测试与负载均衡:保证Java应用的稳定性
性能测试与负载均衡:保证Java应用的稳定性
|
4月前
|
测试技术 API 持续交付
【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分
【7月更文挑战第2天】【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分:1) 自动化测试的重要性与Python的易用性、库支持、跨平台和社区优势;2) Unittest作为标准测试框架的基础用法,及Pytest的灵活性与强大功能;3) 实践中包括Selenium的Web UI测试、Requests的API测试,强调测试隔离、持续集成等最佳实践。Python助力高效稳定的软件测试。
58 2
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的高中信息技术课程在线测试系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的高中信息技术课程在线测试系统附带文章和源代码部署视频讲解等
52 6
|
4月前
|
机器学习/深度学习 存储 Linux
我的OS Copilot测试文章
在阿里云管理控制台尝试重置密码时遇到错误,未能成功跳转至相应实例;但后续的密码重置流程顺利,安全组设置和SSH连接快速无阻,且体验到AccessKey预警系统的实用性。在处理代码时曾因未替换特殊字符报错,但最终解决了问题,实现了Python代码分析功能,确认系统为Linux,并对OS工具的交互性和实用性表示赞赏,特别是其与Linux环境的兼容性。遇到过一次生成实例的错误,但整体体验良好,有兴趣参与OS Copilot的开源开发。
|
4月前
|
运维 测试技术 双11
什么是性能测试,一篇文章告诉你!
性能测试评估系统在现实负载下的性能和可靠性,包括响应时间、吞吐量和稳定性。目的是发现瓶颈、评估系统能力、优化性能和确保可靠性。在**双十一大促**等高并发场景下,性能测试至关重要。它有助于合理规划资源,降低成本,提升效率。测试工程师需掌握性能调优,理解压力曲线图,识别最佳并发用户数和最大承载点。通过测试,确保系统在最佳效率下运行,避免资源浪费和用户满意度下降。
下一篇
无影云桌面