概述
这是一个基于 的 IoT 设备自动化测试框架,主要用于测试高通(Qualcomm)芯片平台的设备。
核心
1. ADB (Android Debug Bridge) ⭐⭐⭐⭐⭐
主要工具,使用最广泛
- 位置:
Libs/Utilities/adb.py - 用途:
- 设备连接和通信
- 执行 shell 命令
- 文件传输(push/pull)
- 设备重启
- 日志收集
- 使用示例:
from Libs.Utilities.adb import adb
# 执行命令
adb.run_cmd("adb shell ls /data", serial_number)
# 推送文件
adb.push(local_path, remote_path, serial_number)
# 拉取文件
adb.pull(remote_path, local_path, serial_number)
# 重启设备
adb.run_cmd("adb reboot", serial_number)
- 特点:
- 支持多设备(通过 serial_number 区分)
- 支持 ADB over WiFi
- 自动日志记录(发送和接收的命令)
2. UIAutomator2 ⭐⭐⭐⭐
UI 自动化工具
- 库:
uiautomator2(简称 u2) - 用途:
- Android UI 元素定位和操作
- 点击、滑动、输入等交互
- 截图和屏幕录制
- 应用启动和管理
- 使用示例:
import uiautomator2 as u2
# 连接设备
d = u2.connect(serial_number)
# 点击按钮
d(resourceId="com.example:id/button").click()
# 输入文本
d(resourceId="com.example:id/edit").set_text("Hello")
# 检查元素是否存在
if d(text="Settings").exists:
d(text="Settings").click()
# 滑动
d.swipe(100, 500, 100, 100)
- 应用场景:
- LAW (Linux Android Wear) 平台测试
- UI 交互测试
- 设置配置
- 弹窗处理
3. SSH ⭐⭐⭐
远程连接工具
- 位置:
Libs/Utilities/SSH/SSH.py - 用途:
- Linux 设备远程连接
- 执行 shell 命令
- 文件传输
- 使用场景:
- LE (Linux Embedded) 平台
- LU (Linux Ubuntu) 平台
- 需要 SSH 访问的设备
4. Alpaca TAC ⭐⭐
硬件控制工具
- 库:
alpaca.tac - 用途:
- 硬件电源控制
- 设备重启(硬件级别)
- USB 切换
- 使用示例:
import alpaca.tac
# 探测设备
ports = alpaca.tac.ProbeForDevices()
# 电源控制
# 用于硬件级别的设备控制
5. GStreamer ⭐⭐⭐⭐
多媒体处理工具
- 用途:
- 相机预览和录制
- 视频编码/解码
- 音频处理
- 多媒体管道测试
- 使用示例(通过 ADB 执行):
# 相机预览
gst-launch-1.0 qtiqmmfsrc camera=0 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! waylandsink
# 视频录制
gst-launch-1.0 qtiqmmfsrc camera=0 ! video/x-raw(memory:GBM),format=NV12 ! qtic2venc ! h264parse ! mp4mux ! filesink location=/data/video.mp4
- 配置文件:
Plan/*/Config/Camera/TestCommands/*.json
辅助工具和库
6. 其他 Python 库
日志和监控
- logging- Python 标准日志库
- threading- 多线程支持
- subprocess- 进程管理
数据处理
- json- JSON 配置文件解析
- xml.etree.ElementTree- XML 配置解析
- re- 正则表达式
网络和通信
- requests- HTTP 请求(结果上传)
- socket- 网络通信
- serial- 串口通信(调试 UART)
可视化
- matplotlib- 数据可视化
- Chart.js- HTML 报告图表(前端)
硬件接口
- TACDev- TAC 设备驱动
- win32api/win32con- Windows API(文件属性等)
测试框架架构
IoTAutomationFramework_2.0/
├── TestEntrance.py # 测试入口
├── Libs/
│ ├── Utilities/
│ │ ├── adb.py # ADB 封装
│ │ ├── SSH/ # SSH 工具
│ │ └── Utility.py # 通用工具
│ ├── Tests/
│ │ ├── BaseTestCase.py # 测试基类
│ │ └── TestProcedure.py # 测试流程
│ └── LogCatcher/ # 日志收集
├── Case/
│ └── Products/ # 产品测试用例
│ ├── QCS8550_LE_1_0/
│ ├── QRB5165_UBUN_2_0/
│ └── ...
└── Plan/ # 测试计划和配置
├── LE/ # Linux Embedded
├── LU/ # Linux Ubuntu
└── LAW/ # Linux Android Wear
支持的平台
1. LE (Linux Embedded)
- 工具: ADB + SSH + GStreamer
- 芯片: QCS8550, QCS615, QCM6490 等
- 特点: 嵌入式 Linux 系统
2. LU (Linux Ubuntu)
- 工具: ADB + SSH + GStreamer
- 芯片: QRB5165 等
- 特点: Ubuntu 系统
3. LAW (Linux Android Wear)
- 工具: ADB + UIAutomator2
- 芯片: SW5100, SW6100, SDM429W 等
- 特点: Android Wear 系统,需要 UI 自动化
4. LA (Linux Android)
- 工具: ADB + UIAutomator2
- 芯片: QCS8245, QCS610 等
- 特点: Android 系统
测试类型
1. Stability 测试
- Reboot 测试
- Suspend/Resume 测试
- 长时间运行测试
2. 功能测试
- Camera 测试(预览、录制、快照)
- Audio 测试(播放、录制)
- Video 测试(编解码)
- Connectivity 测试(WiFi、BT)
- Sensor 测试(IMU、GPS)
3. 性能测试
- CPU/Memory 压力测试
- 并发测试
- AI/ML 模型测试
4. 并发测试
- 多摄像头并发
- WiFi + Audio + Camera + ML 并发
关键特性
1. 多设备支持
- 通过 serial_number 区分设备
- 支持 ADB over WiFi
- 支持 USB 和网络连接
2. 灵活的测试策略
- Random - 随机执行测试用例
- Sequence - 顺序执行
- Iteration - 迭代执行指定次数
3. 完善的日志系统
- 自动收集 logcat
- 自动收集 kernel log (kmsg)
- 自动收集 tombstone/coredump
- 生成 HTML 测试报告
4. 后台测试支持
- CPU/DDR 压力测试
- 并发测试
- 长时间稳定性测试
依赖安装
# 核心依赖
pip install uiautomator2
pip install requests
# 可选依赖
pip install matplotlib
pip install alpaca-tac # 如果使用 Alpaca 硬件
# ADB 需要单独安装
# 下载 Android Platform Tools
# 添加到系统 PATH
总结
这个框架是一个混合型自动化测试框架,主要特点:
- 以 ADB 为核心- 所有平台都使用 ADB 作为主要通信工具
- UI 自动化- 使用 UIAutomator2 处理 Android UI 交互
- 多媒体测试- 使用 GStreamer 进行相机和视频测试
- 硬件控制- 使用 Alpaca TAC 进行硬件级别控制
- 跨平台支持- 支持 Linux Embedded、Ubuntu、Android Wear 等多个平台
适用场景: IoT 设备、嵌入式系统、 设备的自动化测试,特别是高通芯片平台。
原文链接: IoTAutomationFramework_2.0 安卓测试自动化工具 作者: lixusocool