文章目录
- 前言
- 一、简介
- 二、ADB环境部署
- 三、ADB常用命令
前言
最近在学习APP测试,了解到ADB工具,该工具可以通过命令行的方式对安卓手机/模拟器进行控制
一、简介
ADB(Android Debug Bridge)是一个通用命令行工具,也是安卓APP常用的调试工具。通过ADB可以实现对APP的卸载、安装、启动、查看日志等功能。
二、ADB环境部署
所需的环境:
- JDK
- Android SDK
- ADB
1、下载安装
这里我电脑之前有装过JDK8了,就不在这里写了。
安装Android SDK https://www.androiddevtools.cn/
进入网页后,选择该导航栏进行定位。
选择对应的版本进行下载
下载好之后,解压到一个纯英文的目录中,打开SDK Manager.exe
打开后,勾选Tools,然后点击install,这里我是已经安装过相关包后才截的图,数目是对不上的
下载完成后,就可以关掉下载界面
2、系统变量配置
右键此电脑==》属性==》高级系统设置==》环境变量==》系统变量
新建一个ANDROID_HOME的系统变量
你的解压路径\android-sdk-windows
找到Path,点击编辑,新建一个变量,值为 %ANDROID_HOME%/platform-tools
3、验证是否安装成功
win+R打开命令行,输入 adb version
出现如下打印信息就说明安装成功啦。
三、ADB常用命令
1、adb devices (查看连接设备命令)
2、adb connect IP地址:端口号 (连接设备命令)
获取设备连接地址
打开模拟器/手机开发者模式,获取要连接的设备的IP及端口号
①如果使用的是模拟器,下图有常见模拟器的默认端口
上图来自:https://www.jianshu.com/p/119fbe6e28e0
②如果是真机(同一局域网下),在开发者选项页面,点击打开无线调试
再次点击打开无限调试的详情页面,即可以看到对应的IP及端口号信息
执行命令
这里手机的连接不知道为什么断开了,经过一番搜索,无线调试似乎需要ROOT权限,没有进行root的手机智能通过usb进行连接了。(已能连接,具体参考下面的链接)
最后参考这篇文章成功上岸无限调试,膜拜前辈!http://t.csdnimg.cn/I2RmF
最终连接上了!
要找到能解决问题的文章还是比较难的,可以换换报错或者提示语句进行搜索,可能就找到了。
3、adb disconnect IP地址:端口号 (断开设备连接)
有连接操作就有断开连接操作
4、开启或关闭ADB服务
- 开启:adb start-server
- 关闭:adb kill-server
5、安装/卸载APP
①安装
- 安装APP:adb install APK路径
- 选项: -r 覆盖安装并保留数据和缓存
②卸载
- 卸载APP:adb uninstall APK包名(这里是包名,和安装不同!)
- 选项:-k 卸载时保留数据和缓存
6、获取APP包名
- 列出手机所有APP包名:adb shell pm list packages
- 选项:-s 只列出系统包名; -3 只列出第三方包名
- 显示当前打开的APP(屏幕当前显示APP)包名:
- Windows:adb shell dumpsys window | findstr mCurrentFocus
- Mac/Linux:adb shell dumpsys window | grep mCurrentFocus
包名(package):在手机里面这个app的名字
界面名(activity):可以理解为当前app所在的界面
①adb shell pm list packages 显示手机所有APP包名
③adb shell pm list packages -s 显示手机系统自带APP包名
④adb shell pm list packages -3 显示手机第三方APP包名
⑤Windows:adb shell dumpsys window | findstr mCurrentFocus
7、adb shell pm clear 包名(清除应用数据与缓存)
8、adb shell am start 包名/界面名(启动APP进入到对应界面)
获取APP启动时间
- adb shell am start -W 包名/界面名
- 选项:
- -W:显示启动时间
- -S:每次启动前强行停止
- -R:重复测试次数
- 常见指标
- ThisTime:当前activity的时间
- TotalTime:APP启动时间,包括创建进程、APP初始化、Activity的初始化到界面显示时间
- WaitTime:前一个应用activity pause的时间+TotalTime
9、adb shell am force-stop 包名(停止APP)
10、获取手机日志
在测试过程中,遇到bug了,需要我们去获取相关日志信息,以便研发定位bug
获取错误日志步骤:
- 打开被测app,进入到触发bug位置
- 使用查看日志命令:adb logcat——打开日志功能
- 触发bug——复现bug
- 获取打印的日志信息
一般情况下留意Error错误级别的日志。在发现错误日志时及时Ctrl+C停止日志刷新
也可以使用重定向符号 > ,将日志信息重定向到指定文件
下面的命令可以将产生的日志信息重定向到 Desktop/1.txt 的文件中
adb logcat > Desktop/1.txt
这样在复现完bug之后,Ctrl+C停止日志刷新就可以打开1.txt文件进行日志的查看,在提交bug时附上该文件供研发定位bug
日志等级信息:
11、文件传输
上传文件(电脑–>手机):adb push 电脑文件路径 手机文件夹路径
下载文件(手机–>电脑):adb pull 手机文件路径 电脑文件夹路径
也可以将pull的文件重命名,如果不指定文件名则和手机pull的文件名一致
扩展 一些手机或模拟器不会展示真实手机文件路径 那么可以使用adb shell 进入linux命令行界面 通过pwd
命令去打印当前的工作路径
12、获取内存
adb shell dumpsys meminfo 包名
观察点:
- Native/Dalvik的Heap信息
- 如果这个值一直增加,则可能发生了内存泄漏。
- Total 的 PSS 值信息:
- 这个值为APP真正占据的内存大小
- 这个值为APP真正占据的内存大小
13、查看CPU占用情况
adb shell top
选项:-s 列号 按指定列排序
14、获取APP使用流量
获取步骤:
- 获取进程pid
- windows:adb shell ps | findstr 包名
- linux/mac:adb shell ps | grep 包名
- 获取流量 adb shell cat /proc/{pid}/net/dev
- 查看流量情况
15、Monkey稳定性测试
简介
稳定性测试:****通过长时间对应用程序进行无需操作,检验应用程序是否出现异常,如程序奔溃(crash)、无响应(ANR)等。
测试工具——Monkey:
- 命令行工具,由安卓官方提供
- 通过Monkey模拟用户的触摸、点击、滑动以及系统按键等操作(随机),实现对APP的压力测试和稳定性测试。
- 研发结合Monkey打印的日志和系统打印日志,修改测试过程中出现的问题
稳定性测试时机:产品稳定(功能、专项、性能测试通过了),bug较少的时候,上线前进行测试。
具体命令
adb shell monkey -p 包名 -v 次数 > Desktop\monkey.txt
选项:
- -p 指定包名
- -v 日志详细程度(最高支持’-v -v -v’最详细)
参数拓展
图中的事件类型参数可以设置特定操作类型的比例。
①使用 -s 指定monkey测试序列,同一个序列会执行同样的动作,方便出现bug时复现bug
adb shell monkey -s 100 -p com.tpshop.malls -v 5000 > Desktop/monkey.txt
②使用 --throttle 指定每个操作的间隔,单位是毫秒(注意是两个 -)
一般设置300ms-500ms-800ms
adb shell monkey --throttle 300 -p com.tpshop.malls -v 5000 > Desktop/monkey.txt
③一般稳定性测试会跑20w次(8-12h),为了一次性把问题跑出来,还会带下面两个参数
- 忽略APP奔溃: ignore-crashes
- 忽略无响应ANR: ignore-tinmeouts