Android设备早已不只是手机本身,用户日常会接入各种外设:有线耳机、USB键盘鼠标、U盘、扩展坞、游戏手柄、蓝牙音箱等等。这些Peripherals外设一旦出现识别失败、功能异常或者兼容性问题,用户的第一反应往往是设备坏了,而不是外设的问题。因此Android Peripherals外设测试在整机测试、系统开发和外设适配中占有重要位置。本文将从外设类型、测试环境搭建、功能测试、异常场景测试和常用命令工具几个方面,系统讲解如何做好Android外设测试。

一、Android常见外设类型及其工作原理
要做好外设测试,首先要清楚Android支持哪些外设类别,以及它们走的是哪条数据通路。不同的通路决定了测试方法和排查思路的差异。
第一类是USB外设,包括USB存储设备(U盘、移动硬盘)、USB HID设备(键盘、鼠标、手柄)、USB音频设备(声卡、DAC)、USB网络设备(USB网卡、RNDIS)以及通过OTG连接的各种配件。这类设备通过USB Host或USB Accessory模式与Android通信,识别流程涉及内核驱动、USB HAL以及Framework层的UsbManager服务。
第二类是蓝牙外设,包括蓝牙耳机、蓝牙音箱、蓝牙键盘鼠标、BLE设备如手环和智能秤。蓝牙设备的测试重点在配对、连接稳定性、音频延迟以及多设备切换。第三类是音频外设,包括3.5mm有线耳机(如果设备还保留)和Type-C模拟/数字音频。Type-C音频涉及模拟直通和USB Audio两种模式,测试时必须区分对待。
可以通过以下命令查看当前系统识别到的USB设备列表:
adb shell cat /sys/kernel/debug/usb/devices adb shell dumpsys usb
其中dumpsys usb能够输出当前USB模式、已连接设备、授权状态等信息,是排查USB外设问题的第一步。对于蓝牙设备,则可以使用dumpsys bluetooth_manager查看连接状态和协议栈日志。
二、测试环境搭建与基本功能测试
搭建测试环境时,建议准备一个外设矩阵表,把需要覆盖的外设型号、接口类型、系统版本对应关系列清楚。同一种外设类别尽量选两到三个不同芯片方案的设备,比如U盘测试准备一个主控为群联的和一个主控为鑫创的,这样才能暴露出驱动层面的兼容性差异。
USB存储设备的基本测试包括:插入后能否正确挂载、通知栏是否弹出提示、文件管理器能否读写文件、大文件拷贝速度是否正常、热插拔一百次是否稳定、拔出时未卸载是否会损坏文件系统。HID设备的基本测试包括:键盘按键是否正常输入、多媒体键(音量、播放暂停)是否生效、鼠标指针是否平滑、手柄按键映射是否正确,可以使用getevent命令确认输入事件是否上报:
adb shell getevent -lt /dev/input/event3
蓝牙外设的功能测试除了配对连接、断开重连外,还需要覆盖来电时音频通路的切换、多蓝牙设备共存(耳机和手环同时连接)、以及息屏后BLE连接的保活情况。音频类外设则要验证声道是否正确、采样率切换是否生效、插入拔出时音频路由切换是否有延迟或爆音。
每一项基本功能都建议形成用例文档,记录测试步骤、预期结果和实际结果。外设测试看起来琐碎,但恰恰是这些细节场景最容易在用户侧被投诉。
三、异常场景与稳定性测试
基本功能通过只是及格线,外设测试的核心价值在于异常场景。首先要覆盖热插拔压力测试:在设备休眠、亮屏、播放视频、传输文件等不同状态下反复插拔外设,观察是否出现识别失败、系统重启或ANR。一般建议单外设热插拔不少于500次,可以借助继电器或可编程USB切换器做自动化。
其次是异常断电和劣质线缆场景。用户手里的数据线质量参差不齐,测试时要准备几根接触不良的线、加长的OTG线、以及带PD快润的扩展坞,验证在供电不足时外设是否会掉线。可以通过内核日志监控USB错误:
adb shell dmesg | grep -i usb adb logcat -b kernel | grep -iE "usb|disconnect"
第三是并发场景:多个外设同时接入扩展坞,比如U盘、键鼠、网卡同时工作,验证供电和带宽是否够用;蓝牙和WiFi共存时的干扰情况;外设连接状态下系统升级、重启后是否能自动恢复。还有一个容易被忽略的场景是权限流程:USB设备首次接入时的授权弹窗,用户拒绝后外设功能是否正确禁用,授权后重启权限是否保留。
稳定性测试建议持续至少48小时,让外设保持在连接工作状态,期间定期采集内存和CPU占用,检查UsbManager、bluetooth进程是否存在内存泄漏。长时间运行后蓝牙出现卡顿、USB设备掉线这类问题,往往只有长时间测试才能复现。
四、常用测试命令与自动化思路
除了前面提到的命令,再补充几个高频使用的排查工具。lsusb(部分设备支持)可以列出USB设备的VID和PID;dumpsys audio用于确认音频设备路由状态;dumpsys input可以查看输入设备列表和HID设备属性。这些命令组合起来,基本可以定位外设是没被内核识别、没被Framework接管,还是应用层调用失败。
自动化方面,可以使用adb脚本控制蓝牙开关和配对状态,用uiautomator或Appium编写外设功能的回归用例,用Android CTS中USB和Bluetooth相关的测试集做兼容性验证。对于手机厂商或方案商,还可以搭建带USB切换矩阵和机械臂的自动化台架,实现全流程无人值守测试。下面是一个简单的adb脚本示例,用于循环采集蓝牙状态:
#!/bin/bash
# 每10秒采集一次蓝牙连接状态并写入日志
while true
do
echo "==== $(date) ====" >> bt_log.txt
adb shell dumpsys bluetooth_manager | grep -i "state" >> bt_log.txt
sleep 10
done
总的来说,Android Peripherals外设测试是一项覆盖面广、细节多的系统工程。测试人员需要理解不同外设的通信原理,建立完善的外设矩阵和用例库,把功能、兼容性、异常和稳定性几个维度都跑到位,才能保证设备在真实用户手中接入各种外设时都有稳定可靠的表现。
Android外设测试PeripheralsUSB调试修改时间:2026-09-14 09:36:53