Back to Prompt Optimizer

上下文管理与持久化测试(Normal Flow)

docs/testing/ai-automation/test-scenarios/normal-flow/08-context-persistence.md

2.10.24.0 KB
Original Source

上下文管理与持久化测试(Normal Flow)

📖 测试概述

验证基于 ContextRepo 的上下文在编辑→持久化→刷新恢复的完整链路,覆盖消息与变量的保存、默认上下文初始化、导出基本检查等正常流程。

🎯 测试目标

  • 确认默认上下文存在且可编辑
  • 验证 ContextEditor 的变更会被立即持久化
  • 刷新页面后上下文数据可恢复
  • 基础导出内容结构正确(context-bundle)

📋 前置条件

  • 应用可正常启动(Web 或 Electron 桌面端均可)
  • 基础功能可用(可打开优化页与上下文编辑器)
  • 如需走导出流程,浏览器需允许下载/剪贴板权限

🔧 测试步骤

步骤1:准备并打开上下文编辑器

AI执行指导:

  • 使用 browser_snapshot 定位“对话管理/会话管理”区域
  • 若无消息,点击“添加消息”创建至少1条
  • 点击“打开编辑器”按钮,等待全屏 ContextEditor 出现

预期结果:

  • 对话区域显示消息数量与变量统计徽章
  • 点击“打开编辑器”后出现标题为“上下文编辑器”的弹窗

验证点:

  • 顶部显示“消息数”标签
  • 存在“打开编辑器”按钮并可点击
  • 弹窗渲染正常,无布局错乱

步骤2:编辑消息并触发持久化

AI执行指导:

  • 在“消息”标签页:
    • 将第一条消息内容设置为:系统:你是一个有用的助手,任务是 {{task}}(system)
    • 新增一条用户消息:请帮我完成 {{task}},场景:{{scene}}
  • 使用 browser_wait_for 等待界面稳定

预期结果:

  • ContextEditor 触发 update:state/contextChange 事件,父层应立即写入 ContextRepo
  • 变量统计显示包含 task、scene 两个变量

验证点:

  • 变量统计数量为2(不强制位置,仅检查存在)
  • 无错误提示或异常交互

步骤3:在变量页添加覆盖并再次保存

AI执行指导:

  • 切换到“变量/上下文变量”标签页
  • 点击“添加变量”,创建:
    • task = 集成测试
    • scene = 正常流程
  • 关闭编辑器(或保持开启)

预期结果:

  • 上下文变量覆盖写入持久化层
  • 返回对话区域后,变量缺失数应为0

验证点:

  • 变量页展示2个覆盖项
  • 对话区缺失变量标签消失

步骤4:刷新恢复验证

AI执行指导:

  • 执行页面刷新(browser_navigate 到同一路由,或 browser_press_key 执行刷新快捷键)
  • 回到优化页面后,重复“步骤1”的操作打开 ContextEditor

预期结果:

  • 刷新后仍能看到先前的两条消息与两个变量覆盖
  • 变量统计、缺失数与刷新前一致

验证点:

  • 消息数与内容与刷新前一致
  • 变量覆盖项与刷新前一致
  • 无任何丢失或回退到初始状态

步骤5:导出基本检查(结构校验)

AI执行指导:

  • 在 ContextEditor 中打开“导出”对话框,选择“标准格式”
  • 执行“复制到剪贴板”或“导出到文件”
  • 读取导出内容(剪贴板或文件)并解析 JSON

预期结果:

  • 导出数据的 metadata.variables、messages 字段完整
  • 若包含 tools 字段应为数组(可为空)

验证点:

  • messages 为数组且长度 ≥ 2
  • metadata.variables.task === "集成测试"
  • metadata.variables.scene === "正常流程"
  • tools 字段存在(数组,可空)

🧪 诊断建议(失败时)

  • 若刷新后数据丢失:检查 ContextRepo.update/ save 是否被调用(通过控制台日志或 IPC 调用)
  • 若导出为空:确认导出前已 setData,或查看导出格式选择是否正确
  • 若变量缺失统计异常:确认变量名与占位符大小写是否完全匹配

✅ 成功标准

  • 编辑→持久化→刷新后恢复完整一致
  • 导出结构正确,可被再次导入(replace 模式)
  • 全流程无前端错误、无阻塞告警