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

213 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# V2 Database Service 手动测试用例
## 准备工作
```javascript
// 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会话消息持久化 🔥 (已修复)
**测试功能**: `saveMessageAndBlocksToDBV2``AgentMessageDataSource.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. **验证**: 错误被优雅处理,不崩溃
## 测试检查清单
### 功能验证
- [x] 普通聊天消息发送/接收
- [ ] Agent会话消息发送/接收
- [x] 消息删除(单个/批量/清空)
- [x] 文件/图片上传和显示
- [x] 消息编辑和更新
- [x] 流式响应更新
- [x] 消息重新生成
- [x] 分支创建
- [x] 翻译功能
### 数据一致性
- [x] 刷新后数据保持一致
- [x] 切换会话数据正确
- [x] 文件引用计数正确
- [ ] Agent会话数据隔离
### 性能表现
- [x] 消息加载速度正常
- [x] 流式更新流畅
- [x] 大量数据处理正常
- [x] 内存使用合理
### 错误处理
- [x] 网络错误处理正确
- [x] 异常操作不崩溃
- [x] 错误信息清晰
## 回滚测试
完成所有测试后,验证回滚功能:
```javascript
// 禁用V2功能
localStorage.setItem('featureFlags', JSON.stringify({ USE_UNIFIED_DB_SERVICE: false }))
location.reload()
// 验证切换回原实现后一切正常
```
## 问题记录
如果发现问题,请记录:
1. 测试场景编号
2. 具体操作步骤
3. 预期结果
4. 实际结果
5. 浏览器控制台错误信息(如有)
---
**提示**: 建议按顺序执行测试,每个大场景可以单独测试。重点关注数据一致性和错误处理。