ADB 测试常用操作指南

一、测试核心操作分类

1. 应用测试
  • 安装/卸载应用

    bash 复制代码
    # 安装应用(覆盖安装使用 `-r`)
    adb install -t app.apk
    
    # 卸载应用(保留数据使用 `-k`)
    adb uninstall com.example.package
    
    # 清除应用数据(模拟首次启动)
    adb shell pm clear com.example.package
  • 启动/停止应用

    bash 复制代码
    # 启动应用主 Activity
    adb shell am start -n com.example.package/.MainActivity
    
    # 强制停止应用
    adb shell am force-stop com.example.package
    
    # 发送广播(如测试接收器)
    adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

2. 日志与调试
  • 实时日志过滤

    bash 复制代码
    # 仅显示某个 TAG 的日志(如过滤崩溃)
    adb logcat -s "TAG_NAME"
    
    # 按优先级过滤(V/D/I/W/E)
    adb logcat *:E    # 仅显示错误日志
    
    # 按关键字搜索日志(如崩溃堆栈)
    adb logcat | grep "NullPointerException"
  • 导出日志到文件

    bash 复制代码
    adb logcat -d > log.txt     # 导出当前日志
    adb logcat -c               # 清空日志缓存

3. 自动化测试(Monkey测试)
  • 随机压力测试

    bash 复制代码
    # 发送 1000 次随机事件(指定包名)
    adb shell monkey -p com.example.package -v 1000
    
    # 限制事件类型(如仅触摸和滑动)
    adb shell monkey --pct-touch 50 --pct-motion 30 -v 500
  • 忽略崩溃/ANR

    bash 复制代码
    adb shell monkey --ignore-crashes --ignore-timeouts -v 1000

4. 性能测试
  • CPU 和内存监控

    bash 复制代码
    # 查看应用 CPU 占用
    adb shell top -n 1 | grep com.example.package
    
    # 查看应用内存占用(单位 KB)
    adb shell dumpsys meminfo com.example.package
    
    # 持续监控性能(每秒刷新)
    adb shell top -d 1
  • 帧率与渲染性能

    bash 复制代码
    # 查看界面渲染帧率(需 Android 4.1+)
    adb shell dumpsys gfxinfo com.example.package
    
    # 统计应用启动时间
    adb shell am start -W -n com.example.package/.MainActivity

5. UI 自动化与交互
  • 模拟用户操作

    bash 复制代码
    # 点击屏幕坐标(需屏幕分辨率)
    adb shell input tap 500 1000
    
    # 滑动操作(起始坐标 + 结束坐标 + 时长)
    adb shell input swipe 300 1000 300 500 200
    
    # 输入文本(需先聚焦输入框)
    adb shell input text "HelloWorld"
    
    # 按键事件(如返回键、Home 键)
    adb shell input keyevent 4      # 4=返回键,3=Home 键
  • 获取当前 Activity 信息

    bash 复制代码
    adb shell dumpsys window | grep mCurrentFocus
  • UI 布局分析(XML Dump)

    bash 复制代码
    adb shell uiautomator dump /sdcard/ui.xml
    adb pull /sdcard/ui.xml         # 导出到本地分析

6. 网络与代理设置
  • 设置全局代理

    bash 复制代码
    adb shell settings put global http_proxy 192.168.1.1:8080
  • 清除代理

    bash 复制代码
    adb shell settings put global http_proxy :0
  • 端口转发(抓包工具如 Charles/Fiddler)

    bash 复制代码
    adb reverse tcp:8080 tcp:8080   # 将设备 8080 映射到 PC 8080

二、多设备操作

  • 指定设备执行命令

    bash 复制代码
    # 列出所有设备序列号
    adb devices
    
    # 指定设备执行命令(-s 参数)
    adb -s 设备序列号 install app.apk
  • 批量操作(需脚本支持)

    bash 复制代码
    # 示例:为所有设备安装 APK
    for device in $(adb devices | grep -v List | awk '{print $1}'); do
      adb -s $device install app.apk
    done

三、高级测试技巧

1. 截图与录屏
  • 快速截图

    bash 复制代码
    adb exec-out screencap -p > screen.png
  • 录制屏幕(最长 3 分钟)

    bash 复制代码
    adb shell screenrecord --bit-rate 4000000 /sdcard/video.mp4

2. 文件管理
  • 查看设备文件结构

    bash 复制代码
    adb shell ls /sdcard/           # 列出目录
    adb shell cat /proc/cpuinfo     # 查看 CPU 信息
  • 强制删除文件(需 Root)

    bash 复制代码
    adb shell su -c "rm -rf /data/local/tmp/test"

3. 设备信息查询
  • 系统版本与硬件信息

    bash 复制代码
    adb shell getprop ro.build.version.release   # Android 版本
    adb shell getprop ro.product.model          # 设备型号
    adb shell wm size                           # 屏幕分辨率

四、常见测试场景示例

  1. 测试应用冷启动速度

    bash 复制代码
    adb shell am force-stop com.example.package
    adb shell am start -W -n com.example.package/.MainActivity
  2. 模拟网络切换(4G/WiFi)

    bash 复制代码
    adb shell svc wifi disable    # 关闭 WiFi(需 Root)
    adb shell svc data enable     # 开启移动数据(需 Root)
  3. 测试低电量场景(需 Root)

    bash 复制代码
    adb shell dumpsys battery set level 15   # 设置电量 15%
    adb shell dumpsys battery reset          # 恢复实际电量

五、注意事项

  1. Root 权限:部分命令需设备已 Root(如修改系统文件)。
  2. Android 版本差异 :某些命令在不同 Android 版本中可能行为不同(如 dumpsys 输出格式)。
  3. 安全限制 :Android 11+ 对访问 /data 目录有更严格限制。
相关推荐
夜雪一千4 小时前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb
clorinda11 小时前
MySQL 入门笔记:DQL 基础查询与常用函数
adb
Code额12 小时前
基于 SQLAlchemy 2.x,面向 MySQL 数据库的从入门到精通实战教程(2)
数据库·sql·mysql·adb·ai
游戏开发爱好者81 天前
WebSocket 抓包怎么查看内容?从握手到消息帧完整解读
网络协议·计算机网络·网络安全·ios·adb·https·udp
00后程序员张3 天前
SSL Pinning 抓包抓不到明文?绕过证书固定的几种方案
网络协议·计算机网络·网络安全·ios·adb·https·udp
没文化的阿浩4 天前
【MySQL】数据类型
android·mysql·adb
黄毛火烧雪下4 天前
智能眼镜无线adb调试
adb
游戏开发爱好者84 天前
带签名时间戳接口的重放与压力测试实战,用动态值在发送前现算签名
网络协议·计算机网络·网络安全·ios·adb·https·压力测试
Lethehong7 天前
MySQL迁移如何做到零改造?四层兼容方案详解
数据库·mysql·adb
陈卿诺语9 天前
MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
sql·mysql·adb