【移动端测试】ADB工具

16、adb工具

安装包在百度网盘-安装包-Android环境。

1、adb工作原理

adb包含了三个部分:

adb客户端:用来下发adb的指令工具

server客户端:adb.exe执行之后的进程,表示adb的服务端,通过服务端与手机上adb守护进程进行通信

adb守护进程:随之Android系统启动而启动,当Android系统关闭后关闭。

2、adb 连接

https://blog.csdn.net/weixin_43927138/article/details/90477966

连接方式有三种方法:

一、WiFi连接(手机与pc同一个局域网下)

与电脑在同一局域网内,Android设备连接WiFi,然后adb命令#adb connect <设备IP>

二、USB数据线连接

确保Android 设备的开发者选项和 USB 调试模式已开启:

「设置」-「开发者选项」-「Android 调试」查看。开发者选项,点允许usb调试,然后就可以连上电脑了cmd框键入#adb devices命令查看设备连接情况

三。· 无线连接(需要借助 USB 线)

除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接,一定范围内摆脱 USB 连接线的限制啦!

操作步骤:

将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。将设备与电脑通过 USB 线连接。

应确保连接成功(可运行 adb devices 看是否能列出该设备)。

让设备在 5555 端口监听 TCP/IP 连接:

开发者选项,点允许usb调试adb tcpip 5555找到设备的 IP 地址。一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到。

通过 IP 地址连接设备:命令框#adb connect 出现#connected to 192.168.31.109:5555,表示连接成功。

第一步:Android设备开启USB调试,并且通过USB线连接到电脑。

第二步:在终端执行以下命令”adb tcpip 5555“。

第三步:在终端执行以下命令”adb connect 192.168.1.110“(192.168.1.110为Android设备的IP地址)。此时拔出USB线,应该就可以adb通过wifi调试Android设备。

3、adb常用命令

* adb devices 查看手机设备ID名称及状态

如果出现offline,则需重启adb服务

* adb start-server  启动服务

* adb kill-server 关闭服务

4、获取包名和界面名

包名:每个APP都有唯一的 包名。通过包名来区分不同的APP。

界面名(启动名):相当于web页面中的链接地址,在APP中,每个界面都有一个名字。自动化中,需要通过两者来启动APP。

操作步骤:adb命令

在手机或者模拟器打开APP

linux/macos命令1 :adb shell dumpsys window windows | grep mFocusedApp 

linux/macos命令2:adb shell dumpsys window | grep “usedApp”

windows 命令1:adb shell dumpsys window windows | findstr mFocusedApp 

windows 命令2:adb shell dumpsys window | findstr “usedApp”

包名/界面名

* adb shell pm list packages:查看手机上应用的packageName

也可以通过aapt获取app的包名和界面名

5、安装卸载APP

* app安装: adb install <路径/app安装包名称>

* app卸载: adb uninstall <包名>

6、上传下载文件

* 上传 将电脑上的文件上传到手机:adb push <电脑上的文件路径> <手机的路径>

例:adb push ./monkey.txt /sdcard

* 下载 将手机上的文件下载到电脑: adb pull <手机的路径> <电脑的路径>

例: adb pull /sdcard/monkey.txt D:\opt

7、查看日志信息

为什么要获取日志信息:用来给开发定位问题

* adb logcat > log1.log:查看手机相关日志信息,并写入log1.log文件中。(运用>管道符写入文件,如果是>>则为追加)

8、测试app的启动速度(性能测试)

* 测试APP启动速度的命令:

adb shell am start -W 包名/界面名

先获取APP的包名/界面名,然后关闭应用进程。后执行上述命令,此时会打开APP,同时获取如图三个时间。

时间

需要关注TotalTime,一般多次测试,取平均值。

9、内存信息,内存泄漏

* 查看是否存在内存泄漏情况-堆空间没有被回收

adb shell dumpsys meminfo 包名

* 查看是否存在内存泄漏情况

adb shell dumpsys cpuinfo 包名

10、稳定性测试(8小时)

* monkey集成在adb工具中,主要做稳定性测试,monkey是通过java语言编写的一种稳定性测试工具,主要用来测试APP会不会出现crash(崩溃)的情况

相当于让一只猴子来随机操作APP,所有的操作都有可能出现,长时间操作来测试APP会不会出现问题。

—monkey常用参数

* -p参数 对指定app进行随机操作 (-p后为包名)

adb shell monkey -p com.baidu.homework 100 (100次随机事件)

