APP测试 - 压力测试与性能分析3

文章目录

✨✨✨学习的道路很枯燥,希望我们能并肩走下来!

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。



本文开始

1. adb 模拟案件操作

操作步骤:

  1. 开发者模式中,打开【指针位置】设置
  2. 执行 adb shell input 命令

模拟点击事件:点击某个位置,根据坐标点击对应位置,可以根据指针位置查看x,y位置

bash 复制代码
adb shell input tap x坐标 y坐标

模拟输入事件

bash 复制代码
adb shell input text <输入内容>
# 示例
adb shell input text adb命令是什么

模拟滑动时间

【注】移动端左上角坐标(0,0), 右下角是最大;

bash 复制代码
adb shell swipe <起点x> <起点y> <终点x> <终点y> <滑动时长>

模拟手机按键

官方地址:https://developer.android.com/reference/android/view/KeyEvent

【注】每个硬件对应一个数字,具体查看文档

bash 复制代码
#返回键:
adb shell input keyevent 4
# Home 键:
adb shell input keyevent 3(置应用于后台运行)
# 音量放大:
adb shell input keyevent 24
# 音量缩小:
adb shell input keyevent 25

2. adb 性能分析

官网地址查看详细的信息:https://developer.android.com/docs

查看当前系统 CPU 使用情况:

bash 复制代码
adb shell dumpsys cpuinfo

查看当前系统的内存:

bash 复制代码
adb shell dumpsys meminfo

查看某个应用的内存:

bash 复制代码
adb shell dumpsys meminfo <应用名>

top命令:查看实时日志

bash 复制代码
adb shell top
# 查看某个包的一些性能指标
adb shell top |grep "包名" 
# 查看某个包的一些性能指标,指定打印时间
# -d 1 :隔一秒打印一下
adb shell top -d 1 |grep "包名"

电池电量

bash 复制代码
adb shell dumpsys battery
bash 复制代码
# 当前电池相关状态
Current Battery Service state:
  AC powered: true
  USB powered: false
  Wireless powered: false
  Max charging current: 2000000   # 最大充电电流; mA
  status: 2    #电池状态:2:充电状态 ,其他数字为非充电状态 
  health: 2    #电池健康状态:只有数字2表示good
  present: true   #电池是否安装在机身
  level: 61    #电量: 百分比
  scale: 100
  voltage: 4108    #电池电压
  temperature: 353   #电池温度,单位是0.1摄氏度
  technology: Li-poly   #电池种类

3. app 压力测试

Monkey 工具

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

Monkey作用

  1. Monkey 可以像猴子一样上蹿下跳地乱点在手机中
  2. Monkey为了测试软件的稳定性,健壮性
  3. Monkey随机点击比顺序点击更容易发现问题

Monkey 基础用法

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

Monkey常用参数

Monkey命令:

bash 复制代码
adb shell monkey [参数] {随机发送事件数}

-v :用于指定反馈信息级别,总共分 3 个级别

bash 复制代码
adb shell monkey -v -v -v 10

-s < seednumber >:用于指定伪随机数生成器的 seed(种子)值

【注】使用相同的seed值,可以复现重复场景,当遇到bug或问题时;

bash 复制代码
# -s  <seednumber>
# 指定seed值
adb shell monkey -s 123 10

throttle: 设置每个事件结束后的间隔时间

【注】人的快操作时间大概是300mm

bash 复制代码
# --throttle <milliseconds>
# 模拟人操作每个事件时间的速度:指定300mm
adb shell monkey --throttle 300 10

-p: 用于约束限制,用此参数指定一个或多个包

bash 复制代码
# 指定一个包monkey
adb shell monkey -p com.android.browser 10
# 指定多个包Monkey
adb shell monkey -p com.android.browser -p com.android.xxx 10

其他参数

bash 复制代码
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--ignore-native-crashes:忽略本地代码导致的崩溃异常
--monitor-native-crashes:跟踪本地方法的崩溃问题

Monkey 事件选项

Monkey时指定操作事件所占的百分比

【注】所有类型属性比例加起来不能超过 100

bash 复制代码
--pct-touch:触摸事件
--pct-motion:滑动事件
--pct-appswitch:activity 之间的切换
--pct-pinchzoom:缩放事件
--pct-rotation:屏幕旋转事件
--pct-flip:键盘事件
--pct-anyevent:任意事件

测试脚本编写思路

bash 复制代码
# 1. 确定测试 app 的包名:
adb shell dumpsys activity | grep mFocusedActivity
# 2. 执行测试 8 小时:下列是需要计算的大概次数
  需要跑的时间/命令之间的时间间隔=要执行的次数 8*60*60*1000/300 = 96000
# 3. 日志级别:3 个 v
  确定app中常用的操作类型和比例:滑动、触摸、键盘、系统按键、activity切换
# 4. 确定 seed 值:-s 12345
# 5. 确定调试选项:
--ignore-crashes --ignore-timeouts --ignore-security-exceptions
# 6. 重定向日志到文件中 >

示例Monkey测试脚本

bash 复制代码
adb shell monkey -p app包名 --pct-touch 30 --pct-motion 30 \
--pct-syskeys 10 --pct-appswitch 20 --pct-flip 5 --pct-anyevent 5 \
-s 12225 --throttle 300 --ignore-crashes --ignore-timeouts \
--ignore-security-exceptions -v -v -v 实际需要Monkey的次数 > monkey_log.txt

总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

相关推荐
雪花凌落的盛夏12 分钟前
PostgreSQL 14 主备集群实战部署教程:流复制 + 双机 WAL 归档 + 自动化备份
数据库·postgresql·自动化
kyle~27 分钟前
工业机械臂 --- 抱闸系统(Holding Brake)
机器人·自动化·硬件
qq_4260039630 分钟前
多语言新增语种全量测试策略
前端·javascript·python·pycharm·自动化
挨踢诗人3 小时前
金蝶K3 WISE × 乐企平台 直连数电票集成解决方案(商贸企业开票自动化)
大数据·运维·自动化
网安蟹佬霸13 小时前
# 网络流量分析实战:从Wireshark到入侵检测系统构建(2026最新版,附完整流量分析链与IDS规则集)
网络·测试工具·安全·开源·wireshark·密码学·哈希算法
志栋智能15 小时前
迈向真正的超自动化巡检
运维·自动化
DianSan_ERP16 小时前
WMS接入电商平台自动化履约实战:一张订单从平台到出库的接口时序设计
java·前端·网络·数据库·安全·架构·自动化
志栋智能18 小时前
从安全超自动化到超自动化安全的认知飞跃
运维·安全·自动化
单友人20 小时前
HMHA-RYST 算法技能包 + 聊天记录导出器
人工智能·神经网络·机器学习·语言模型·自动化
FII工业富联科技服务20 小时前
从“单机自动化”到“技能复用”:从WRC 2026拆解机器人模型、仿真、部署与数据回流
人工智能·机器人·自动化