首页 > 其他分享 >深入探究App压力测试的关键要点:从零开始学习Monkey

深入探究App压力测试的关键要点:从零开始学习Monkey

时间:2024-03-26 10:46:22浏览次数:27  
标签:Monkey -- App pct ignore 从零开始 adb monkey

简介

  • Monkey 是 Google 提供的一个用于稳定性与压力测试的命令行工具
  • 可以运行在模拟器或者实际设备中
  • 它向系统发送伪随机的用户事件对软件进行稳定性与压力测试

为什么要用 Monkey

  • Monkey 就是像猴子一样上蹿下跳地乱点
  • 为了测试软件的稳定性,健壮性
  • 随机点击比顺序点击更容易发现问题

Monkey 基本用法

  1. 在命令提示符中输入 adb devices 查看有无连接的设备
  2. 确认有设备连接
  3. 获取 app 的包名
  4. adb shell monkey [参数] {随机发送事件数}
  5. 最简单的 monkey 命令:adb shell monkey 100

Monkey 常用选项

  • -v :用于指定反馈信息级别,总共分 3 个级别
    • adb shell monkey -v -v -v 10
  • -s <seednumber>:用于指定伪随机数生成器的 seed(种子)值
    • adb shell monkey -s 123 10
  • --throttle <milliseconds>:每个事件结束后的间隔时间
    • adb shell monkey --throttle 300 10
  • -p:用于约束限制,用此参数指定一个或多个包
    • adb shell monkey -p com.android.browser 10
  • --ignore-crashes:忽略崩溃
  • --ignore-timeouts:忽略超时
  • --ignore-security-exceptions:忽略安全异常
  • --ignore-native-crashes:忽略本地代码导致的崩溃异常
  • --monitor-native-crashes:跟踪本地方法的崩溃问题

Monkey 事件选项

  • --pct-touch:触摸事件
  • --pct-motion:滑动事件
  • --pct-appswitch:activity 之间的切换
  • --pct-pinchzoom:缩放事件
  • --pct-rotation:屏幕旋转事件
  • --pct-flip:键盘事件
  • --pct-anyevent:任意事件
  • 注意:所有类型属性比例加起来不能超过 100

雪球 app 压力测试实战

  • 确定测试 app 的包名:
  • adb shell dumpsys activity | grep mFocusedActivity
  • 执行 8 小时:
  • 需要跑的时间/命令之间的时间间隔=要执行的次数 8*60*60*1000/300 = 96000
  • 日志级别:3 个 v
  • 确定雪球中常用的操作类型和比例:滑动、触摸、键盘、系统按键、activity切换
  • 确定 seed 值:-s 12345
  • 确定调试选项:
  • --ignore-crashes --ignore-timeouts --ignore-security-exceptions
  • 重定向日志到文件中 >

雪球 App 压力测试脚本示例

adb shell monkey -p com.xueqiu.android --pct-touch 30 --pct-motion 30 --pct-syskeys 10 --pct-appswitch 20 --pct-flip 5 --pct-anyevent 5 -s 12345 --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v 200 > monkey_log.txt

Monkey 日志分析

  1. 程序无响应,ANR 问题:在日志中搜索 “ANR”
  2. 崩溃问题:在日志中搜索 “CRASH”
  3. 其他问题:在日志中搜索 “Exception”

总结

  • Monkey 简介
  • Monkey 基本用法
  • Monkey 事件选项

标签:Monkey,--,App,pct,ignore,从零开始,adb,monkey
From: https://www.cnblogs.com/hogwarts/p/18096046

相关文章

  • 2024年App分发渠道整理
    一、有一定门槛的分发渠道,难度较大比如小米、华为、Realme、oppo等手机厂商应用商店,将App上传会有严谨的审核标准,可能需要专人来维系与应用商店的联系,还需要备案app;其次是系统商应用商店,比如Google、Apple、Win等官方应用商店,应该是业内分发难度最大的;最后是第三方应用商店,比如......
  • 三月二十五日 安卓打卡app开发
    今天完成了每月打卡次数统计功能 publicstaticStringcount(Stringaccount)throwsSQLException{Connectionconnection=null;PreparedStatementstatement=null;ResultSetresultSet=null;StringBuilderresultBuilder=ne......
  • app,小程序开发基础知识
    app,小程序开发基础知识1.0app应用开发架构原生开发:安卓一般使用java开发,也有kotlin语言开发,简单的说就是使用安卓提供的一系列控件来实现页面,我们对于这种架构怎么去安全测试呢?通过反编译逆向和抓包去分析资产信息,然后对资产进行安全测试开发架构:原生态-IDEAH5开发H5就是......
  • 简化业务流程, AppLink连接一定签
    APPlink是什么APPlink是RestCloud打造的一款简单易用的零代码自动化集成平台,为业务流程提供自动化的解决方案,将企业内部的核心系统以及第三方应用程序和云服务等进行集成。无论是开发人员还是业务人员,都可以使用APPlink轻松构建出高效、自动化的工作流,并将您的工作效率提升到一个......
  • 海外盲盒APP系统开发,探寻盲盒的海外机遇
    目前,盲盒在我国受到了消费者的欢迎。在各类影视动漫的火热下,热衷于娱乐消费的年轻人成为了盲盒的主要消费人群。在国外,盲盒也同样深受海外消费者的喜爱。近几年,盲盒在海外的销售量急速上升,创下了新高。随着盲盒在海外的火爆,越来越多的企业开始拓展海外市场。我国盲盒也因独特......
  • 在uniapp中监听globalData中的值变化
    1、先再app.vue中定义一个全局数据对象globalData,再对象里定义好相应的属性与属性值globalData:{ly_s:false,//蓝牙搜索状态},methods:{watch:function(method,istr){varobj=this.globalDataconsole.log(obj)Object.defineProperty(ob......
  • 如何成功将自己开发的APP上架到应用商店
     随着移动应用市场的蓬勃发展,开发一款优秀的APP已成为许多企业和个人的首要选择。然而,成功上架并有效推广APP至关重要。本文将逐步介绍完整的上架流程,包括准备所需材料、注册开发者账户、进行APP备案、提交审核以及上架成功后的推广和维护。 1.准备上架所需材料在准备上架......
  • 【WPF应用12】基本控件-WrapPanel布局详解与示例
    在WindowsPresentationFoundation(WPF)中,WrapPanel是一个强大的布局控件,它允许子控件在空间不足时自动换行,提供了极大的灵活性。在本文中,我们将详细介绍WrapPanel的布局原理、使用方法以及在开发中的应用示例。1.WrapPanel控件的布局原理WrapPanel是WPF中的一种面板......
  • 短剧APP系统开发:探索短剧的发展机遇,提高收益
    近年来,短剧在各大社交平台上快速发展,市场规模大幅度上升,成为了大众闲暇时光的娱乐的首选方式之一,深受大众的喜爱。与传统的影视相比,短剧时间短、节奏快、剧情爽,让给观众更加容易“上头”。对于创业者、影视工作者来说,短剧行业成为了新的发展风口。短剧大多依靠一些短视频平台......
  • IT20262: APPLICATIONS FAIL WITH ERROR SQL30020N "0X124C"("0100") WHEN CONNECTING
    IT20262:APPLICATIONSFAILWITHERRORSQL30020N"0X124C"("0100")WHENCONNECTINGTHROUGHAGATEWAYhttps://www.ibm.com/mysupport/s/defect/aCI3p000000kFjD/dt158090?language=en_USDescriptionIf you have an application that connects......