* -v参数 表示记录信息的级别

    level 0:adb shell monkey -p com.baidu.homework -v 100 默认级别

    level 1:adb shell monkey -p com.baidu.homework -v -v 100 打印出来的信息比较详细,建议使用。

    level2:adb shell monkey -p com.baidu.homework -v -v -v 100 打印出来的信息会更多,会显示出其他程序运行的信息。

* -s参数 用于指定伪随机数。如果两次的伪随机数相同,那么两次操作步骤,流程,操作事件完全一样。主要作用,就是用来复现上次的问题。

例:adb shell monkey -p com.baidu.homework -v -s 10 100

* --throttle参数 用于指定随机事件的间隔时间,单位是毫秒。

例:adb shell monkey -p com.baidu.homework -v -v --throttle 3000 -s 10 100 

组合使用:

adb shell monkey -p com.baidu.homework --throttle 500 --pct--touch --pct-motion 50 -v -v -s 100 100 >log.log

--pct--touch 10 触摸(10表示整个随机事件中,触摸事件占比10%)

--pct--motion 50 滑屏(50表示整个随机事件中,滑屏事件占比50%)

–ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到crash或者timeout的情况时忽略掉,一般不设置,出现crash或者timeouts时,Monkey测试会终止。这里是防止Monkey测试终止

例:adb shell monkey -p com.baidu.homework -v -v -s 100 --throttle 500 –ignore-crashes --ignore-timeouts 1000 (包名及前部分固定,最后的次数固定,中间的可以调换位置)

level 1

日志分析:

# 如果在日志里面出现了ANR(application not responsing),说明程序出现了假死。

# 如果日志中出现了Exception,可能程序崩溃。

11、adb手势操作

—手势操作命令

    * 模拟点击事件: adb shell input tap x,y (x,y为坐标)

    * 模拟滑屏事件:adb shell input swipe startx,starty,endx,endy ((startx,starty)为起始点位置,(endx,endy)为终点位置)

    * 模拟键盘操作:adb shell input keyevent 键值 (3表示HOME键;4表示返回键;66表示回车键)

    * 模拟输入操作:adb shell input text 内容 (输入前需确保光标在输入框中;且输入内容不能为中文)

12、多个设备的注意点

* 如果出现offline的设备(如下图),记得重启adb服务;

* 如果电脑上面连接了多个模拟器或者手机,那么需要加上一个参数 -s device_name

如: adb -s emulator-5554 shell input keyevent4

12、logcat

学自:https://blog.csdn.net/weixin_35825766/article/details/79855956

1、logcat命令格式:

[adb] logcat [

PC端使用:

adb logcat

shell模式下使用:

logcat

logcat参数说明

举例

2、logcat缓冲区

android log输出量巨大,特别是通信系统的log,因此,android把log输出到不同的缓冲区中,目前定义了四个log缓冲区:

1)Radio:输出通信系统的log

2)System:输出系统组件的log

3)Event:输出event模块的log

4)Main:所有java层的log,遗迹不属于上面3层的log

获取缓冲区命令:-b 

如:adb logcat –b radio

adb logcat –b system

3、logcat格式化输出

日志消息包含一个元数据字段,除了标签和优先级,您可以修改输出显示一个特定的元数据字段格式的消息。为此,您使用-v选项来指定一个支持的输出格式。一下为支持的格式:

当logcat开始,指定想要输出格式-v选项:

[adb] logcat [-v ]

adb logcat –v thread

只能指定一个输出格式-v

4、logcat优先级

优先级使用字符标识,以下优先级从低到高

V –Verbose(最低优先级)

D – Debug

I – Info

W – Warning

E – Error

F – Fatal

S – Silent

为了减少不想要日志的输出,可以建立一个过滤器

过滤语法:tag:priority

//过滤TAG为ActivityManager输出级别大于I的日志与TAG为MyApp输出级别大于D的日志

adb logcat ActivityManager:I My App:D *:S

adb logcat *:W

//设置过滤级别为W以上

如果用的比较多可以设置环境变量:

export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D*:S"

5、显示时间

adb logcat -v time -s appname:E>d:/1.log

-v 显示日志格式  -v time 以时间为显示格式

-s 默认过滤,不显示默认tag。系统把tag的默认过滤级别是设置为Verbos,tag需要显示。如果设置-S等同于*:V

appname:E 显示appname操作中优先级大于等于“error”的日志

你可能感兴趣的:(【移动端测试】ADB工具)