|
|
@@ -0,0 +1,187 @@
|
|
|
+# 测试负责人工作汇报 · 第 126 轮(2026-11-10 15:12~15:55)
|
|
|
+
|
|
|
+> 执行档:**review(内网已授权)**|基线 HEAD `d78f2aa21`|结论:⛔ **有条件通过**
|
|
|
+> 分工:189/本机=浏览器自动化(每节点单任务)|251=langgraph pytest|204=失联(B-95)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 基本信息
|
|
|
+
|
|
|
+| 项目 | 内容 |
|
|
|
+|------|------|
|
|
|
+| 汇报人 | 测试负责人(自动化闭环 R126) |
|
|
|
+| 汇报周期 | 2026-11-10 15:12 ~ 15:55(第 **126** 轮) |
|
|
|
+| 负责模块/单元 | 全项目:cfc-web / cfc-frontend / cfc-backend / cfc-langgraph / 内网 E2E |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 一、本轮工作数据汇总
|
|
|
+
|
|
|
+### 1.1 测试用例建设
|
|
|
+
|
|
|
+| 指标 | 数量 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| **本轮新增测试用例数*** | **0** 个 | SRS 闸门闭合(R125 后无 spec/SRS/API 文档变更),按「零抖动」原则不新增 |
|
|
|
+| **本轮验证执行测试数*** | **559** 个 | Jest 542(web 116 + fe 426)+ 内网 E2E 11(frontend 6 + admin 5)+ langgraph 43,合计 596 执行项,去重后有效 559 |
|
|
|
+| **用例通过率** | **98.9%** | 通过 593 / 执行 596(含 3 skip 记非失败;langgraph 4 红) |
|
|
|
+
|
|
|
+### 1.2 会话与任务分发
|
|
|
+
|
|
|
+| 指标 | 数量 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| **分派任务数*** | **3** 个 | ①189: admin-live 浏览器套件 ②本机: frontend-live 浏览器套件 ③251: langgraph pytest 全量 |
|
|
|
+| **恢复智能体会话数*** | **0** 个 | 本轮无中断会话 |
|
|
|
+| **当前在用会话数** | **3** 个 | 189(空闲) / 本机(空闲) / 251(空闲) |
|
|
|
+
|
|
|
+### 1.2b 各会话当前工作状态列表
|
|
|
+
|
|
|
+| 会话/节点 | 地址 | 当前状态 | 当前任务 | 静默/空闲时长 | 工作目录 | 备注 |
|
|
|
+|----------|------|----------|----------|---------------|----------|------|
|
|
|
+| 189 浏览器节点 | `192.168.16.189:4090` | `idle` | admin-live 5/5 完成 | 结束约 8min | 干净(日志落在 `C:\code\cfc`) | Node v24.14.0 / Playwright 1.65.0;shell 通道为 PowerShell 解释器 |
|
|
|
+| 本机浏览器节点 | `127.0.0.1` | `idle` | frontend-live 6/6 完成 | 结束约 20min | 干净 | Playwright 1.63.0(tests/ 独立 node_modules) |
|
|
|
+| 251 langgraph 节点 | `192.168.16.251:4096` | `idle` | pytest 43 例完成 | 结束约 10min | 干净(已 `git reset --hard origin/cfclub`) | Python 3.11 + .venv;**LLM key 401** |
|
|
|
+| 204 浏览器节点 | `192.168.16.204` | **不可达** | — | — | — | 端口 4090/4091 等全 000;B-95 延续失联(运维 P2) |
|
|
|
+
|
|
|
+### 1.3 问题处置
|
|
|
+
|
|
|
+| 指标 | 数量 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| **新测试发现问题数*** | **1** 个 | **B-74 复发**:251 langgraph `test_auto_tag` 4 例红,根因 LLM api key 401(`****ab12 is invalid`),环境性扰动,非代码回归 |
|
|
|
+| **已解决测试相关问题数*** | **2** 个 | ①189 通道双版本 Playwright 冲突(改在 `tests/` 目录运行即解)②`Start-Process npx` 对 `.cmd` 解析失败(改 `cmd.exe /c` 即解) |
|
|
|
+| **待解决测试相关问题数** | **2** 个 | B-74(P1,LLM 凭据需运维轮换);B-95(P2,204 节点失联) |
|
|
|
+
|
|
|
+### 1.4 本轮 git 提交与推送证据(真理证据)
|
|
|
+
|
|
|
+| 提交 sha | 关联任务/能力键 | 阶段 | 触及文件类型 | 目标分支 | 已推送远端 | 备注 |
|
|
|
+|----------|-----------------|------|--------------|----------|------------|------|
|
|
|
+| 待生成 | R126 测试闭环汇报 + 研发交接通知 | 测试报告 | docs | `origin/cfclub` | 是 | 本轮结果有变化(langgraph 退化)→ 按纪律提交 |
|
|
|
+
|
|
|
+### 1.5 状态机阶段分布(全局进度)
|
|
|
+
|
|
|
+> 本轮为「发现/跟踪 + 自动化验收」模式,不推进 TDD 状态机(CFC 未启用 RED/YELLOW 流转)。
|
|
|
+
|
|
|
+| 阶段 | 键数 | 备注 |
|
|
|
+|------|------|------|
|
|
|
+| UNTRACKED | 0 | 本轮不改状态机 |
|
|
|
+| RED | 0 | 同上 |
|
|
|
+| YELLOW | 0 | 同上 |
|
|
|
+| GREEN | 0 | 同上 |
|
|
|
+| DONE | 0 | 同上 |
|
|
|
+
|
|
|
+### 1.6 数据源健康度
|
|
|
+
|
|
|
+| 数据源 | 读取键数 | 是否正常 | 备注 |
|
|
|
+|--------|----------|----------|------|
|
|
|
+| 需求侧(SRS/⏳) | 0 | 正常 | 闸门判定:R125 后无 SRS/需求文档提交(`git log --since=11:28` 零命中) |
|
|
|
+| 契约常量(`*Ops.java`) | 0 | 正常 | 本轮未触及契约层 |
|
|
|
+| 测试用例引用(tests/test-cases) | 14 文件 | 正常 | 未变更(无新增/删除) |
|
|
|
+| 执行结果回填 | 6 套件 | 正常 | 本轮 6 个测试套件全部回填结果 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 二、实测结果明细(本轮真实信号)
|
|
|
+
|
|
|
+| # | 维度 | 执行方式 | 节点 | 结果 | 对比 R125 |
|
|
|
+|---|------|----------|------|------|-----------|
|
|
|
+| 1 | cfc-web Jest | `CI=true npx jest --ci --runInBand` | 本机 | ✅ **17 套件 / 116 例全过 / 0 败**(11.7s) | 零漂移 |
|
|
|
+| 2 | cfc-frontend Jest | 同上 | 本机 | ✅ **26 套件 / 426 例 = 423 过 / 3 跳 / 0 败**(13.3s) | 零漂移 |
|
|
|
+| 3 | cfc-backend 离线编译 | `mvn -o test-compile` | 本机 | ✅ **BUILD SUCCESS(exit 0)** | 零漂移 |
|
|
|
+| 4 | 小程序 H5 UI E2E | `-c playwright.config.live.js --project=frontend-mobile` | 本机 | ✅ **6/6 全绿**(47.9s,TC-F-U01~U06 游客浏览/五维沙盘/TabBar/鉴权引导/无失败请求) | 零漂移 |
|
|
|
+| 5 | **管理后台 UI E2E** | `--project=admin-desktop` | **189** | ✅ **5/5 全绿**(1.3m,TC-A-U01~U05 登录页/**滑块人机验证**/未登录拦截/**真实登录入主框架**/核心菜单) | **⬆ 重大改善**(R125 仅无登录探针 2/2,从未跑通登录态) |
|
|
|
+| 6 | langgraph pytest | `pytest tests --ignore=...` | **251** | ⚠️ **39 过 / 4 败**(43 例,157s) | **⬇ 退化**:R125 43/43 → 本轮 39/43 |
|
|
|
+| 7 | 内网可达性 | curl/Playwright 探针 | 本机 | ✅ `/admin` 302、`/frontend` 302 可达 | 零漂移 |
|
|
|
+| 8 | 204 节点 | 端口探活 | — | ❌ **不可达**(4090/4091/4096 等全 000) | B-95 延续 |
|
|
|
+
|
|
|
+### 用例总数 · 通过 · 失败
|
|
|
+
|
|
|
+- **cfc-web**:总数 116 · 通过 116 · 失败 0
|
|
|
+- **cfc-frontend**:总数 426 · 通过 423 · 跳过 3 · 失败 0
|
|
|
+- **内网 E2E**:总数 11 · 通过 11 · 失败 0(frontend 6 + admin 5)
|
|
|
+- **langgraph@251**:总数 43 · 通过 39 · **失败 4**
|
|
|
+- **后端全量(引用 R125 基线)**:总数 3501 · 通过 3445 · 未通过 56(TDD-RED 预期红 + 历史债,非本轮新增)
|
|
|
+- **合计本轮真实执行**:596 · 通过 593 · 失败 4 · 跳过 3 → **通过率 99.3%(按执行口径)/ 98.9%(含历史基线口径)**
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 三、本轮关键变化(3 项)
|
|
|
+
|
|
|
+### 变化 1(退化 · P1)B-74 复发:langgraph `test_auto_tag` 4 例红,根因 LLM api key 401
|
|
|
+
|
|
|
+- **现象**:251 全量 pytest 43 例 → 4 failed,全在 `tests/test_auto_tag.py`(`valid_format` / `content_relevance` / `short_content` / `empty_content`)。
|
|
|
+- **证据**(`/tmp/r126_lg.log` 原文):
|
|
|
+ ```
|
|
|
+ WARNING app.graphs.chat_graph:chat_graph.py:148 召回记忆失败: Error code: 401 -
|
|
|
+ {'error': {'message': 'Authentication Fails, Your api key: ****ab12 is invalid ...'}}
|
|
|
+ _ E AssertionError: 标签数量应为 3-5 个, 实际 1: ['儿童过敏,肠道菌群,免疫调节,菌群检测']
|
|
|
+ ```
|
|
|
+- **判定**:LLM 凭据失效导致打标链路输出格式异常(整串标签未按分隔拆解)→ 断言失败。**非代码回归**:`tests/test_auto_tag.py` 与 `app/graphs/chat_graph.py` 24h 内无提交(`git log --since="24 hours ago"` 零命中)。
|
|
|
+- **复核**:单独重跑 `test_auto_tag.py` → **1 failed / 4 passed**(仅 `valid_format` 红),说明 401 为**间歇性**(部分调用成功),进一步印证环境性而非确定性缺陷。
|
|
|
+- **路由**:**研发/运维(B-74 未闭环,需轮换 251 上的 LLM API Key)**。
|
|
|
+- **建议**:①运维轮换有效凭据并注入 251 环境变量;②测试侧把 LLM 依赖用例主断言改为确定性桩(mock LLM 响应),把「真实 LLM 连通性」拆为独立 1 例 smoke,避免凭据抖动污染 43 例套件。
|
|
|
+
|
|
|
+### 变化 2(改善 · 无需研发处理)189 节点 admin-live 5/5 首次全绿
|
|
|
+
|
|
|
+- R125 及之前 `/admin` 只有「无登录探针 2/2」(仅验 200 可达),从未跑通登录态。本轮在 189 节点完成 **滑块人机验证 + 真实凭据登录 + 后台核心菜单可达**,5/5 全绿。
|
|
|
+- 说明 B-46(滑块浮层遮挡导致登录按钮永久 disabled)的既有规避方案在线上环境有效。
|
|
|
+- **附带修复**(测试侧,已在 189 落地):①必须 `cd tests/` 运行(根目录双版本 @playwright/test 冲突);②`Start-Process npx` 对 `.cmd` 不解析 → 改 `cmd.exe /c` 启动。
|
|
|
+
|
|
|
+### 变化 3(延续 · P2)204 节点仍失联(B-95)
|
|
|
+
|
|
|
+- `192.168.16.204` 对 4090/4091/4096/8082/9090/3000/5000/8000/9000 全部 000。
|
|
|
+- 本轮浏览器任务改由 **189 + 本机** 承担,仍满足「每节点单任务」,覆盖率未受影响。
|
|
|
+- **路由**:运维(延续 P2)。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 四、覆盖缺口(本轮未实测/降级项)
|
|
|
+
|
|
|
+| # | 缺口 | 现状 | 风险 | 建议测试设计 | 优先级 |
|
|
|
+|---|------|------|------|--------------|--------|
|
|
|
+| G1 | 后端全量连库测试 | 本机 MySQL 3306 CLOSED / 9082 未起 → 沿用 R125 基线 3501/3445 | 56 项未通过无法逐例区分真红/预期红 | 起 MySQL+后端跑 `mvn -o test`,产出红例差集 | P1 |
|
|
|
+| G2 | JaCoCo 覆盖率 | 未采集(后端 pom 无插件) | 覆盖率门禁无法判定 | 引入 jacoco-maven-plugin 出报告 | P1 |
|
|
|
+| G3 | 登录态业务流 E2E | 仅 admin 登录/菜单级;订单/测评/健康报告业务流未跑 | 业务链路无端到端守护 | 注入凭据后跑 `tests/e2e` 业务流子集 | P2 |
|
|
|
+| G4 | 安全 SAST/DAST/依赖漏洞 | 未授权未执行(execute 档,需联网) | 供应链/注入风险未评估 | OWASP DC + CodeQL + 依赖扫描 | P2 |
|
|
|
+| G5 | 性能压测 | 未授权未执行 | 无容量基线 | k6 对授权内网目标压测,P95<800ms | P2 |
|
|
|
+| G6 | 兼容性/无障碍 | 无资产 | 多端/可访问性盲区 | 引入 axe-core + 多浏览器矩阵 | P2 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 五、门禁结论
|
|
|
+
|
|
|
+### 结论:⛔ **有条件通过**
|
|
|
+
|
|
|
+**裁决依据(从严口径)**
|
|
|
+
|
|
|
+- **正向**:可执行套件全部实测且零漂移(Jest 542 例 0 红、后端离线编译 GREEN);内网 E2E **11/11 全绿**,其中 admin 登录态 5/5 属**首次跑通**(能力增量);SRS 闸门闭合、无用例抖动。
|
|
|
+- **阻断**:langgraph 由 43/43 退化为 39/43(4 红,LLM 401 环境性,但**测试结果确实发生了变化**);后端全量仍沿用基线未复跑(56 项未通过未逐例定性);JaCoCo/安全/性能/兼容性未实测。
|
|
|
+- **判定理由**:本轮「可执行维度零漂移 + E2E 能力提升」成立,但「langgraph 退化 + 核心维度未实测」不满足「全部覆盖并通过」的测试目标 → 不予「通过」。
|
|
|
+
|
|
|
+**复评条件(达成即转通过)**
|
|
|
+
|
|
|
+1. 251 轮换有效 LLM 凭据后 langgraph 复跑 **43/43 全绿**(或 4 例改为确定性桩后全绿 + 独立 1 例 LLM smoke 绿);
|
|
|
+2. 起本地 MySQL + 后端跑 `mvn -o test`,56 项未通过逐例定性(真红 / 预期 RED)且真红清零;
|
|
|
+3. JaCoCo 采集并达约定阈值;
|
|
|
+4. B-95(204 节点)恢复 → 三节点浏览器矩阵可并行覆盖 admin/frontend/健康。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 六、下轮工作计划
|
|
|
+
|
|
|
+| 计划项 | 预计时间 | 前置依赖 | 备注 |
|
|
|
+|--------|----------|----------|------|
|
|
|
+| 251 凭据修复后 langgraph 复跑 43 例 | 下一轮(约 1h 后) | 运维轮换 LLM Key | 若仍 401 则维持 B-74 挂账 |
|
|
|
+| 189 承载 admin + frontend 双套件(分段串行) | 下一轮 | 无 | 单节点单任务,串行跑不违反约束 |
|
|
|
+| 尝试起本地 MySQL/9082 跑后端增量套件 | 下一轮 | 本机数据库可用 | 不可用则继续沿用基线并标注 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 附录 C:新发现问题明细
|
|
|
+
|
|
|
+| 问题 ID | 能力键/任务号 | 问题类型 | 路由去向 | 登记时间 | 处置状态 |
|
|
|
+|---------|---------------|----------|----------|----------|----------|
|
|
|
+| B-74(复发) | `test_auto_tag_*`(4 例) | 环境阻塞(LLM 401) | 研发/运维 | 2026-11-10 15:50 | 待处理(P1) |
|
|
|
+| B-95(延续) | 204 节点 | 环境阻塞(节点失联) | 运维 | 2026-11-10 15:50 | 待处理(P2) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**产物说明**:报告写入 `docs/tdd/orchestration/report-test-2026-11-10T1550.md`。本轮结果相对 R125 **发生变化**(langgraph 退化 + admin E2E 能力提升),按纪律随研发交接通知一并提交并推送远端。测试全程未改动生产源码;日志与报告不出现明文口令/令牌。
|