本文转自测试人社区,原文链接: https://ceshiren.com/t/topic/31924

一,adb介绍

1.1,简介

  • Android Debug Bridge(Android 调试桥)简称 adb
  • Android sdk 中提供的用于管理模拟器或真机状态的工具
  • 命令行工具

1.2,adb 操作手机设备

  • 打开应用adb shell am start -n com.tencent.wework/.launch.LaunchSplashActivity
  • 传输文件
  • 点击,输入,滑动等
  • 硬件操作 返回,回到首页
  • 性能指标

1.3,adb 工作原理

  • 采用了客户端-服务器(C/S)模型,包括三个部分:
  1. 客户端 client
  2. 服务端 server
  3. 守护进程 daemon

软件测试学习笔记丨adb常用命令_Android

1.4,adb 环境搭建与配置

(1) Java 环境安装与配置
  • /javase/javase-jdk8-downloads.html
  • 注意:windows 下载 exe 安装包即可
  • j配置Java环境变量:
(2)Android SDK 环境安装
  • SDK 下载
  • SDK 环境配置
ANDROID_HOME   D:\adt-bundle-mac-x86_64-20140702\sdk   
PATH   %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools
  • 1.
  • 2.
(3)检查是否安装成功
  • adb 回车(或者 adb shell )

二,adb常用命令

2.1 adb 与设备交互

(1)连接模拟器 (mumu 为例)
  • windows:
  • adb connect 127.0.0.1:7555
  • adb devices
  • mac:
  • adb kill-server
  • adb devices
(2)连接真机(android 手机)设备
  1. 手机端:让手机处于一个调试模式
  2. 电脑端安装手机驱动
(3)查看手机设备状态
  • 命令:
  • adb devices
  • adb get-state
  • 设备状态种类
  • device 正常
  • offline 连接出现异常,设备无响应
  • unauthorized 未授权

2.2 adb 安装卸载命令

(1) adb 命令格式
  • 格式 :adb [-d|-e|-s <serialNumber>]<command>
  • -d 指定当前唯一通过 Usb 连接的 android 设备为命令目标(了解)
  • -e 指定当前唯一运行的模拟器为命令目标(了解)
  • -s 指定相应的设备为命令目标(重点)
(2) 安装
  • 普通安装 adb install <apk路径>
  • 覆盖安装/替代安装 adb install -r <apk路径>
(3) 卸载
  • 卸载应用:adb uninstall 包名
  • 卸载应用(不删除配置文件,保存数据缓存信息):adb uninstall -k 包名

2.3 adb命令启动页面

(1) 包和 Activity(活动页)的概念
  • package 包:是 Android 应用的唯一标志
  • Activity 活动页: Android 应用页面,一个页面就是一个 Activity
(2) 获取当前的页面名
  1. 打开手机 app 应用的某个页面
  2. 打开命令行工具
  • 执行命令:adb shell "dumpsys window | grep mCurrentFocus" 获取当前的页面名
(3) 获取启动页面的 activity
  • 执行命令:
  • mac:adb logcat ActivityManager:I | grep "cmp"
  • win:adb logcat ActivityManager:I | findstr "cmp"
(4) 启动页面
  • 执行命令:adb shell am start -n <包名>/<avticity名>

2.3 adb清缓存命令

(1) adb shell 应用
  • 查看目录结构:adb shell ls
  • 查看系统当前日期:adb shell date
  • 查看系统 CPU 使用情况:adb shell cat /proc/cpuinfo
  • 查看系统内存使用情况:adb shell cat /proc/meminfo
(2) 查看应用列表
  • 显示所有应用:adb shell pm list packages
  • 显示系统自带应用:adb shell pm list packages -s
  • 显示第 3 方应用:adb shell pm list packages -3
(3)清除应用数据及缓存
  • adb shell pm clear <包名>

2.4 adb文件传输

  • adb push 电脑路径 设备路径
  • adb pull 设备路径 电脑路径

软件测试学习笔记丨adb常用命令_软件测试_02

2.5 adb日志操作

(1)日志级别
  • V — 明细 verbose(最低优先级)
  • D — 调试 debug
  • I — 信息 info
  • W — 警告 warn
  • E — 错误 error
  • F — 严重错误 fatal
  • S — 无记载 silent(最高优先级,绝不会输出任何内容)
