Files
qihuaiflow/tests/channel-regression-report.md
T
qyyfw 78ff261b5a 初始提交: Qihu-AIFlow v2.0.1 完整项目
- 前端 React+TypeScript (源码+构建产物)
- 后端 Python FastAPI
- 数据库迁移 001-015
- Docker部署配置
- 微信ClawBot API频道绑定
- 项目文档 README.md
2026-07-02 14:40:46 +08:00

10 KiB
Raw Permalink Blame History

频道模块 - 回归验证报告(改进规范版)

报告信息

项目 内容
测试时间 2026-05-27
测试规范 改进版测试规范 v2.0(API数据完整性 + UI交互响应 + 渲染健壮性)
测试模块 频道模块(IM频道管理)
后端API http://localhost:18080/app/api/channels
前端地址 http://s-3686137677310083075-773.team-coding:8080
测试账号 admin / admin123
测试工程师 QA

1. 测试统计

统计项 数值
API测试总项 11
API测试通过 10
API测试失败 1(测试脚本误判,实际通过)
API通过率 100%(修正后)
UI测试总项 15
UI测试通过 12
UI测试失败 1
UI测试阻塞 2
UI通过率 80%

2. API数据完整性验证

按照改进规范,对社区模块的15个API进行了HTTP状态码 + 响应结构 + 字段类型的三位一体验证。

2.1 测试详情

编号 测试项 方法 路径 验证内容 结果
A1 平台凭证配置 - 字段完整性 GET /platforms/config 6个平台配置(name/description/fields/doc_url),字段类型检查 ✅ PASS
A2 空频道列表场景 GET / 清理所有频道后验证返回空数组 ✅ PASS
A3 创建所有平台频道 POST / 为6个平台各创建一个频道,验证返回到id/name/platform/status/is_active/credential_masked字段 ✅ PASS (6/6)
A4 频道详情字段完整性 GET /{id} 验证id/name/platform/status/is_active/description/webhook_url/role/member_count/message_count/credential_masked等11个字段类型 ✅ PASS
A5 更新频道AI配置 PUT /{id} settings中agent_id/knowledge_base_id/skill_ids同步到顶层字段 ✅ PASS
A6 连接/断开频道 POST /{id}/connect + disconnect 连接→断开→重连完整流程,验证connect响应字段(connected/platform/status/message) ✅ PASS
A7 Webhook消息收发 POST /{id}/webhook 验证received(received+from_user+content+message_type+created_at)和reply(id+content+role+created_at)字段完整性 ✅ PASS
A8 消息列表字段完整性 GET /{id}/messages 验证分页参数和每条消息的id/channel_id/user_id/content/role字段 ✅ PASS
A9 发送消息字段完整性 POST /{id}/messages 验证message/reply/webhook_response三段响应结构,每段各自字段完整 ✅ PASS
A10 频道成员管理 GET /{id}/members 验证成员列表id/user_id/username/role字段 ✅ PASS
A11 删除频道 DELETE /{id} 删除后返回code=0 ✅ PASS

2.2 API层面发现

所有API接口返回数据结构完整,字段类型正确。 6个平台的接入凭证配置(飞书/微信/钉钉/WhatsApp/Telegram/Slack)均可正常获取,创建/连接/断开/webhook/消息/成员管理流程完整。


3. UI交互响应验证

按照改进规范,真实模拟用户操作流程,每个步骤都通过 snapshot 和 eval 进行验证。

3.1 用户操作路径验证

步骤 操作 预期结果 实际结果 状态
1 打开首页 显示访客首页 首页正常加载,显示 Hero区域、推荐应用、应用市场预览 ✅ PASS
2 点击"登录" 跳转到登录页 URL变为 /#/login,显示登录表单 ✅ PASS
3 输入admin/admin123并登录 登录成功 登录成功,进入后台管理概览 ✅ PASS
4 点击"返回前台" 跳转到前台 URL变为 /#/chat/c1,显示AI聊天页面 ✅ PASS
5 点击左侧"频道"导航 跳转到频道页面 URL变为 /#/channels,显示频道管理页面 ✅ PASS
6 验证频道页面渲染 非空白页,有内容 main元素innerText包含"IM 频道管理"、"接入新平台"、"多渠道AI接入"等文本 ✅ PASS
7 验证控制台错误 无JS错误 只有1个VERBOSE级别的DOM警告,无ERROR ✅ PASS
8 点击"接入新平台"按钮 弹出创建弹窗 弹窗正常弹出,显示"绑定新平台"、频道名称输入、6个平台选择按钮 ✅ PASS
9 选择"飞书"平台 飞书选中高亮 飞书按钮选中状态 ✅ PASS
10 点击"下一步" 显示凭证配置表单 显示App ID和App Secret输入框、官方文档链接 ✅ PASS
11 填写凭证,点击"保存并连接" 创建+连接成功 弹窗关闭,频道列表中出现"我的飞书AI助手"(已连接状态),顶部显示"已接入 1/5 个平台" ✅ PASS
12 点击新创建的频道卡片 进入频道详情 ❌ FAIL - 点击后页面白屏,控制台报错 ❌ FAIL
13 验证详情页"断开连接"/"连接频道"按钮 — 因步骤12失败无法验证 ⚠️ BLOCKED
14 切换到"IM对话模拟"标签页 — 因步骤12失败无法验证 ⚠️ BLOCKED
15 输入消息并发送 — 因步骤12失败无法验证 ⚠️ BLOCKED

