第4章 快照类型分类:状态快照、数据快照、事件快照、时序快照

适用场景

在 Mock BLE 设备数据准备过程中,快照类型决定了回归验证的覆盖粒度。本章适用于以下场景:

  • 状态快照:验证设备在特定时刻的稳定状态(如连接态、广播态、休眠态)。
  • 数据快照:捕获设备特征值的完整副本,用于比对数据一致性。
  • 事件快照:记录设备触发的事件序列(如断连、配对、OTA 开始/结束),用于回归事件处理逻辑。
  • 时序快照:按时间维度采集连续数据点,观察趋势或抖动。

前置条件

  • 已完成 Mock BLE 设备基础配置(设备地址、广播间隔、特征表)。
  • 已搭建快照存储服务(本地文件或数据库目录)。
  • 回归用例已明确需要采集的快照类型组合。

操作步骤

  1. 确定快照类型矩阵:根据回归用例输出“快照类型-用例”映射表。
  2. 配置快照触发钩子:在 Mock 设备配置文件中定义各类型触发条件(见下方示例)。
  3. 执行回归测试:按用例操作设备,自动化采集所有触发的快照。
  4. 标记与归档:为每个快照文件添加类型标签、时间戳和回归批次号。
  5. 生成快照目录索引:输出 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。

快照类型分类关系

快照类型分类树 快照类型 状态快照 设备全部特征值 数据快照 指定特征历史增量 事件快照 事件时序+上下文 时序快照 连续采样点序列 配置示例(触发钩子) snapshot_triggers: - type: state interval: 10s - type: data on_write: char_0x2A - type: event on_notify: true
避坑提示:事件快照与数据快照容易混淆。事件快照只记录发生了什么(事件类型+时间),不记录特征值的完整内容;数据快照则侧重特征值本身的变化。回归验证时,建议先拉取事件快照定位问题时间点,再加载对应时间点的数据快照做精准比对。
最佳实践:在多设备并发回归场景,为每个 Mock 设备分配独立的快照子目录,目录名包含设备 MAC 最后 4 位和批次号,避免文件覆盖。