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

总结

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

相关推荐
袖手蹲4 小时前
Arduino UNO Q 板载 Nanobot 自动化编程指南之七
运维·人工智能·自动化
大连好光景5 小时前
软件测试笔记(1)
笔记·功能测试·测试工具
123过去5 小时前
responder使用教程
linux·网络·测试工具·安全·哈希算法
我的xiaodoujiao6 小时前
API 接口自动化测试详细图文教程学习系列7--相关Python基础知识6
python·学习·测试工具·pytest
愤豆7 小时前
11-Java语言核心-JVM原理-JVM调优详解
java·jvm·测试工具
llilian_167 小时前
ptp从时钟 ptp授时模块 如何挑选PTP从时钟授时协议模块 ptp从时钟模块
数据库·功能测试·单片机·嵌入式硬件·测试工具
鹓于9 小时前
一键提取网页文本:拖拽即用小书签
自动化
说实话起个名字真难啊9 小时前
前端JS审计:渗透测试的“破局之钥”
开发语言·前端·javascript·测试工具
herogus丶9 小时前
【Chrome插件】页面自动化助手使用介绍
前端·chrome·自动化