4. 自动化测试验证流程总览:GameDay自动化流程的5个阶段及整体架构图

GameDay 自动化流程将混沌工程实验与基线核验固化为可重复、可量化的5个阶段。每个阶段都有明确的输入、输出和自动化触发条件,确保从计划到复盘形成完整闭环。

4.1 五阶段流程总览

下表列出了每个阶段的核心目标、关键活动及自动化产出物:

阶段 核心目标 关键活动 自动化产出物
① 计划 定义实验范围与基线 选择目标服务、确定故障类型、设定SLO阈值 实验配置文件(YAML/JSON)
② 注入 执行故障注入 调用混沌引擎(如ChaosBlade/Litmus)注入CPU/网络/进程故障 注入事件日志、时间戳
③ 观测 采集系统状态与指标 拉取Prometheus/Grafana/APM数据,记录异常事件 时序指标快照、链路追踪数据
④ 核验 对比基线,判定是否通过 执行断言引擎,比对SLO与故障影响范围 核验报告(Pass/Fail + 偏差明细)
⑤ 复盘 归档结果,驱动改进 生成实验总结、关联工单、更新风险矩阵 复盘文档、改进项列表
关键原则: 每个阶段必须幂等且可重入。若核验阶段失败,流程应自动终止后续注入并触发回滚,而非继续执行。

4.2 自动化流程整体架构

下图展示了GameDay自动化流程的组件关系与数据流向。核心引擎通过API网关串联5个阶段,各阶段模块独立部署,通过消息队列解耦。

GameDay 自动化流程整体架构图 ① 计划阶段 实验配置生成 基线SLO定义 ② 注入阶段 混沌引擎调用 故障注入执行 ③ 观测阶段 指标采集 链路追踪 ④ 核验阶段 基线对比 断言判定 GameDay 核心编排引擎 状态机 · 超时控制 · 回滚触发 数据存储层(Prometheus / Elasticsearch / 对象存储) 通知服务 钉钉/企微/邮件 工单系统 Jira / 禅道 报告生成 PDF / HTML 归档 ⑤ 复盘阶段 实验总结 · 风险矩阵更新 · 改进跟踪 说明 所有阶段通过API网关 统一鉴权与限流

4.3 阶段间数据流与关键接口

每个阶段通过标准化的接口协议进行数据交换,确保上下游解耦。以下为各阶段之间的核心数据流:

  • 计划 → 注入: 传递实验配置(故障类型、目标IP/服务、持续时间、注入强度)。
  • 注入 → 观测: 传递注入事件ID、时间戳、故障范围标签,用于关联指标。
  • 观测 → 核验: 传递聚合后的指标快照(P99延迟、错误率、吞吐量)及链路追踪摘要。
  • 核验 → 复盘: 传递核验结果(Pass/Fail)、偏差百分比、违反的SLO列表。
  • 复盘 → 计划: 反馈改进项与风险等级调整,用于优化下一轮实验配置。
自动化触发条件: 核验阶段若判定为 Fail,引擎自动触发以下动作:
1. 停止当前所有注入任务;
2. 调用回滚脚本恢复故障注入前的状态;
3. 生成告警通知并创建高优工单;
4. 将实验标记为“失败-需人工介入”。

4.4 整体架构组件说明

下表列出了架构图中各核心组件的职责与技术选型参考:

组件 职责 技术选型参考
核心编排引擎 维护实验状态机、超时控制、阶段调度、回滚触发 Argo Workflows / Temporal / 自研状态机
混沌引擎 执行故障注入(CPU/网络/磁盘/进程) ChaosBlade / LitmusChaos / Chaos Mesh
指标采集器 拉取系统指标与应用性能数据 Prometheus + Grafana / Datadog / SkyWalking
断言引擎 执行基线对比与SLO判定 自研断言框架 / PromQL + 阈值规则
通知服务 发送实验状态变更与告警 钉钉机器人 / 企业微信 / Slack Webhook
工单系统 自动创建改进任务与故障单 Jira API / 禅道 / ServiceNow

4.5 流程自动化关键设计原则

  1. 幂等性: 每个阶段可重复执行,不会因重试导致状态不一致。
  2. 超时熔断: 每个阶段设置最大执行时间,超时后引擎自动标记为失败并进入回滚。
  3. 可观测性: 引擎本身暴露 Prometheus 指标(阶段执行时长、成功率、重试次数)。
  4. 配置驱动: 实验参数全部通过 YAML 配置,无需修改代码即可调整实验范围。
  5. 安全隔离: 注入阶段仅在隔离环境(测试集群/沙箱)执行,禁止直接操作生产环境。
常见陷阱: 不要将核验逻辑与观测逻辑耦合。观测只负责采集和存储,核验只负责对比和判定。混在一起会导致基线调整时需要同时修改两个模块,增加维护成本。