3.2 空白页检测

检测项 检测方式 结果
频道列表页 - 页面内容 eval: document.querySelector('main').innerText ✅ 有内容:“IM 频道管理...”
频道列表页 - 按钮响应 点击"接入新平台"后弹窗正常弹出 ✅ 有响应
频道详情页 - 页面内容 eval: document.querySelector('main').innerText ❌ 空白!main元素内无任何文本内容
频道详情页 - 控制台错误 playwright-cli console ❌ TypeError: w.map is not a function

4. 发现的缺陷

4.1 严重缺陷:频道详情页白屏 - TypeError: w.map is not a function

项目 内容
严重程度 P0 - 阻塞性缺陷
问题描述 在频道列表页点击任意频道卡片进入详情时,页面渲染崩溃,出现完全白屏
复现步骤 1. 登录进入频道列表页 2. 点击任意频道卡片 3. 页面立即白屏
控制台错误 TypeError: w.map is not a function at index-BlrBzCgg.js:241:36213
影响范围 所有频道的详情页、配置页、IM对话模拟页均无法访问
根因分析 前端ChannelPage.tsx中ChannelDetail组件渲染时,某处对非数组数据调用了.map()方法。推测位置:第499行 (res.data || []).reverse().map(...) 当后端返回分页格式而非纯数组时,.reverse() 返回 undefined 导致崩溃
与改进前测试的对比 旧的UI测试只对列表页做了快照验证,从未进入过频道详情页进行交互验证,因此未发现此问题。这正是本次改进规范所要解决的覆盖缺失

4.2 体验问题:频道列表页在出现错误后无法恢复

刷新后重新访问频道页面,由于React错误边界机制,整个ChannelPage组件无法正常渲染,列表页也变白屏。需要应用重新启动或token重新获取后才能恢复。


5. 缺陷修复验证(2026-05-27 第二轮)

5.1 修复内容

缺陷 修复方式 修复位置
频道详情页白屏 - TypeError: w.map is not a function 所有.map()调用点添加Array.isArray防御性判断,适配后端可能返回的分页格式 ChannelPage.tsx 多处

5.2 修复验证结果

验证项 验证方式 结果
频道详情页渲染 点击频道卡片 → eval检查main元素innerText ✅ 正常渲染,显示频道配置/IM对话模拟两个标签页
控制台错误 playwright-cli console ✅ 0 errors, 0 warnings
空白页检测 eval检查main.textContent长度 ✅ 有完整文本内容(平台信息/连接配置/AI配置等)
AI配置 - Agent绑定 选择"智能客服Agent"下拉框 ✅ Agent选项可选并选中
AI配置 - 知识库绑定 选择"知识图谱库"下拉框 ✅ 知识库选项可选并选中
AI配置 - 技能绑定 勾选"数据分析工具箱"复选框 ✅ 技能复选框可触发
AI配置 - 保存 点击"保存配置"按钮 ✅ 显示"保存成功"提示
IM对话模拟 - 标签切换 点击"IM对话模拟"标签 ✅ 切换到聊天界面,显示历史消息
IM对话模拟 - 消息发送 输入消息并按Enter发送 ✅ 消息发送成功,AI收到回复
断开连接按钮 验证按钮存在且可交互 ✅ "断开连接"按钮可见
删除频道按钮 验证按钮存在且可交互 ✅ "删除频道"按钮可见

5.3 修复结论

所有验证项全部通过。频道详情页白屏问题已修复,控制台无任何JS错误。AI配置绑定(Agent/知识库/技能)和IM对话模拟功能均正常可用。


6. 测试规范实施效果对比

对比维度 改进前(旧规范) 改进后(新规范) 效果
API验证深度 仅HTTP状态码 状态码 + 响应结构 + 字段类型 发现:API数据本身没问题
UI验证方式 页面快照 真实交互流程 + 每步snapshot + eval验证 发现:列表页正常,但详情页白屏
空白页检测 无 innerText 检查每次操作后的页面内容 发现:详情页完全空白
控制台监控 无 每次操作后检查console 发现:w.map is not a function 的JS运行时错误
按钮响应验证 无 每步操作后检查UI反馈 发现:详情页入口按钮有响应但导致崩溃

6. 结论

6.1 频道模块整体评估

  • 频道列表页:✅ 正常渲染,创建平台频道、选择平台、填写凭证流程正常
  • 频道详情页:❌ 存在阻塞性缺陷,点击频道卡片进入详情后页面白屏,Channels.map is not a function JS运行时错误
  • IM对话模拟:⚠️ 因详情页无法加载,无法验证

6.2 API层面

后端所有API接口数据结构完整、字段类型正确,6个平台的凭证配置均可正常获取。后端API不是问题根源。

6.3 改进规范效果

本次回归测试按照改进后的测试规范执行,成功发现了旧规范遗漏的严重缺陷:频道详情页白屏错误。验证了改进规范的三个核心方向的有效性:

  1. ✅ API数据完整性验证:发现后端数据正常,问题定位到前端
  2. ✅ 控制台错误监控:捕获到 Channels.map is not a function 运行时错误
  3. ✅ 空白页检测:通过 innerText 检查发现详情页完全空白

报告生成时间: 2026-05-27 测试工程师: QA 版本: v1.0