测试与验证策略
16.1 测试层级
Unit
- Spectrum 校验。
- Plan 生成。
- ShardPlan 冻结。
- Actor 状态机。
- Backend 状态机。
- Bridge 消息映射。
- 指标聚合。
- Histogram 编解码。
Contract / Conformance
- Rust Controller ↔ Rust Worker。
- Rust Supervisor ↔ Python Bridge。
- 不同语言 Protobuf codegen 一致性。
- 事件序列与重复事件处理。
- 能力声明与实际行为一致。
- HDR V2 blob 跨实现合并一致。
Integration
- KBEngine Bots 启动和 Bridge 注册。
- 批次创建。
- 登录事件采集。
- 停止新增。
- 优雅退出。
- 断线重连。
- Supervisor / Bridge / Bot 进程故障。
Load / Soak
- 5k / 20k / 50k Actor。
- 每 Actor 4 个定时器。
- 事件突发。
- 大量连接建立和关闭。
- 24h soak。
- Bridge 事件上报压力。
- 监控 Provider 高延迟。
- Controller 重启和 Backend 重新注册。
16.2 性能裁决实验
ADR 中 Rust / Go / Python 的性能论证应通过真实基准验证,而不是只比较数据结构复杂度。
至少测试:
- Tokio timer insert/cancel/expire。
- Go timer heap 对照。
- Python heapq / uvloop 对照(只用于适用模式)。
- 5k / 20k / 50k Actor 的调度 P50/P95/P99。
- 每 Actor 4 个 timer 的内存。
- 创建速率 1k–5k/s 时 planned_at 偏差。
- Bridge IPC 吞吐、延迟、批次大小和队列增长。
- KBEngine callback 的调度粒度和积压行为。
- Supervisor 进程监控开销。
- Generator Metrics 对运行时的开销。
16.3 测试有效性
一次 Swell 只有满足以下条件才能标记为 Valid:
- 计划配置通过校验。
- 计划摘要与 Backend 接收摘要一致。
- Backend 状态和实际负载数据完整。
- 发生器没有达到不可接受的饱和状态。
- 必需观测数据满足覆盖要求,或明确标记 Partial。
- 时间序列没有无法解释的大段缺失。
- 计划到达和实际到达偏差在用户定义阈值内。
- 没有未处理的关键故障。