cherry-studio/TEST_SCENARIOS.md
suyao b4df5bbb13
Fix agent session message persistence by saving messages immediately
- Modify AgentMessageDataSource.appendMessage to save messages to backend immediately instead of waiting for response completion
- Add proper error handling and logging for message persistence operations
- Create comprehensive test documentation covering V2 database service scenarios
2025-09-22 21:06:16 +08:00

6.3 KiB
Raw Blame History

V2 Database Service 手动测试用例

准备工作

// 1. 打开浏览器控制台启用V2功能
localStorage.setItem('featureFlags', JSON.stringify({ USE_UNIFIED_DB_SERVICE: true }))
location.reload()

// 2. 确认功能已启用
JSON.parse(localStorage.getItem('featureFlags') || '{}')
// 应该看到: { USE_UNIFIED_DB_SERVICE: true }

测试场景一:基础聊天功能

1.1 消息发送与保存

测试功能: saveMessageAndBlocksToDBV2, updateBlocksV2

  1. 创建新的聊天会话
  2. 发送消息:"你好请介绍一下React Hooks的使用"
  3. 等待助手回复完成
  4. 刷新页面
  5. 验证: 消息应该被正确保存并重新加载

1.2 消息加载(已测试稳定)

测试功能: loadTopicMessagesThunkV2

  1. 切换到其他会话
  2. 再切换回刚才的会话
  3. 验证: 消息应该立即加载,无需等待

1.3 实时流式更新

测试功能: updateSingleBlockV2 (throttled updates)

  1. 发送一个需要较长回复的问题:"请详细解释JavaScript的事件循环机制"
  2. 观察助手回复时的流式更新
  3. 验证: 文字应该平滑流式显示,没有卡顿或丢失

测试场景二:消息编辑与删除 🗑️

2.1 删除单条消息

测试功能: deleteMessageFromDBV2

  1. 在现有会话中,右键点击任意一条消息
  2. 选择"删除"
  3. 刷新页面
  4. 验证: 被删除的消息不应再出现

2.2 删除消息组(用户问题+助手回答)

测试功能: deleteMessagesFromDBV2

  1. 找到一组问答(用户提问+助手回答)
  2. 删除整组对话
  3. 验证: 用户消息和对应的助手回答都被删除

2.3 清空会话

测试功能: clearMessagesFromDBV2

  1. 在一个有多条消息的会话中
  2. 使用"清空会话"功能
  3. 刷新页面
  4. 验证: 会话应该为空,但会话本身还存在

测试场景三:文件和图片处理 📎

3.1 上传图片

测试功能: saveMessageAndBlocksToDBV2, updateFileCountV2

  1. 在输入框中上传一张图片
  2. 添加文字:"这张图片是什么内容?"
  3. 发送消息
  4. 刷新页面
  5. 验证: 图片应该正确显示,文件引用计数正确

3.2 上传文件

测试功能: bulkAddBlocksV2

  1. 上传一个文本文件或PDF
  2. 发送消息询问文件内容
  3. 验证: 文件应该被正确处理和显示

3.3 复制带图片的消息到新会话

测试功能: bulkAddBlocksV2, updateFileCountV2

  1. 选择包含图片的消息
  2. 复制到新的会话
  3. 验证: 图片在新会话中正确显示,文件引用计数增加

测试场景四Agent Session 功能 🤖

4.1 Agent会话消息加载

测试功能: loadTopicMessagesThunkV2 (agent-session分支)

  1. 创建或打开一个Agent会话
  2. 发送消息给Agent
  3. 切换到其他会话再切回
  4. 验证: Agent会话消息正确加载

4.2 Agent会话消息持久化 🔥 (已修复)

测试功能: saveMessageAndBlocksToDBV2AgentMessageDataSource.appendMessage

  1. 在Agent会话中发送消息
  2. 立即切换到其他会话(不等待响应完成)
  3. 切回Agent会话
  4. 验证: 用户消息应该已保存并显示
  5. 等待Agent响应完成
  6. 刷新页面
  7. 验证: 完整对话正确保存

4.3 Agent会话清空应该无操作

测试功能: clearMessagesFromDBV2 (agent no-op)

  1. 尝试清空Agent会话
  2. 验证: 操作应该被正确处理(可能显示不支持或静默处理)

测试场景五:高级功能 🚀

5.1 消息重新生成

测试功能: updateMessageV2, updateBlocksV2

  1. 选择一条助手回复
  2. 点击"重新生成"
  3. 验证: 原消息被重置,新回复正常生成

5.2 消息分支

测试功能: saveMessageAndBlocksToDBV2

  1. 选择一条用户消息
  2. 创建分支并输入不同的问题
  3. 验证: 分支正确创建,两个分支独立存在

5.3 翻译功能

测试功能: updateSingleBlockV2

  1. 选择一条消息
  2. 点击翻译按钮
  3. 验证: 翻译块正确创建和更新

5.4 多模型响应

测试功能: saveMessageAndBlocksToDBV2, updateBlocksV2

  1. 启用多模型功能
  2. 发送一个问题
  3. 验证: 多个模型的响应都正确保存

测试场景六:并发和性能

6.1 快速切换会话

测试功能: loadTopicMessagesThunkV2

  1. 快速在多个会话间切换
  2. 验证: 消息加载无错误,无内存泄漏

6.2 大量消息处理

测试功能: 所有V2函数

  1. 在一个会话中累积50+条消息
  2. 执行各种操作(删除、编辑、刷新)
  3. 验证: 性能无明显下降

6.3 同时操作

  1. 在流式回复过程中切换会话
  2. 在文件上传过程中发送新消息
  3. 验证: 操作不冲突,数据一致

测试场景七:错误处理 ⚠️

7.1 网络中断恢复

  1. 发送消息
  2. 在回复过程中断网
  3. 恢复网络
  4. 验证: 消息状态正确,可以重试

7.2 异常数据处理

  1. 尝试删除不存在的消息(通过控制台)
  2. 验证: 错误被优雅处理,不崩溃

测试检查清单

功能验证

  • 普通聊天消息发送/接收
  • Agent会话消息发送/接收
  • 消息删除(单个/批量/清空)
  • 文件/图片上传和显示
  • 消息编辑和更新
  • 流式响应更新
  • 消息重新生成
  • 分支创建
  • 翻译功能

数据一致性

  • 刷新后数据保持一致
  • 切换会话数据正确
  • 文件引用计数正确
  • Agent会话数据隔离

性能表现

  • 消息加载速度正常
  • 流式更新流畅
  • 大量数据处理正常
  • 内存使用合理

错误处理

  • 网络错误处理正确
  • 异常操作不崩溃
  • 错误信息清晰

回滚测试

完成所有测试后,验证回滚功能:

// 禁用V2功能
localStorage.setItem('featureFlags', JSON.stringify({ USE_UNIFIED_DB_SERVICE: false }))
location.reload()

// 验证切换回原实现后一切正常

问题记录

如果发现问题,请记录:

  1. 测试场景编号
  2. 具体操作步骤
  3. 预期结果
  4. 实际结果
  5. 浏览器控制台错误信息(如有)

提示: 建议按顺序执行测试,每个大场景可以单独测试。重点关注数据一致性和错误处理。