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

总结

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

相关推荐
U盘失踪了2 小时前
Browser Use — AI驱动浏览器自动化的全新范式
笔记·自动化
志栋智能2 小时前
超自动化安全:实现安全运营现代化的关键
大数据·运维·网络·安全·自动化
一次旅行3 小时前
实战指南:基于开源工具链构建自动化演示文稿生成工作流
运维·开源·自动化
一拳一个娘娘腔5 小时前
【SRC漏洞挖掘系列】第15期:自动化与AI赋能 —— 打造你的专属“漏洞挖掘机”
运维·人工智能·自动化
AC赳赳老秦5 小时前
OpenClaw批量任务队列优化:解决任务堆积、执行缓慢、优先级混乱问题
java·大数据·数据库·c++·自动化·php·openclaw
半导体守望者5 小时前
ADTEC AX-1000Ⅱ电源 RF电源等离子电源操作指南RF PLASMA GENERATOR
学习·机器人·自动化·制造·模块测试
weixin_468466856 小时前
图像处理之亚像素边缘检测新手教程
图像处理·人工智能·自动化·图像分割·机器视觉·亚像素·光学系统
好名字更能让你们记住我6 小时前
【接口自动化测试】博客系统接口自动化测试报告
python·功能测试·自动化·接口测试·接口自动化·测试覆盖率
zlinear数据采集卡6 小时前
电源纹波无处遁形!工业采集卡电源去耦与滤波电路深度解析
c语言·嵌入式硬件·fpga开发·自动化·硬件架构
我的xiaodoujiao7 小时前
API 接口自动化测试详细图文教程学习系列23--结合Pytest框架使用4-前后置处理
python·学习·测试工具·pytest