第3章 前置条件确认
在执行 Mock BLE 设备数据快照回归之前,必须确认硬件、软件、工具和权限等前置条件均已满足。本章列出所有必要依赖,并提供检查流程与验收标准,确保环境一致性,避免因基础配置差异导致回归结果偏差。
适用场景
本确认流程适用于以下场景:
- 首次搭建 Mock BLE 设备测试环境
- 更换测试主机或 BLE 硬件(如 USB 蓝牙适配器、模拟器固件升级)
- 快照回归基线版本变更(如 SDK 升级、系统固件更新)
- 跨团队协作时统一环境基准
前置条件
硬件依赖
| 硬件项 | 规格要求 | 备注 |
| BLE 模拟器 / 真实设备 | 支持 BLE 4.2 及以上,可响应广播与连接 | 推荐使用 nRF52840 Dongle 或同类 |
| 测试主机 | CPU ≥ 4 核,RAM ≥ 8 GB,支持 USB 3.0 | Windows / Linux / macOS 均可 |
| USB 蓝牙适配器(可选) | CSR 或 Broadcom 芯片,支持 BLE | 仅主机未内置 BLE 时使用 |
| 逻辑分析仪(调试用) | 采样率 ≥ 1 MHz | 非强制,用于波形异常时定位 |
软件环境
| 软件 / 工具 | 版本要求 | 安装方式 |
| Python | ≥ 3.8,≤ 3.11 | 官方安装包 / pyenv |
| BlueZ (Linux) | ≥ 5.50 | apt / yum / 源码编译 |
| Windows BLE SDK | Windows 10 v1809+ 内置 | 启用开发人员模式 |
| nRF Connect / Wireshark | 最新稳定版 | 官方安装包 |
| Mock 数据生成器 | 版本号与快照基线一致 | Git 仓库 / 容器镜像 |
工具清单
| 工具名称 | 用途 | 来源 |
| bluetoothctl | 扫描并验证 BLE 设备可达性 | 系统内置 / BlueZ 套件 |
| hcitool | 查看 HCI 接口状态 | BlueZ 套件 |
| gatttool | 手动读写 BLE 属性 | BlueZ 套件 |
| tcpdump / btmon | 抓取 BLE 空口包 | 系统内置 / BlueZ |
| pytest(Python) | 执行回归用例 | pip install pytest |
权限准备
- Linux:用户需属于
bluetooth 组,或具备 sudo 权限执行蓝牙扫描。
- Windows:需要管理员权限安装 BLE 虚拟设备驱动。
- macOS:需在“安全性与隐私”中启用蓝牙权限,并授权终端访问。
- 仓库访问:具备 Mock 数据生成器源码或镜像拉取权限。
- 日志目录:测试用户对
/var/log/ble_regression(Linux)或 %TEMP%\ble_regression(Windows)有写入权限。
操作步骤
- 硬件连接
将 BLE 模拟器通过 USB 接入测试主机,确认主机识别设备(Linux: lsusb / Windows: 设备管理器查看“蓝牙”)。
- 软件版本验证
执行版本检查命令,确保满足上述表格要求:
python --version
bluetoothctl --version
hcitool --version
gatttool --help 2>&1 | head -1
- 工具可用性测试
运行 bluetoothctl scan on 并观察是否能发现附近的 BLE 设备(包括模拟器)。
- 权限验证
尝试创建日志目录并写入文件:
mkdir -p /var/log/ble_regression
echo "precheck ok" > /var/log/ble_regression/precheck.log
cat /var/log/ble_regression/precheck.log
- 记录检查结果
将每一步的输出填入下方记录材料中的检查清单。
输入输出物
| 类型 | 内容 | 来源 / 去向 |
| 输入 | Mock BLE 设备型号、固件版本、SDK 配置文档 | 产品 / 开发团队提供 |
| 输入 | 前置条件检查清单模板 | 本课程配套资源 |
| 输出 | 前置条件检查报告(含版本号、通过/失败状态、异常记录) | 测试工程师归档,作为回归基线附件 |
责任边界
- 测试工程师:负责搭建并验证硬件/软件/工具环境,填写检查清单;若环境不达标,返回开发或运维团队整改。
- 系统管理员 / DevOps:负责提供权限、安装系统级依赖(如 BlueZ、驱动)。
- QA 主管:审批前置条件检查报告,确认环境就绪后进入回归执行阶段。
记录材料
| 检查项 | 预期结果 | 实际值 | 状态 |
| BLE 设备已连接 | lsusb 显示设备 VID/PID | | |
| Python 版本 | ≥ 3.8 | | |
| BlueZ 版本 | ≥ 5.50 | | |
| 蓝牙扫描可用 | 设备被发现有广播 | | |
| 日志写入权限 | 文件写入成功 | | |
预检日志示例(可以保存为 precheck.log):
2025-02-18 10:32:15 [INFO] Python 3.9.12 (checked)
2025-02-18 10:32:16 [INFO] BlueZ 5.55 (checked)
2025-02-18 10:32:18 [INFO] BLE simulator detected at /dev/ttyACM0
2025-02-18 10:32:20 [INFO] bluetoothctl scan discovered device EA:12:34:56:78:9A
2025-02-18 10:32:22 [INFO] Log directory writable: /var/log/ble_regression
异常处理
常见异常场景
- BLE 模拟器未识别:检查 USB 线缆、更换端口;Linux 下运行
dmesg | tail -20 查看驱动加载情况;若为 nRF52840 Dongle,需刷写 nrf-ble-driver 固件。
- Python 版本不满足:使用
pyenv 安装符合版本要求的 Python,或通过 Docker 镜像隔离。
- 蓝牙扫描无响应:确认主机蓝牙已开启(
rfkill unblock bluetooth / Windows 蓝牙开关)。
- 日志写入权限拒绝:将用户加入
bluetooth 组或修改日志目录权限:sudo chmod 777 /var/log/ble_regression(临时方案)。
- 权限不足无法安装工具:申请 sudo 或联系管理员;Windows 使用 chocolatey / winget 避免手动安装错误。
验收标准
- 所有检查项状态均为“通过”。
- 预检日志无报错条目。
- 前置条件检查报告已归档至本次回归目录。
- 测试工程师与 QA 主管双签确认。