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

总结

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

相关推荐
wangjialelele1 小时前
Selenium4 + Java Web自动化测试入门指南:从环境搭建到常用操作详解
java·开发语言·前端·测试工具·自动化
我是Superman丶5 小时前
【2026亲测】Wireshark安装教程 Windows系统|下载安装、Npcap配置及首次抓包
windows·测试工具·wireshark
Dr.kangder6 小时前
AI4SE:AI赋能软件工程——从自动化到智能化的演进之路
人工智能·自动化·软件工程
Hy行者勇哥7 小时前
Coze【软件测试助手】Skill 完整搭建实操指南
测试工具
软件测试媛7 小时前
软件测试面试问题汇总
功能测试·面试·职场和发展·压力测试
阿童木写作19 小时前
Python实现Temu图片批量翻译自动化教程
运维·人工智能·python·自动化
iori97king20 小时前
库存不足自动通知:第一次使用自动化
运维·自动化
EAIReport1 天前
工业电气自动化数据治理破局:多Agent大模型赋能全景智能决策
大数据·运维·自动化
腾讯蓝鲸智云1 天前
标杆客户实践提炼:CFlow 版本价值流模板实战指南
运维·服务器·自动化·云计算·devops
Yang96111 天前
自动化射频测试台快速搭建,鼎讯信通 DXSL 矢量信号源模块二次开发集成指南
运维·自动化