9.4 APP测试工具
因为手机的局限性给测试带来了很多不便,所以在APP的测试相对Web测试更关注是一些工具的使用,介绍一下Android手机测试工具的使用。
Android系统主要的目录描述,详见表9-1

9.4.1 ADB 工具介绍
ADB(Android Debug Bridge的缩写)是Android SDK里面一个多用途调试工具,可以通过ADB来管理设备或模拟器的状态。ADB工具由3个组成部分;
1)在计算机上运行的客户端。PC端主要通过客户端与模拟器或设备通信。
2)在计算机上作为后台进程运行的服务器。负责管理客户端与模拟器或设备上的adbd进程间的通信。
3)守护进程adb以后台进程的形式运行于模拟器或设备上。
当启动一个ADB客户端,客户端首先确认是否有一个ADB服务器进程运行。如果没有进程,则启动服务器进程。当ADB服务器运行,就会绑定本地的TCP端口5037,并监听ADB客户端发来的命令。接着服务器将所有运行中的模拟器或设备实例建立连接。它会扫描所有5554~5584之间的端口来定位所有模拟器或设备。一旦服务器与所有模拟器实例建立连接,可以使用ADB命令控制和访问该设备。发送命令的一般格式:adb-s设备命令(通过命令adb devices 可获取设备名)
使用ADB主要可以完成以下功能:
1)可以快速更新设备或模拟器上的软件;
2)可以在设备或模拟器上运行shell命令
3)可以同步设备或模拟器上的文件、即上传、下载文件;
4)可以实时抓取APP运行时的Log信息。
2、ADB工具安装过程(略过)
3、ADB 基本命令介绍
(1)adb device
adb device:查询连接的设备或模拟器,使用adb前需要先查询adb是否跟设备或模拟器连接上。在命令提示窗口输入命令:adb device按(Enter)键,运行命令后,出现如下信息表示连接到设备,如图9-4所示。

命令adb device 运行后有3种状态,如下:
device:表示找到设备并与adb连接上
no device:表示当前没有模拟器在运行,或没有找到任何设备
offline:表示设备或模拟器没有与adb相连或没有响应
如果出现多个device时,说明当前有多个设备或模拟器在运行。此时使用adb时,需要用-s指定一个目标设备。命令格式如下:
adb-s 目标设备名命令
(2) adb install
adb install:用来向设备安装软件。命令格式如下:adb install[ption]<path>
如:adb install D:\TensonCourse.apk运行命令后出现Success,表示成功安装到设备或模拟器上。
(3)adb uninstall
adb uninstall:用来卸载设备上的软件。命名格式如下:adb uninstall[option]<package>
(4)adb pull
adb pull:将设备或模拟器中文件复制到PC端。命令格式如下:adb pull<remote><local>
如:adb pull init.rc命令,表示设备上的init.rc文件复制到本地的当前目录(init.rc表示设备中的文件,.表示PC端当前的目录)
(5)adb push
adb push:将PC端文件复制到设备或模拟器中。命令格式如下:adb push <local><remote>
如:adb push D:\tenson.txt/sdcard/命令,表示将文件复制到设备/sdcard/目录下。
(6) adb logcat
adb logcat:用来抓取log信息进行跟踪Bug跟踪。命令格式如下:
adb logcat[option][filter-spec]
logcat命令选项详见表9-2,具体用法如下:

adb logcat,表示实时抓取整个手机的log信息并在命令提示窗口输入信息。
adb logcat>D:\log.txt,将实时抓取log信息并保存到本地log.txt文件。
adb logcat-v time>D:\log.txt,获取的log.txt文件中加上时间信息。
adb logcat-b radio>D:\log.txt,获取网络射频信息。
adb logcat-b events>D:\log.txt,获取事件消息
adb logcat-v time-b main-b radio-b system>logcat.txt常用,获取log信息加上时间信息,主要显示缓冲区以及电话和系统相关的日志。
logcat命令过滤详见表9-3

