【移动端测试】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 <ip>出现#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 [<option>] … [<filter – spec>] …

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 <format>]

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”的日志

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 1、什么是ADB ADB是Android-Sdk里的一个客户端-服务器端程序,其中客户端是我们操作的电脑, 服务...
    远航天下阅读 3,381评论 0 6
  • 一、什么是ADB ADB是Android-Sdk里的一个客户端-服务器端程序,其中客户端是我们操作的电脑, 服务器...
    常思行阅读 4,604评论 0 12
  • 1. 手机测试概念 传统手机测试 VS 手机应用软件测试 传统手机测试 传统的手机测试,我们说的是指测试手机本...
    连猫都嫌弃我阅读 466评论 0 0
  • 一、 手机测试概念 传统手机测试 VS 手机应用软件测试 传统手机测试:指测试手机本身比如抗压,抗摔,抗疲劳,抗低...
    Anwfly阅读 1,145评论 0 5
  • 1.手机测试概念 传统手机测试VS 手机应用软件测试 传统手机测试 传统的手机测试,我们说的是指测试手机本身比如抗...
    969f13eda4ec阅读 1,135评论 0 0