Skip to content

Latest commit

 

History

History
56 lines (40 loc) · 1.87 KB

File metadata and controls

56 lines (40 loc) · 1.87 KB

Issue #89 测试计划: Session/Memory 多后端回放一致性测试框架

概述

构建可复用的回放一致性测试框架,用同一组标准化输入驱动 InMemory、SQL、Redis 多后端,自动检测差异。

维度 1: 单元测试 — normalizer (15 tests)

  • Event 归一化: author 保留、text 从 parts 提取、state_delta 保留/缺省
  • Snapshot 归一化: session_id/state/events/memories/summaries 正确
  • 空 parts / 空 text 处理
  • Memories 按 content 排序确保确定性对比
  • Unicode 文本正确保留

维度 2: 单元测试 — comparator (15 tests)

  • 相同 dict → 0 diff; 不同 value → 正确 path
  • 缺 key / 多 key 检测
  • 相同 list → 0 diff; 长度不同 / value 不同
  • 嵌套 dict/list 递归比较
  • 原始类型 (str/int/None) 比较
  • Summary injection / session snapshot 多节检测

维度 3: 单元测试 — cases + JSONL (9 tests)

  • 10 cases 定义完整性
  • 必填字段校验
  • 至少有 tool_call / summary / track_events case
  • 10 个 JSONL fixture 文件存在
  • JSONL 加载正确
  • JSONL 格式合法 JSON
  • Round-trip (save → load → equal)

维度 4: 集成测试 — E2E (4 tests)

  • InMemory vs SQLite 全部 10 cases → 0 unallowed diff
  • Summary diff 检测
  • State/Memory/Track diff 多节检测
  • JSONL round-trip 与 Python 定义一致

维度 5: Redis 集成测试 (3 tests, env-var gated)

  • Redis vs InMemory 10 cases → gracefully skipped when unavailable
  • Redis vs SQLite 10 cases → gracefully skipped
  • 三后端全矩阵比较 → gracefully skipped

维度 6: 边界/极端测试

  • 空 session / 空 memory
  • Unicode 中文+emoji
  • State key 含特殊字符
  • 极长 summary 文本

结果

  • 379 passed, 3 skipped (Redis), 1 pre-existing failure (unrelated)