report-test-2026-11-10-R129.md 15 KB

测试负责人工作汇报 · 第 129 轮(2026-11-10 19:05~19:4x)

执行档:review(内网 cfc.iwintrue.com/admin + /frontend 已授权浏览器自动化;langgraph@251 分派;未联网装依赖) 基线 HEAD:ada6cb7a8(= origin/cfclub,跑测期间分支/HEAD 未漂移) 分工:189=admin-desktop 浏览器套件|本机=frontend-mobile/shop-api/health 浏览器套件 + Jest|251=langgraph pytest(分派)|204=失联(B-95) 结论:⛔ 不通过(有条件) — 核心三项延续:G2 红例 / G9 锚点低 / G11 无 CI;langgraph LLM 配额 429 复发


1. 历史审查记录(仅作对照,不作为本轮结论依据)

轮次 时间 后端全量 langgraph 浏览器 结论
R126 11-10 15:50 2865/33 红 39/43(B-74 401 复发) 189 admin 5/5 有条件通过
R127 11-10 17:30 2865/2828/33 红 43/43 全绿 189 admin 5/5 不通过(有条件)
R128 11-10 18:08 2865/2828/33 红 43/43 全绿 189 admin 5/5 + 本机 fe 6/6 不通过(有条件)
R129(本轮) 11-10 19:4x 2865/2828/33 红(零漂移) ⚠️ 首跑 35/43 → 重跑 37/43(均 429 rate limit,复发确认) 189 admin 5/5 + 本机 fe 6/6 + shop 4/4 + health 13/13 全绿 不通过(有条件)
  • 本轮为该对象第 129 轮持续闭环审查,非首次。
  • 与 R128 对比:后端逐例零漂移(33 红例集合一致)→ 研发窗口内无后端源码变更。
  • B-74 复发确认(429 变体):R126 为 LLM 401(api key 失效)→ R127/R128 连续 2 轮 43/43 未复现(按纪律销号)→ R129 首跑 8 红、重跑 6 红,错误码均 429(You've reached the API rate limit for free users (AgnesAI_error))→ 结论:根因从凭据失效演化为上游配额/限流,属环境性失败,非代码回归;重跑后 auto_tag 4→2 红(endpoint_responds/valid_format 偶发转绿),intent 4 例稳定红 → 配额窗口波动特征。
  • SRS / 用户场景 / 测试用例零变更(git log 窗口内无 hits)→ 按纪律本轮不更新用例(合规,G12 ✅)。

2. 项目画像速览

  • 业务:浠艾福 XAF —— 家庭教育 SaaS(家庭成员/五维能量/成长规划师/健康报告/商城分佣/AI 管家)。
  • 技术栈:cfc-backend(Spring Boot 2.7.18 + MyBatis-Plus + Java 8,9082)· cfc-web(Vue2 + ElementUI)· cfc-frontend(uni-app H5/小程序)· cfc-langgraph(FastAPI + LangGraph + Chroma,9000,部署 192.168.16.251)· dan/danshop(独立商城 8888)。
  • 关键路径:登录/家庭邀请 → 五维测评 → 成长任务 → 健康报告上传解析 → 商城下单分佣(CF)→ AI 对话。
  • 测试现状:后端 339 测试类 / 2865 例(全量可跑);前端 Jest 17+26 套件;浏览器 live 套件 28 例;langgraph 43 例。
  • 质量目标:20 类全覆盖、G1≥95%、G2≤10 红、G6 28/28、G7 0 红、G9≥80%。
  • 风险点:后端 33 红长期未闭环;LLM 上游配额不稳(401→429);204 节点失联;无 CI 全量门禁;B-90 langgraph live chat 挂死。

3. 20 类测试覆盖矩阵(三态:已实测 / 未发现 / 待核实)

# 测试类型 状态 证据
1 单元测试 ✅ 已实测 后端 339 类 2865 例(surefire);web 116;fe 426
2 组件测试 ✅ 已实测 Vue shallowMount 组件用例(Families/AuditDetailDrawer 等)
3 接口 API 测试 ✅ 已实测 后端 364 Controller MockMvc/直调;线上 4 端点鉴权探针 401
4 集成测试 ✅ 已实测 integration.* 实跑(EnergySystem 6×500 / GrowthRecordSync 3 / GuideModule 1 / DimensionMap 3 红,与 R128 一致)
5 系统/端到端 E2E ✅ 已实测 浏览器 live 28/28(admin 5 / frontend 6 / shop 4 / health 13)
6 冒烟测试 ✅ 已实测 浏览器 28 例 + Jest 全绿即冒烟面
7 回归测试 ✅ 已实测 后端与 R128 逐字段零漂移;web/fe 零漂移
8 探索性测试 ⚠️ 待核实 本轮仅定向探针(鉴权 4 端点 + langgraph live),无 chartered 探索会话
9 验收 UAT / BDD ⚠️ 待核实 无 BDD(cucumber/gherkin)执行证据
10 性能测试 ⛔ 未授权未执行 压测属 execute 档(需联网授权),本轮未做
11 可靠性测试 ⚠️ 待核实 无混沌/恢复演练;仅观察 B-90/429 波动窗口
12 安全测试(SAST/DAST/SCA/渗透) ⛔ 未授权未执行 依赖漏洞扫描/DAST 需联网;仅剩静态项
13 兼容性测试 ⚠️ 待核实 仅 Chromium 单浏览器;无多浏览器矩阵
14 可用性测试 ⚠️ 待核实 无真实用户可用性证据
15 无障碍测试 ⚠️ 待核实 无 axe/WCAG 扫描
16 覆盖率度量 ⚠️ 已实测(低) cfc-web 语句 10.09% / 分支 6.12% / 函数 7.50% / 行 9.97%;后端 JaCoCo 未接入
17 变异测试 ⛔ 未发现 无 PIT/mutation 资产
18 契约测试 ✅ 已实测 鉴权契约 4/4 401;健康契约 13/13 401;商城排序契约 4/4
19 QA 流程 ⚠️ 待核实 129 轮闭环可追溯;门禁未脚本化(G11)
20 全项目代码审查 ⚠️ 待核实 本轮仅规范扫描(@GetMapping 违例延续),未跑全量静态审查

4. 实测结果明细(本轮真实信号,全部节点实跑)

# 维度 命令/方式 节点 结果
1 后端全量 surefire 汇总(R129 首跑) 本机 339 类 / 2865 例 / 2828 过 / 33 红 / 98.85%;红例集合与 R128 完全一致(CfCommission 8 / EnergySystem 6 / ArticleAutoTag 4 / GrowthRecordSync 3 / DimensionMap 3 + 散例 9)
2 cfc-web Jest CI=true npx jest --ci --runInBand --coverage 本机 ✅ 17 套件 / 116 例全绿(87s);覆盖率 stmt 10.09% / branch 6.12% / func 7.50% / line 9.97%
3 cfc-frontend Jest CI=true npx jest --ci --runInBand 本机 ✅ 26 套件 / 426 例 = 423 过 / 3 skip / 0 红(25s)
4 根级黑盒 Jest npx jest -c tests/jest.config.js --ci 本机 ⚠️ 23 例 = 7 过 / 16 红(ECONNREFUSED 9082 未启,B-36 延续)
5 管理端 UI E2E playwright -c live --project=admin-desktop 189 ✅ 5/5(1.3m,TC-A-U01~U05 含滑块+真实登录入主框架)
6 小程序 H5 E2E --project=frontend-mobile 本机 ✅ 6/6(49s,TC-F-U01~U06)
7 商城排序契约 --project=shop-api 本机 ✅ 4/4(6.3s,TC-S-U01~U04)
8 健康鉴权契约 -c playwright.config.health.js 本机 ✅ 13/13(4.9s,全部 401)
9 线上鉴权探针 curl -X POST 4 端点匿名 本机 ✅ 4/4 = 401(B-69 维持销号)
10 langgraph pytest 251 POST /api/shell 实派(tee 落盘) 251 ⚠️ 首跑 35/43(8 FAILED)→ 重跑 37/43(6 FAILED,120.03s),两跑失败全为 LLM 用例(429),PYTEST_EXIT=124(B-126 再现)
11 langgraph live POST /api/v1/chat(整数 schema + 90s cap) 本机→251 ❌ chat 90s HTTP 000 零字节 → B-90 延续(第 9 轮);/health ok、错误 schema 返 422(服务存活,LLM 链路挂死)
12 节点探活 curl 4 节点 251:4096=200 / 251:9000={"status":"ok"} / 189:4090=200 / 204:4090=000(B-95 延续)

langgraph 重跑详情(/tmp/r129b_pytest.log,120.03s,6 FAILED):

  • tests/test_auto_tag.py 2 例:short_content / empty_content(首跑另含 endpoint_responds/valid_format,本次转绿 → 配额波动)
  • tests/test_intent.py 4 例:classify_analysis / classify_recommend / classify_mind / classify_health(两次一致红)
  • 日志关键行(两次同源):intent_classifier.py:62 意图分类失败: Error code: 429 - ... You've reached the API rate limit for free users. Upgrade to a Token Plan ... (AgnesAI_error), 默认 chat
  • PYTEST_EXIT=124:测试 120s 完成但解释器未退出(JavaClient._get_client coroutine never awaited 警告 + 挂起线程),被 timeout 1500 杀 → B-126 第 2 轮再现
  • 归类:LLM 上游配额 429(环境性),非代码回归(test/chat 源码窗口内零 commit);auto_tag 4→2 红印证配额窗口波动。

5. 覆盖缺口清单(新增/变更)

# 缺口类型 现状 风险 建议测试设计 优先级 闭环方式
G1 LLM 外部依赖不稳 401→429 波动,LLM 用例红数随上游配额漂移 红线误判为回归 红例与 LLM 探针绑定:429/401 一律标「环境红」并重跑确认 P0 运维确认 Token 计划/配额;重跑全量取证
G2 后端 33 红 14 例产品类已登记待研发闭环;integration 类需连库 产品回归无法区分 已有脚本跟踪逐轮集合对比(本轮零漂移) P0 研发逐类修复,连续 2 轮绿才销号
G9 锚点率 TC 827 行 / 指向可执行用例 82(9.9%) 用例→代码追溯弱 口径与 B-124 对齐(本轮沿用可复算口径) P2 研发补锚点
G11 CI 全量门禁 无 CI 跑全量 回归无法自动拦截 落地 CI 全量 job(需联网建管道,未授权) P1 研发/运维
G10 浏览器双节点 189+本机 11/11 全绿(第 4 轮) 204 失联无冗余 204 恢复前保持双节点拆跑 P2 运维恢复 204
G12 用例更新纪律 SRS/场景零变更 → 未新增用例 — 变更触发用例更新流程(合规) — 已满足

6. 域结论表

审查维度 负责专家 结论 关键证据
单元·组件级 苏雅 基本可用 后端 2865 例可跑、web 116 / fe 426 全绿;变异测试缺失
集成·接口级 柯砚 有缺口 integration 红类与 R128 零漂移;契约 21/21 绿
系统·验收级 白樾 ✅ 本轮绿 浏览器 live 28/28 全绿(189+本机);UAT/BDD 证据缺
测试保障级 闻朔 ✅ 零回归 后端逐例零漂移;web/fe 零漂移
性能·可靠性 骆骋 未授权未执行 压测未做;B-90 挂死观察中
安全 关屿 静态趋稳 + 动态缺失 鉴权 4/4 401;SAST/DAST/SCA 未授权未执行
兼容·体验 阮清 待核实 单 Chromium;无可用性/无障碍证据
流程·度量·代码 何序 有缺口 锚点 9.9%;无 CI;QA 流程 129 轮可追溯
langgraph 专项(251 分派) 陆谨汇总 ⚠️ 待重跑确认 首跑 35/43(429 环境红 8);重跑中

7. 五要素问题清单

P7-1 langgraph LLM 限流 429(B-74 复发确认 / B-129 新观察)

  1. 问题描述:251 langgraph pytest 首跑 8 例失败(auto_tag 4 + intent 4)、重跑 6 例失败(auto_tag 2 + intent 4),日志为 Error code: 429 - API rate limit for free users (AgnesAI_error);R126 同组用例为 401,R127/R128 全绿。重跑后 auto_tag 2 例转绿 → 配额窗口波动。
  2. 测试 bug 点:cfc-langgraph/tests/test_auto_tag.py(short/empty_content)、tests/test_intent.py::test_classify_*(4 例);源码 app/agents/intent_classifier.py:62 捕获异常后默认 chat。
  3. 最优修改方案:① 运维升级 251 LLM Token 计划或更换配额充足凭据;② 测试侧:LLM 依赖用例标记 @pytest.mark.llm,CI 抽为独立非门禁套件;断言侧为 401/429 提供明确环境异常标记(当前 assert Intent.CHAT == Intent.HEALTH 掩盖根因)。
  4. 修改目的:杜绝「上游配额波动」被误判为「产品回归」;保持 G2 红线仅统计真实代码缺陷。
  5. 闭环方式:运维换凭据/升级计划后 251 重跑全量 43 例,连续 2 轮全绿即销号;本轮连续两跑 429 为复发确认证据(第一轮)。

P7-2 B-90 langgraph live chat 90s 零字节(第 9 轮延续)

  1. 问题描述:正确 schema(query/user_id 整数)POST /api/v1/chat → HTTP 000、90s 零字节;/health 200、错误 schema 422 → 服务存活仅 LLM 链路挂死。
  2. 测试 bug 点:langgraph app/routers/*.py chat 端点(LLM 调用段)。
  3. 最优修改方案:研发在 chat 端点 LLM 调用处包超时熔断(如 30s cap + 降级文案),并补该路径集成测试。
  4. 修改目的:防止生产对话静默挂死(影响 AI 管家核心路径)。
  5. 闭环方式:修复后线上 chat 探针 3 次 <10s 返回正文即闭环。

P7-3 后端 33 红(G2,延续)

  1. 问题描述:2865 例中 33 红(CfCommission 8 / EnergySystem 6 / ArticleAutoTag 4 / GrowthRecordSync 3 / DimensionMap 3 + 散例 9),与 R128 零漂移。
  2. 测试 bug 点:红例列表见 .tdd/_r129_red_list.txt。
  3. 最优修改方案:研发按登记顺序逐类修复,优先产品类 14 例;integration 类需本机起 MySQL+9082 区分真红/环境红。
  4. 修改目的:G2≤10 红门禁达成。
  5. 闭环方式:每类修复后复跑该类用例 + 全量回归,连续 2 轮绿销号。

P7-4 根级黑盒 16 红(B-36,延续)

  1. 问题描述:npx jest -c tests/jest.config.js → 7 过 / 16 红,全为 ECONNREFUSED 127.0.0.1:9082。
  2. 测试 bug 点:tests/jest.config.js 挂测对象(mini-game 13 + plan-chain 3)。
  3. 最优修改方案:起本机 9082 后重跑以区分真红/环境红(R126 起连续轮沿用)。
  4. 修改目的:消除环境噪声对红例统计的干扰。
  5. 闭环方式:3082/9082 探针 + 重跑 23 例。

8. 门禁结论

⛔ 不通过(有条件)

门禁 阈值 本轮 判定
G1 全量通过率 ≥95% 后端 98.85%(零漂移) ✅
G2 红例数 ≤10 后端 33(零漂移)+ 根级 16 + langgraph 6(环境 429) ❌
G6 浏览器硬契约 28/28 28/28 全绿 ✅
G7 契约/鉴权 0 红 21/21 绿 + 4/4 401 ✅
G9 锚点率 ≥80% 9.9% ❌
G11 CI 全量 有 无 ❌

正向:浏览器 live 28/28 全绿(189 admin 5/5 + 本机 fe 6/6 + shop 4/4 + health 13/13);web/fe Jest 542 例零红;后端零漂移;B-69 鉴权 4/4 维持;B-122/189 节点能力第 4 轮稳定。 阻断:① langgraph LLM 429 复发确认(首跑 8 红 / 重跑 6 红,均环境红);② G2 红例存量;③ G9/G11 长期不达标;④ B-90 挂死第 9 轮;⑤ B-126(解释器不退出)第 2 轮。

复评条件:① 运维升级/轮换 LLM 凭据后 251 连跑 2 轮全绿 → B-74/B-129 销号;② 研发修 B-126(pytest 结束显式 exit / 去 JavaClient 挂起);③ 后端红例逐类修复闭环;④ 204 节点恢复或降级登记。


9. 下一步(R130 重点)

  1. 回归验证 langgraph 43 例(基于本轮重跑基线)
  2. 推动运维:LLM 配额(429)/ 204 节点 / B-90 挂死
  3. 推动研发:后端 33 红逐类修复(G2)
  4. 浏览器双节点(189+本机)继续并行,维持 28/28