IoTAutomationFramework_2.0 使用的自动化工具
概述
这是一个基于 Python 的 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 设备、嵌入式系统、Android 设备的自动化测试,特别是高通芯片平台。