巧用ADB命令解决实际工作问题_adb指令执行复杂操作

70 阅读6分钟

img img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

了解详情》docs.qq.com/doc/DSlVlZExWQ0FRSE9H

图片

02 ADB Monkey运用

ADB Monkey是一个在手机模拟器或真机运行的程序,可生成伪随机用户事件(例如点击、轻触)流以及很多系统级事件。一般我们会用来做稳定性测试以及压力测试。

下面是一张Monkey命令的参数列表供我们工作时参考。

2Monkey命令参数表

参数说明
-p表示指定测试的程序,空格后面跟安装包名字
-v表示查看monkey执行过程的信息 (即日志级别,-v越多越详细,最多三个
数字100表示测试事件数为100

ADB Monkey命令使用示例,如下:

Ø 指定一个包,测试100个事件并查看最详细的日志

ADB shell monkey  -p  com.tencent.news  -v -v -v  100

Ø 指定多个包, 测试1000个事件并查看级别1的日志

ADB shell monkey -p com.tencent.news -p com.pdfreader -p com.widgets  -v 1000

Ø 不指定包, 测试1000个事件 

ADB shell monkey -v 1000

Ø 通过测试APP安装包,来随机测试一下将要发布的版本是否健壮

执行命令:

ADB shell monkey -p com.***.test -v -v -v 10

图片

 图3

对预测试的安卓app包进行稳定性测试,前提是手机通过数据线连接电脑,

接着先执行ADB shell pm list package命令,可以得到测试的程序包名,

再执行上面提到的adb monkey命令,

-p后面跟着测试的程序,-v表示日志,数字10表示要执行的测试次数。

从测试结果看,在switch后面查看有没有存在奔溃或其他异常,建议方法如下:

Ø 程序无响应,ANR问题:在日志中搜索“ANR”

Ø 崩溃问题:在日志中搜索“CRASH”

Ø 其他问题:在日志中搜索”Exception”

没有以上异常,则本次稳定性测试无异常。

在使用ADB命令时也会出现一些问题,大家可以注意一下。比如数据线,手机连接电脑的线必须是数据线,充电线连接不稳定,造成的现象是adb devices命令执行后没有出现手机序列号信息。再比如安卓手机端市场多样,有华为、小米、过时的三星、oppo、vivo,测试机型的手机助手不一,华为需要安装华为手机助手,这些都有利于提高连接电脑执行adb命令的稳定性。

在执行adb命令之前,我们记得打开设置里的开发者工具。具体步骤是,找到设置-关于手机-版本号,连续点击几次,打开开发者模式,即可看到设置里新增里开发人员选项。我们要打开USB调试,这样就可以正常进行手机与电脑的adb通信了。

03 ADB原理

ADB即Android 调试桥,是一种功能多样的命令行工具,可与设备进行通信。ADB 命令可用于执行各种设备操作,例如安装和调试应用,并提供对 Unix shell(用来在设备上运行各种命令)的访问权限。

它是一种客户端-服务器程序,包括以下三个组件:

Ø 客户端:用于发送命令。客户端在计算机上运行,可以通过发出 ADB 命令从命令行终端调用客户端。

Ø 守护程序 (ADBd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。

Ø 服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。ADB 包含在 Android SDK 平台工具软件包中。可以使用 SDK 管理器下载此软件包,该管理器会将它安装在 android_sdk/platform-tools/ 下。

当启动某个 ADB 客户端时,该客户端会先检查是否有 ADB 服务器进程正在运行。如果没有,它会启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 ADB 客户端发出的命令。所有ADB客户端均通过端口5037与ADB服务器通信。然后,服务器会与所有正在运行的设备建立连接。它通过扫描奇数号端口查找模拟器。服务器一旦发现 ADB 守护程序 (ADBd),便会与相应的端口建立连接。

每个模拟器都使用一对按顺序排列的端口,用于控制台连接的偶数号端口和用于 ADB 连接的奇数号端口。比如:

手机1,控制台:5554

手机1,ADB:5555

手机2,控制台:5556

手机2,ADB:5557

如上所示,在端口 5555 处与 ADB 连接的模拟器与控制台监听端口为 5554 的手机是同一个。

服务器与所有设备均建立连接后,可以使用ADB命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个ADB客户端的命令,因此可以从任意客户端(或从某个脚本)控制任意设备。

结尾:

ADB命令为我们与真机通信建立了一个可视化桥梁。在工作中还会涉及其他命令方面的巧用,欢迎大家实践后一起交流分享。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取**【保证100%免费】**在这里插入图片描述

img img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

开源项目:docs.qq.com/doc/DSlVlZExWQ0FRSE9H