第4章 快照类型分类:状态快照、数据快照、事件快照、时序快照
适用场景
在 Mock BLE 设备数据准备过程中,快照类型决定了回归验证的覆盖粒度。本章适用于以下场景:
- 状态快照:验证设备在特定时刻的稳定状态(如连接态、广播态、休眠态)。
- 数据快照:捕获设备特征值的完整副本,用于比对数据一致性。
- 事件快照:记录设备触发的事件序列(如断连、配对、OTA 开始/结束),用于回归事件处理逻辑。
- 时序快照:按时间维度采集连续数据点,观察趋势或抖动。
前置条件
- 已完成 Mock BLE 设备基础配置(设备地址、广播间隔、特征表)。
- 已搭建快照存储服务(本地文件或数据库目录)。
- 回归用例已明确需要采集的快照类型组合。
操作步骤
- 确定快照类型矩阵:根据回归用例输出“快照类型-用例”映射表。
- 配置快照触发钩子:在 Mock 设备配置文件中定义各类型触发条件(见下方示例)。
- 执行回归测试:按用例操作设备,自动化采集所有触发的快照。
- 标记与归档:为每个快照文件添加类型标签、时间戳和回归批次号。
- 生成快照目录索引:输出 JSON 索引清单,供比对工具读取。
输入输出物
| 物料 | 说明 | 格式/示例 |
|---|---|---|
| 输入:快照类型映射表 | 用例 ID → {需求快照类型列表} | YAML / Excel |
| 输入:Mock 设备配置文件 | 触发钩子定义、快照存储路径 | JSON / TOML |
| 输出:状态快照文件 | 设备全部特征值的深度拷贝(含元数据) | snap_state_20250101T120000.json |
| 输出:数据快照文件 | 指定特征的历史增量数据 | snap_data_char001_20250101T120000.csv |
| 输出:事件快照文件 | 事件时间戳 + 事件类型 + 上下文负载 | snap_event_20250101T120000.jsonl |
| 输出:时序快照文件 | 时间 → 值 序列,带采样间隔 | snap_series_advInterval_20250101T120000.tsv |
| 输出:快照索引清单 | 所有快照文件的元数据汇总 | snapshot_index_release_v2.1.json |
责任边界
- 测试工程师:定义快照类型策略、配置触发条件、执行采集、归档索引。
- 开发工程师:提供 Mock 设备快照接口(强制刷新、事件通知 hook)。
- QA 自动化团队:维护快照比对工具,支持不同类型的数据拉平。
- 配置管理员:管理快照存储目录结构与备份策略。
记录材料
- 快照触发配置修改记录(Git commit log)。
- 快照采集日志(每次采集的时间、数量、异常数)。
- 快照目录索引文件(
snapshot_index_*.json)保留至少 10 个版本。
异常处理
| 异常现象 | 可能原因 | 处理措施 |
|---|---|---|
| 状态快照不完整 | Mock 设备响应超时或特征表未同步 | 重试采集;检查设备连接状态 |
| 事件快照时间戳错乱 | 系统时钟未同步或事件队列溢出 | 启用 NTP 同步;增大事件队列深度 |
| 时序快照漏点 | 采样间隔设置过小或设备忙 | 降低采样率;增加重试逻辑 |
| 索引文件损坏 | 并发写入或磁盘空间不足 | 锁定索引文件;预留 2 倍预期空间 |
验收标准
- 每种快照类型至少成功采集 1 次,且校验通过(文件完整性、时间戳合理、数据格式正确)。
- 快照索引清单中所有文件路径可达、大小非零。
- 回归用例覆盖的目标快照类型全部出现,无缺失类型。
- 采集性能满足:单次状态快照 ≤500ms,单次数据快照 ≤200ms,单次事件快照 ≤100ms。
快照类型分类关系
避坑提示:事件快照与数据快照容易混淆。事件快照只记录发生了什么(事件类型+时间),不记录特征值的完整内容;数据快照则侧重特征值本身的变化。回归验证时,建议先拉取事件快照定位问题时间点,再加载对应时间点的数据快照做精准比对。
最佳实践:在多设备并发回归场景,为每个 Mock 设备分配独立的快照子目录,目录名包含设备 MAC 最后 4 位和批次号,避免文件覆盖。