概述

这是一个基于 的 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

总结

这个框架是一个混合型自动化测试框架,主要特点:

  1. 以 ADB 为核心- 所有平台都使用 ADB 作为主要通信工具
  2. UI 自动化- 使用 UIAutomator2 处理 Android UI 交互
  3. 多媒体测试- 使用 GStreamer 进行相机和视频测试
  4. 硬件控制- 使用 Alpaca TAC 进行硬件级别控制
  5. 跨平台支持- 支持 Linux Embedded、Ubuntu、Android Wear 等多个平台

适用场景: IoT 设备、嵌入式系统、 设备的自动化测试,特别是高通芯片平台。


原文链接: IoTAutomationFramework_2.0 安卓测试自动化工具 作者: lixusocool