(2)查看日志
  • adb logcat
(3)查看日志常用的参数
  • adb logcat --help
  • adb logcat [TAG:LEVEL ] [TAG:LEVEL ] …
  • adb logcat 打印默认日志数据
  • adb logcat -v time 打印时间
  • adb logcat -v color 使用不同的颜色来显示每个优先级
  • adb logcat -f <filename> 将日志输出到手机文件,filename为手机文件的路径地址
  • adb logcat > log.log 保存日志到PC上
  • adb logcat -c 清理已存在的日志

三,App压力与性能测试

3.1 adb 模拟手机按键操作

  • 1、打开【指针位置】设置
  • 2、执行 adb shell input 命令,查看可以执行的相关命令

软件测试学习笔记丨adb常用命令_adb_03

(1)模拟点击事件(打开app)
  • 执行命令: adb shell input tap x坐标 y坐标 (x,y坐标为app对应的坐标)
(2) 模拟输入事件
  • 打开app页面,将鼠标放到对应的输入框处
  • 执行命令: adb shell input text <输入内容>
(3) 模拟滑动事件
  • adb shell input swipe <起点x> <起点y> <终点x> <终点y> <滑动时长>
(4) 模拟手机按键
  • 返回键:adb shell input keyevent 4
  • Home 键:adb shell input keyevent 3(置应用于后台运行)
  • 音量放大:adb shell input keyevent 24
  • 音量缩小:adb shell input keyevent 25

3.2 adb性能分析

(1) CPU 和内存使用情况
  • 查看当前系统 CPU 使用情况:adb shell dumpsys cpuinfo(查看某一时段内的均值)
  • 查看当前系统的内存:adb shell dumpsys meminfo
  • 查看某个应用的内存:adb shell dumpsys meminfo <应用名>
(2)top 命令
  1. adb shell top
  2. adb shell top |grep "包名" 查看某个包的一些性能指标
  3. adb shell top -d 1 |grep "包名"
(3)电池电量
  • 命令:adb shell dumpsys battery

软件测试学习笔记丨adb常用命令_包名_04

3.3 adb压力测试

(1)Monkey 介绍
  • Monkey 是 Google 提供的一个用于稳定性与压力测试的命令行工具
  • 可以运行在模拟器或者实际设备中
  • 它向系统发送伪随机的用户事件对软件进行稳定性与压力测试
(2) Monkey 基本用法
  1. 在命令提示符中输入 adb devices 查看有无连接的设备
  2. 确认有设备连接
  3. 获取 app 的包名
  4. adb shell monkey [参数] {随机发送事件数}
  5. 最简单的 monkey 命令:adb shell monkey 100
(3) Monkey 常用选项
  • -v :用于指定反馈信息级别,总共分 3 个级别
  • adb shell monkey -v -v -v 10
  • -s <seednumber>:用于指定伪随机数生成器的 seed(种子)值
  • adb shell monkey -s 123 10
  • --throttle <milliseconds>:每个事件结束后的间隔时间
  • adb shell monkey --throttle 300 10
  • -p: 用于约束限制,用此参数指定一个或多个包
  • adb shell monkey -p com.android.browser 10
  • --ignore-crashes:忽略崩溃
  • --ignore-timeouts:忽略超时
  • --ignore-security-exceptions:忽略安全异常
  • --ignore-native-crashes:忽略本地代码导致的崩溃异常
  • --monitor-native-crashes:跟踪本地方法的崩溃问题
(4)Monkey 事件选项
  • --pct-touch:触摸事件
  • --pct-motion:滑动事件
  • --pct-appswitch:activity 之间的切换
  • --pct-pinchzoom:缩放事件
  • --pct-rotation:屏幕旋转事件
  • --pct-flip:键盘事件
  • --pct-anyevent:任意事件
  • 注意:所有类型属性比例加起来不能超过 100
(5) Monkey 日志分析
  1. 程序无响应,ANR 问题:在日志中搜索 “ANR”
  2. 崩溃问题:在日志中搜索 “CRASH”
  3. 其他问题:在日志中搜索 “Exception”