# 完整测试指南 ## 📋 测试前准备 ### 1. 配置API密钥 #### 方法一:使用环境变量文件 创建或编辑 `backend/.env` 文件: ```env # OpenAI配置 OPENAI_API_KEY=sk-your-openai-api-key-here OPENAI_BASE_URL=https://api.openai.com/v1 # DeepSeek配置 DEEPSEEK_API_KEY=sk-your-deepseek-api-key-here DEEPSEEK_BASE_URL=https://api.deepseek.com ``` #### 方法二:使用Docker环境变量 在 `docker-compose.dev.yml` 中的 `backend` 服务添加: ```yaml environment: - OPENAI_API_KEY=sk-your-openai-api-key-here - DEEPSEEK_API_KEY=sk-your-deepseek-api-key-here ``` ### 2. 重启服务 ```bash docker-compose -f docker-compose.dev.yml restart backend ``` ### 3. 验证服务运行 ```bash # 检查后端服务 docker-compose -f docker-compose.dev.yml ps backend # 查看后端日志 docker-compose -f docker-compose.dev.yml logs --tail=20 backend ``` ## 🧪 测试步骤 ### 测试1:基础功能测试 #### 1.1 登录系统 1. 打开浏览器访问:`http://101.43.95.130:8038` 或 `http://localhost:8038` 2. 如果未注册,先注册账号 3. 使用用户名和密码登录 4. 验证登录成功后跳转到首页 **预期结果**: - ✅ 登录成功 - ✅ 显示工作流列表页面 - ✅ 控制台无错误 #### 1.2 创建工作流 1. 点击"创建工作流"按钮 2. 进入工作流设计器 3. 验证画布显示正常 **预期结果**: - ✅ 工作流设计器正常加载 - ✅ 节点工具箱显示正常 - ✅ 可以拖拽节点到画布 ### 测试2:LLM节点测试 #### 2.1 创建简单工作流(OpenAI) 1. **添加节点**: - 从节点工具箱拖拽"开始"节点到画布 - 拖拽"LLM"节点到画布 - 拖拽"结束"节点到画布 2. **连接节点**: - 从"开始"节点的底部连接点拖到"LLM"节点的顶部 - 从"LLM"节点的底部拖到"结束"节点的顶部 3. **配置LLM节点**: - 点击"LLM"节点选中它 - 在右侧配置面板中: - 提供商:选择"OpenAI" - 提示词:输入 `请将以下文本翻译成英文:{input}` - 模型:选择"GPT-3.5 Turbo" - 温度:0.7 - 点击"保存配置" 4. **保存工作流**: - 点击顶部"保存"按钮 - 验证保存成功提示 **预期结果**: - ✅ 节点可以正常连接 - ✅ LLM节点配置保存成功 - ✅ 工作流保存成功 #### 2.2 执行工作流(OpenAI) 1. **运行工作流**: - 点击"运行"按钮 - 输入测试数据(JSON格式): ```json { "input": "你好,世界" } ``` - 点击"执行" 2. **查看执行结果**: - 等待执行完成 - 查看执行结果 **预期结果**: - ✅ 执行成功 - ✅ 返回英文翻译结果:"Hello, world" - ✅ 无错误信息 #### 2.3 测试DeepSeek 1. **创建新工作流或修改现有工作流**: - 添加LLM节点 - 配置节点: - 提供商:选择"DeepSeek" - 提示词:`请用一句话总结:{input}` - 模型:选择"DeepSeek Chat" - 温度:0.7 2. **执行工作流**: - 输入数据: ```json { "input": "人工智能是计算机科学的一个分支,它试图理解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。" } ``` - 执行并查看结果 **预期结果**: - ✅ DeepSeek调用成功 - ✅ 返回总结结果 - ✅ 无错误信息 #### 2.4 测试DeepSeek Coder 1. **配置代码生成节点**: - 提供商:DeepSeek - 模型:DeepSeek Coder - 提示词:`请用Python编写一个函数,功能是:{input}` 2. **执行工作流**: - 输入数据: ```json { "input": "计算斐波那契数列的第n项" } ``` - 执行并查看结果 **预期结果**: - ✅ 返回Python代码 - ✅ 代码格式正确 - ✅ 功能符合要求 ### 测试3:复杂工作流测试 #### 3.1 多节点工作流 创建以下工作流: ``` 开始 → LLM节点(翻译) → LLM节点(总结) → 结束 ``` 1. **配置第一个LLM节点**(翻译): - 提供商:OpenAI - 提示词:`将以下中文翻译成英文:{input}` - 模型:GPT-3.5 Turbo 2. **配置第二个LLM节点**(总结): - 提供商:DeepSeek - 提示词:`请用一句话总结以下英文内容:{input}` - 模型:DeepSeek Chat 3. **执行工作流**: - 输入数据: ```json { "input": "人工智能技术正在快速发展,它将在未来改变我们的生活方式。" } ``` **预期结果**: - ✅ 第一个节点返回英文翻译 - ✅ 第二个节点返回总结 - ✅ 数据正确传递 #### 3.2 条件分支工作流 创建以下工作流: ``` 开始 → LLM节点(判断) → 条件节点 → [True分支] → 输出节点 ↓ [False分支] → 输出节点 ``` 1. **配置LLM节点**: - 提示词:`判断以下文本的情感倾向(返回positive或negative):{input}` 2. **配置条件节点**: - 条件表达式:`{input} == "positive"` 3. **执行工作流**: - 测试数据1(正面): ```json { "input": "今天天气真好" } ``` - 测试数据2(负面): ```json { "input": "今天心情很糟糕" } ``` **预期结果**: - ✅ 正面文本走True分支 - ✅ 负面文本走False分支 - ✅ 条件判断正确 ### 测试4:WebSocket实时推送测试 #### 4.1 使用浏览器控制台测试 1. **打开浏览器控制台**(F12) 2. **建立WebSocket连接**: ```javascript // 先执行一个工作流,获取execution_id // 假设execution_id为 'your-execution-id' const executionId = 'your-execution-id'; const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; const hostname = window.location.hostname; const ws = new WebSocket(`${protocol}//${hostname}:8037/api/v1/ws/executions/${executionId}`); ws.onopen = () => { console.log('✅ WebSocket连接已建立'); }; ws.onmessage = (event) => { const message = JSON.parse(event.data); console.log('📨 收到消息:', message); if (message.type === 'status') { console.log('状态:', message.status); console.log('进度:', message.progress); } }; ws.onerror = (error) => { console.error('❌ WebSocket错误:', error); }; ws.onclose = () => { console.log('🔌 WebSocket连接已关闭'); }; // 心跳 setInterval(() => { if (ws.readyState === WebSocket.OPEN) { ws.send(JSON.stringify({ type: 'ping' })); } }, 30000); ``` 3. **执行工作流**: - 在另一个标签页执行工作流 - 观察控制台中的状态更新 **预期结果**: - ✅ WebSocket连接成功 - ✅ 收到状态更新消息 - ✅ 状态从pending → running → completed - ✅ 收到最终结果 ### 测试5:错误处理测试 #### 5.1 API Key错误 1. **临时移除API Key**: ```bash # 在backend/.env中注释掉API Key # OPENAI_API_KEY=sk-xxx ``` 2. **重启后端**: ```bash docker-compose -f docker-compose.dev.yml restart backend ``` 3. **执行工作流**: - 使用OpenAI节点 - 执行工作流 **预期结果**: - ✅ 返回错误信息 - ✅ 错误信息清晰:`OpenAI API Key未配置...` - ✅ 工作流执行失败但不会崩溃 #### 5.2 网络错误 1. **断开网络**(或使用错误的API地址) 2. **执行工作流** **预期结果**: - ✅ 返回网络错误信息 - ✅ 错误处理正常 - ✅ 不会导致系统崩溃 #### 5.3 无效模型名称 1. **配置LLM节点**: - 模型名称:`invalid-model-name` 2. **执行工作流** **预期结果**: - ✅ 返回模型不存在错误 - ✅ 错误信息清晰 ### 测试6:性能测试 #### 6.1 并发执行测试 1. **同时执行多个工作流**: - 创建3-5个不同的工作流 - 同时执行它们 **预期结果**: - ✅ 所有工作流都能正常执行 - ✅ 不会相互影响 - ✅ 执行时间合理 #### 6.2 长时间运行测试 1. **创建包含多个LLM节点的工作流** 2. **执行并监控**: - 观察执行时间 - 检查资源使用情况 **预期结果**: - ✅ 长时间运行稳定 - ✅ 内存使用正常 - ✅ 不会出现内存泄漏 ## 📊 测试检查清单 ### 基础功能 - [ ] 用户注册和登录 - [ ] 工作流创建和保存 - [ ] 节点拖拽和连接 - [ ] 节点配置保存 ### LLM功能 - [ ] OpenAI调用成功 - [ ] DeepSeek调用成功 - [ ] DeepSeek Coder调用成功 - [ ] Prompt模板变量替换 - [ ] 不同模型选择 - [ ] 温度参数生效 - [ ] 最大Token数限制 ### 工作流执行 - [ ] 简单工作流执行 - [ ] 多节点工作流执行 - [ ] 条件分支工作流 - [ ] 数据传递正确 - [ ] 执行结果正确 ### WebSocket - [ ] WebSocket连接建立 - [ ] 状态实时更新 - [ ] 心跳检测 - [ ] 连接自动断开 ### 错误处理 - [ ] API Key错误处理 - [ ] 网络错误处理 - [ ] 模型错误处理 - [ ] 错误信息清晰 ### 性能 - [ ] 并发执行正常 - [ ] 长时间运行稳定 - [ ] 资源使用合理 ## 🐛 常见问题排查 ### 问题1:LLM调用失败 **检查项**: 1. API Key是否正确配置 2. 网络连接是否正常 3. API余额是否充足 4. 模型名称是否正确 **解决方法**: ```bash # 检查环境变量 docker-compose -f docker-compose.dev.yml exec backend env | grep API_KEY # 查看后端日志 docker-compose -f docker-compose.dev.yml logs --tail=50 backend ``` ### 问题2:WebSocket连接失败 **检查项**: 1. 后端服务是否运行 2. 端口8037是否开放 3. 防火墙配置是否正确 **解决方法**: ```bash # 检查后端服务 docker-compose -f docker-compose.dev.yml ps backend # 测试WebSocket连接 curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" \ http://localhost:8037/api/v1/ws/executions/test-id ``` ### 问题3:工作流执行卡住 **检查项**: 1. Celery worker是否运行 2. Redis连接是否正常 3. 数据库连接是否正常 **解决方法**: ```bash # 检查Celery worker docker-compose -f docker-compose.dev.yml ps celery # 查看Celery日志 docker-compose -f docker-compose.dev.yml logs --tail=50 celery # 检查Redis docker-compose -f docker-compose.dev.yml exec redis redis-cli ping ``` ## 📝 测试报告模板 ``` 测试日期:2024-XX-XX 测试人员:XXX 测试结果: - 基础功能:✅ 通过 - LLM功能:✅ 通过 - 工作流执行:✅ 通过 - WebSocket:✅ 通过 - 错误处理:✅ 通过 - 性能:✅ 通过 发现问题: 1. [问题描述] 2. [问题描述] 建议: 1. [建议内容] 2. [建议内容] ``` --- **状态**: ✅ 测试指南已创建 **时间**: 2024年