此外adb logcat可以用来过滤设置过滤内容,还可以结合匹配正则表达过滤内容。
注:当应用或系统出现重启或奔溃异常后抓取log
adb bugreport获取bugreport信息。bugreport记录android启动过程的 log,以及启动后的系统状态,包括进程列表、内存信息、VM信息等。
adb shell dumpsys dropbox-print获取dropbox信息。记录出现过的异常等信息,用于分析crash、重启等。
adb pull/data/anr/获取anr信息,系统或应用响应时抓取信息文件。
(7)adb shell
提供了shell 终端,通过shell终端可以在模拟器或设备上运行各种命令,这些命令是linux shell的一个子集。可以通过adb shell命令来使用这些命令,比如:adb shell ls,,也可以先用命令:adb shell进入设备或模拟器的shell终端,再使用相应的命令。当设备在shell状态下,可以用exit来退出shell终端。
adb shell dumpsys battery
功能:查看电池电量的相关信息。输入这条命令后,出现图9-5所示。

在图9-5中,显示内容说明如下:
AC powered:true 表示电源供电
USB powered:true:表示使用usb供电
status:5表示电池电量是满的,总共5个等级
health:2电池健康状态,有6个值,分别是0和1表示未知状态,2表示良好,3表示过热,4表示损坏,5表示过压。
present:true表示手机上有电池
level:100表示电池剩余电量是100%
scale:100表示电池电量最大值是100%
voltage:3800表示当前电池电压值,正常范围应该在4350内
voltage:3800表示当前电池温度值,300表示30度,范围一般在300~380之间。
technology:li-ion为电池技术标准,Li-ion表示锂电池。
adb shell dumpsys wifi 功能:查看WIFI 网络信息。内容的含义:wi-fi is enabled,表示wifi处于连接状态,共有5种状态;
disabled:关闭, disabling:正在关闭 enabled:已连接 enabling: 正在启动。unknown:未知状态 Internal state:包含WIFI设备名、状态IP地址,MAC地址,网络加密方式等信息。
adb shell dumpsys power :功能 参考电源管理相关信息。内容显示信息包括ower Manager State
Settings and Configuration,UID states Wireless Charger DetectorState等信息。
如果想单独看某个信息,可以加上find命令来查找。比如查看屏幕关闭时间,需要查找“mScreen OffTimeout Setting"值,命令如下:adb shell dumpsys power find "mScreen OffTimeout setting"得到如下结果,60000表示60s,就是1min
adb shell dumpsys cpuinfo 功能:查看CPU的动态占用率,按CPU的使用率可以从大到小排列
命令:adb shell top-m5- n 10-s cpu也可以参考CPU占用率,运行后显示图9-6所示。

参数说明:
-m:显示进程数量
-n:数据的刷新次数
-s:按说明方式排序
-d:刷新时间间隔,默认5s
adb shell dumpstate 功能:查看系统当前状态的信息。信息内容包括:系统构建版本信息、
网络相关信息、内核相关信息、运行时间信息、内存使用情况、CPU使用情况、进程相关信息等。
注:显示信息非常多,为了方便查看,最后重定向导一个文件里面。
adb shell dmesg 功能:查看内核日志信息
adb shell df 功能:查看手机系统各个区分信息
adb shell getprop gsm.network.type 功能:获取手机网络类型信息
adb shell getprop ro.build.version.release 功能:获取手机系统版本信息
adb shell cat/proc/cpuinfo功能:查看内存相关信息。其中memtotal 表示总运行内存,MemFree表示剩余内存。
adb shell cat/proc/version 功能:获取设备内核版本信息
adb shell cat/proc/net/xt qtaguid/stats 功能:查看手机流量数据。内容信息比较多,每一行表示每次获得的流量信息,包括发送与接收的数据,重点关注:第四列表示UID(应用运行的用户ID),第六列表示接收的数据量,第八列表示发送的数据量。
(8)adb 其他命令详解
adb get-serialno 功能:获取设备的序列号
adb get state,功能:查看设备或模拟器的当前状态,其中device表示已连接
adb statt-server,功能:关闭adb服务器,当abd状态不稳定,可用关闭adb
adb shell am(Activity Manager)功能:模拟一些操作设备动作
adb shell pm(package manager)功能:查询设备上的应用
总述adb命令比较多,记住常用的命令即可。