一、设备连接操作
1. 获取连接设备
直接启动终端,使用命令 adb devices
命令即可
adb devices
image.png
其中手机连接设备状态有如下三种种情况:
- offline:设备没有与adb相连接或者无法响应.
- device:设备正与adb服务器连接
- unknown:没有连接设备
通常连接过程中可能会出现各种问题,怎么办,推荐按如下顺序尝试解决:
1.重新插拔USB数据线
2.重启adb服务
3.使用助手类软件尝试
4.重启手机
5.换根数据线试试
其中重启ADB服务命令
如下:
adb kill-server
adb start-server
如果adb服务启动不起来,查看是不是5037端口被占用
了
# 1、查看端口占用程序的pid
netstat -ano | find '5037'
# 2、根据PID查询程序信息
tasklist |findstr '5408'
# 3、杀掉占用端口的程序
taskkill /f /t /in xxx.exe
image.png
image.png
image.png
2. 安装软件
(1) 全新安装
通过本地apk文件,安装一个设备上不存在的应用
语法:adb install ${path_to_apk}
例子:
adb install esbooks.apk
(2) 升级(覆盖安装)
通过本地apk文件,升级(覆盖安装)一个设备上已存在的应用。使用参数 -r
。
语法:adb install -r ${path_to_apk}
例子:
adb install -r esbooks.apk
(3) 卸载
通过应用的包名卸载一个设备上存在的app
语法:adb uninstall ${package_name}
例子:
adb uninstall esbooks.apk
3. 文件拉取与推送
(1) 从设备端拉取「pull」文件至本地
从模拟器或者设备中复制文件或目录,使用如下命令
语法:adb pull ${remote} ${local}
即:adb pull ${手机设备} ${PC本地}
(2) 从本地推送「push」文件值设备端
将文件或目录复制到模拟器或者设备,使用如下命令
语法:adb push ${local} ${remote}
即:adb push ${PC本地} ${手机设备}
(3) 举个栗子:
本地建立个文本文件,并推送至设备sdcard目录下
1、当前目录建立test.txt,并写入“testMI”
echo 'testMI' > test.txt
2、推送test.txt至设备/sdcard/目录下
adb push test.txt /sdcard/test.txt
3、使用命令输出设备/sdcard/目录下的test.txt内容
adb shell 'cat /sdcard/test.txt'
4、拉去设备端/sdcard/目录下的test.txt至当前目录
adb pull /sdcard/test.txt demo.txt
4. 截屏
对模拟器或者设备进行截屏,使用如下命令
举个栗子:
截取当前屏幕,并传回至当前目录,并浏览
Adb常用命令第一部分至此结束
二、APP相关操作
- 获取当前展示APP的页面名称
首先,在设备端打开要获取名称的页面。
然后,运行如下命令:
其中mCurrentFocus行里就包含当前展示app页面的包名与页面名称,格式:
app.pakcage.name/package.activity.name
- 开启与关闭app
(1)开启app
首先,需要获取可启动的activity名称。即在含有如下配置的activity:
如何获取上述信息,本文下面有详细说明
然后,通过am命令启动指定app
缺图
(2)强行关闭app
可以通过如下命令来强制关闭一个app
还是没有关闭怎么办,试试这个:
提示:学会这两个命令关闭运行中的monkey再也不用重启手机了。
- 获取app的activity信息
使用如下命令,可以再不反编译的情况下,获取测试关注的清单文件内的信息。如versionName,versionCode,activity配置,权限配置等。命令如下:
adb shell “dumpsys window | grep mCurrent”
文件内容概要说明如下:
一个activity信息片段的截取2
package相关信息片段的截取
三、系统信息相关操作
- 获取系统信息
如果你想获取设备主板的一些信息,可以通过adb shell命令getprop或cat命令读取/system/build.prop文件的方式获取。
getprop的例子如下:
cat /system/build.prop的例子如下:
从上述命令的输出结果,可以出看出我的测试设备是一款samsung的GT-I9500设备。
当然,该命令还可以进一步进行扩展,比如要测试OOM(OutOfMemory)专项的时候,必须获取vm设备数据。则可以通过如下命令:
我在这里推荐大家使用cat读取文件的方式,因其输出简洁规整,方便做进一步处理。
- 获取屏幕相关信息
(1)获取屏幕分辨率与dpi
记住这条命令,再也不用去百度手机型号查分辨率了。
(2)获取屏幕亮度相关设置
如果你的app提供了系统亮度设置相关的交互功能,这个时候你就需要用到如下方式解决。
1)屏幕超时时间设置获取
设置完超时时间后,不用去等真的超时锁屏,调用如下命令看下设置就好了:
2)屏幕亮度相关设置
屏幕亮度设置也是一样的,可以使用如下命令查看设置:
3)屏幕自动亮度开关设置
如果你设置的屏幕为自动亮度,那你需要用到这条命令查看:
APP性能测试
如果你要进行移动应用(APP)的性能测试,那么你就需要先了解并选取相应的性能测试指标,对于评估一个app的性能指标来说,通常会采用如下四个维度:
内存占用
CPU占用
流量消耗(上传、接收)
电量的消耗
本文将通过ADB命令对上述指标的获取方式进行简单操作说明。至于为什么用、怎么用、用来干什么,后续会发布相应文章进行说明。
下面就通过4个Adb的组合命令来获取:
- 获取应用占用的内存信息
其中,我们可以用Pss Total列、TOTAL行的数据作为当前APP内存占用的衡量数值。至于为什么用这个,后续会有专门的OOM(OutOfMemory)专项测试文章,里面会进行说明。
- 获取应用占用的CPU信息
其中,第一项数值可以用来作为衡量app对于设备CPU占用的衡量数值。
获取网络流量信息
- 获取系统电池电量信息
五、Android设备日志相关操作
- 清除设备端日志:
为什么要先写清除日志,因为大部分人不是不会获取log,而是获取了太多、太多的log。
如果你想不听到研发人员的咆哮,测试之前请运行如下命令进行历史日志清除。
- 查看日志:
1)查看全部日志
最简单的一条查看日志的命令,如下:
2)查看指定级别以上的日志
如果只想关注Error级别的log,可以试试如下命令:
优先级由第到高的顺序如下:
3)仅查看某个标记的日志
如果你只想关心默认标记的log,如只想看看Activity相关活动的日志,你可以试试如下命令:
注:必须先设定所有的为silent,在此基础上设置的tag过滤才成功。
-
dump日志:
对于测试人员日志看看也就看看了,最重要的是存到本地随bug一起提交。如果获取当前设备端的日志,你可以试试如下命令: -
界面化日志查看DDMS
DDMS全称:Dalvik Debug Monitor Service,它提供截屏,查看线程和堆的信息,logcat,进程,广播状态信息,模拟来电呼叫和短信,虚拟地理坐标等等。
启动后界面如下:
模拟用户操作
如果有一天,你需要实现一个超级简单的用户场景自动化,如在连续翻页1000次等,这个时候,你又不想引入复杂的框架与工具,那应该怎么办呢?我相信当你看完下面的两个adb操作命令说明,你已经知道该如何实现了。
-
获取用户操作事件日志
如果你想要捕捉用户操作,例如获取一次点击操作的屏幕坐标点,那么你需要使用下面的getevent命令: -
模拟获取用户操作
如果你想回放一些操作,那么你需要如下基础命令:
1)模拟点击操作:
模拟物理按键操作:
- 模拟滑动操作:
模拟输入文本信息:
网友评论