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

总结

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

相关推荐
中微极客几秒前
RAG评估工具2026横向测评:从手工到自动化
人工智能·自动化
微硬创新1 小时前
耐达讯自动化PROFINET转DeviceNet网关:医药包装生产线的合规与效率双保障
服务器·人工智能·物联网·网络协议·自动化·信息与通信
AC赳赳老秦1 小时前
GTD 工作法落地:用 OpenClaw 搭建收集-整理-执行-复盘全流程自动化工作流
大数据·运维·人工智能·信息可视化·自动化·deepseek·openclaw
明航咨询_贾老师2 小时前
RHCA Ansible高级自动化(DO374)认证信息整理
运维·自动化·ansible·rhca·红帽认证
BerryS3N3 小时前
GitHub Actions自动化运维实战:从CI/CD到云端部署的完整指南
运维·自动化·github
山东云弈创峰科技12 小时前
山东云弈创峰:跨境电商AI自动化中的环境隔离与风控架构
人工智能·架构·自动化
007张三丰15 小时前
软件测试专栏(15/20):REST Assured接口自动化框架实战
运维·自动化·jenkins·接口自动化·rest·assured
曦尧15 小时前
Project AIRI:以 Web 技术栈为赌注,开源复刻 Neuro-sama 的「赛博生命」容器
ai·自动化
qyr678915 小时前
全球新能源汽车电机驱动器市场深度调研报告
大数据·网络·人工智能·自动化·汽车
曦尧16 小时前
Tolaria:为 AI 时代重新设计的 Files-first / Git-first 本地知识库
ai·自动化