|
|
@@ -0,0 +1,193 @@
|
|
|
+# 自动化运行证据(第 89 轮 · 2026-11-08 15:30 ~ 16:25)
|
|
|
+
|
|
|
+> 触发:定时自动化「作为测试负责人执行自动化测试闭环(全部用例通过 + 覆盖 SRS/场景 + 浏览器走 cfc.iwintrue.com + langgraph 派 251)」。
|
|
|
+> 执行档:`review`(离线)——不联网装依赖、不启停服务、不改生产代码;本轮**未改任何测试文件**(仅复跑验证 R88 定向修复)。
|
|
|
+> 基线:`cfclub` @ `547c64e01`(= `origin/cfclub`,含 R88 后 2 个上游提交:`a17220c6c` hub 迁移方案文档、`547c64e01` chore bump)。
|
|
|
+> 工作区:已跟踪文件 **0 修改**(`git status --porcelain | grep -v '^??'` = 0)→ 各套件直接在本工作区跑,无需隔离树。
|
|
|
+> 原始日志:`_mvn_r89_backend.log`(后端全量)· `_jest_frontend_r89.log` / `_jest_web_r89.log`(Jest)· `_pytest_lg_r89.log`(langgraph)· `_e2e_{admin,frontend,shop,health}_r89.log`(浏览器 E2E)· `_r89_agg.json`(后端聚合)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 1. 实测结果总表
|
|
|
+
|
|
|
+| 套件 | 命令 | 结果 | 通过率 | 退出码 |
|
|
|
+|---|---|---|---|---|
|
|
|
+| cfc-backend(全量单元+集成) | `mvn -o -B test`(JDK1.8.0_25 + Maven 3.6.1) | **311 类 / 2628 例 / 35F / 31E / 4S → 2558 过** | **97.34%** | 1(有红) |
|
|
|
+| cfc-frontend(Jest) | `npx jest --silent` | 21 suites · 354 passed / 1 skipped / 355 | 99.72% | 0 |
|
|
|
+| cfc-web(Jest,研发实现合入后复跑) | `npx jest --silent`(v2) | 17 suites · **116 passed / 116** | 100% | 0 |
|
|
|
+| cfc-langgraph(pytest,本机 venv py3.12) | `.venv/Scripts/python.exe -m pytest tests/ --ignore=tests/qna` | 44 collected · **32 passed / 12 failed** | 72.73% | 1 |
|
|
|
+| admin-desktop(E2E 真浏览器) | `npx playwright test -c playwright.config.live.js --project=admin-desktop` | **5 passed**(TC-A-U01~U05) | 100% | 0 |
|
|
|
+| frontend-mobile(E2E 真浏览器) | `... --project=frontend-mobile` | **6 passed**(TC-F-U01~U06) | 100% | 0 |
|
|
|
+| shop-api(E2E 契约) | `... --project=shop-api` | **4 passed**(TC-S-U01~U04) | 100% | 0 |
|
|
|
+| health-contract(E2E 契约) | `npx playwright test -c playwright.config.health.js` | **13 passed**(TC-H-U01~U10 + TC-HP-U01~U03) | 100% | 0 |
|
|
|
+
|
|
|
+**合计 3171 例 / 3088 过 = 97.38%**(剔除 5 skip 后 97.54%);红例 78(后端 66 + langgraph 12)。
|
|
|
+
|
|
|
+### 1.1 后端关键度量
|
|
|
+
|
|
|
+| 指标 | 值 | 说明 |
|
|
|
+|---|---|---|
|
|
|
+| 测试类 / 用例 | 311 / 2628 | surefire XML 实测,含参数化展开 |
|
|
|
+| 失败 / 错误 / 跳过 | 35 / 31 / 4 | `@Disabled` 4 例 |
|
|
|
+| 红类 / 红例 | 24 / 66 | 逐类见 §3 |
|
|
|
+| 完整性 | **311/311 XML** | 无静默丢失、无 0 字节 XML |
|
|
|
+| Maven 总时长 | **44:39** | XML 耗时总和 2515.5s |
|
|
|
+
|
|
|
+### 1.2 与上轮基线对比(重要:方向性改善)
|
|
|
+
|
|
|
+| 项 | R88 实测 | 本轮 R89 实测 | Δ |
|
|
|
+|---|---|---|---|
|
|
|
+| 后端用例 | 2628 | 2628 | 0 |
|
|
|
+| 后端通过率 | 97.03% | **97.34%** | **+0.31pp** |
|
|
|
+| 后端红例 | 74 | **66** | **−8** |
|
|
|
+| 后端红类 | 27 | **24** | **−3** |
|
|
|
+| cfc-web 用例 | 90 | 116 | **+26**(研发新增契约测试) |
|
|
|
+| cfc-web 红例 | 0 | 0(复跑确认) | **21 红 → 0**(研发实现合入后全绿) |
|
|
|
+| 浏览器 E2E | 28/28 | **28/28** | 0(零回归) |
|
|
|
+| langgraph | 32/44 | **32/44** | 0(B-54/B-65 持续) |
|
|
|
+
|
|
|
+> **本轮核心变化(测试结果有变化,需通知研发)**:
|
|
|
+> 1. **后端 −8 红**:R88 §6.1 定向复跑修复的 3 个契约红类(`GuideFamilyTaskControllerTest` 5 + `GuideRolePermissionTest` 2 + `FamilyControllerTest` 1 = 8),本轮**全量 clean 复跑正式确认转绿**——R88 的预测(74→66、97.03%→97.34%)**精确兑现**,「定向绿不入基线」纪律解除,8 例可入台账。
|
|
|
+> 2. **cfc-web +26 例契约测试 · 研发实现已闭环**:研发于 13:51~14:17 合入 5 个 TDD-RED 契约 spec(S-cfc-72~76),R88 基线(`49d7bccac`)**不含**这些 spec,故 R88 显示 90/90;本轮按新基线测得 116 例。**首跑(合入前基线)21 红(TDD-RED 预期红,原 90 例零回归)→ 研发窗口内合入实现(`e777224fc` S-cfc-77 + `ef3e81fec` S-cfc-78)→ 复跑确认 116/116 全绿**,S-cfc-72~76 契约全部闭环。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 2. 环境与节点分派实测
|
|
|
+
|
|
|
+| 目标 | 结果 | 说明 |
|
|
|
+|---|---|---|
|
|
|
+| cfc.iwintrue.com:443 | OPEN | `/admin` 200;`/frontend` 200(本轮用 `LIVE_BASE_URL=https://...`) |
|
|
|
+| 192.168.16.189:4090 | **OPEN**(HTTP 200) | 浏览器节点可用;本轮**全部浏览器任务在本机串行执行**(`workers:1`),未并发 |
|
|
|
+| 192.168.16.204:4090 | **CLOSED**(HTTP 000) | 本轮不可用(未参与) |
|
|
|
+| 192.168.16.251:9000 / :8000 | **CLOSED** | langgraph 服务未监听 → **无法按指令派发 251**,降级本机 venv 直跑(标注未实测项) |
|
|
|
+| 192.168.16.251:22 | OPEN 但凭据被拒 | 无可用凭据,不可远程执行 |
|
|
|
+
|
|
|
+> 分派结论:**langgraph 派 251 未达成**(B-55 延续第 N 轮);浏览器任务按「每节点单任务」在本机单节点串行完成 4 个套件,未触发并发。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 3. 后端 66 例红因三层归因
|
|
|
+
|
|
|
+### 3.1 按异常类型(实测统计)
|
|
|
+
|
|
|
+| 异常类型 | 例数 |
|
|
|
+|---|---|
|
|
|
+| 空类型(Mockito verify / 断言未细分) | 19 |
|
|
|
+| `expected`(AssertionError 族) | 17 |
|
|
|
+| NullPointerException | 13 |
|
|
|
+| `Failed to load ApplicationContext` | 8 |
|
|
|
+| `No value present` | 4 |
|
|
|
+| `JSON path "$.data"` | 2 |
|
|
|
+| `JSON path "$.code" expected` | 1 |
|
|
|
+| `Status expected` | 1 |
|
|
|
+| 退款冷静期断言 | 1 |
|
|
|
+
|
|
|
+### 3.2 归因分桶(对照 R88 使绿优先矩阵 P-1..P-8)
|
|
|
+
|
|
|
+| 归因桶 | 例数 | 判定依据 | 归属 |
|
|
|
+|---|---|---|---|
|
|
|
+| **A-1 本轮已修(契约/装置漂移)** | **8(已转绿)** | R88 §6.1 定向复跑修复的 `GuideFamilyTaskControllerTest` 5 + `GuideRolePermissionTest` 2 + `FamilyControllerTest` 1,本轮全量 clean 复跑确认 | 测试侧(已闭环) |
|
|
|
+| A-2 上下文加载失败(auditLogAspect) | 8 | `AdminFamilyOverviewControllerTest` 3E / `FamilyAdminOverviewServiceTest` 3E / `UserServiceFamilyNameLinkTest` 2E → `Failed to load ApplicationContext` | 测试侧(P-1,需补 @MockBean) |
|
|
|
+| A-3 CfCommission settle 打桩 | 8 | `CfCommissionServiceSettleTest` 8 例 verify 未触发 | 测试侧(P-2) |
|
|
|
+| A-4 夹具 NPE | 13 | `FamilyJoinRequestServiceReferrerBindTest` 4 + `FortuneServiceTest` 2 + `GrowthRecordSyncFlowTest` 2 + `ProductOrderServiceFulfillmentMultiModeTest` 3 + `ServiceRoleApproveTest` 2 | 测试侧(P-4) |
|
|
|
+| A-5 Optional 空值 | 4 | `DimensionScoreServiceImplTest` 4 例 `No value present` | 测试侧(P-3 族) |
|
|
|
+| A-6 Mockito 误用 / 多模式 | 9 | `ProductOrderServiceFulfillmentMultiModeTest` 6E + `ProductOrderServiceUpdateExpressFieldTest` 3F | 测试侧(P-3) |
|
|
|
+| A-7 断言基线未细分 | 14 | 剩余 `expected`/`Status`/`JSON path` 等,需逐例判定 | 待核实(P-8) |
|
|
|
+| **P-1 产品缺口** | **1** | `MindFortuneControllerTest` 期望 `code=401` 实得 `400` → `/api/mind/` 未入 `LOGIN_REQUIRED_PATHS` | **研发** |
|
|
|
+| **E-1 环境/数据** | 1 | `GuideModuleIntegrationTest` 空类型 | 环境 |
|
|
|
+
|
|
|
+> 量化结论:A 类合计 **60 例**(含已修 8)、产品 1、环境 1、待核实 14。
|
|
|
+> **对比 R88**:A-1 已闭环(−8);A-2~A-6(测试侧 41 例)与 P-1(研发 1 例)**本轮未动**(无新增测试侧改动),红例 74→66 的 −8 全部来自 A-1。
|
|
|
+
|
|
|
+### 3.3 24 个红类清单(按红例数降序)
|
|
|
+
|
|
|
+`CfCommissionServiceSettleTest 8` · `EnergySystemFlowTest 6F` · `ProductOrderServiceFulfillmentMultiModeTest 6E` · `FamilyJoinRequestServiceReferrerBindTest 4E` · `DimensionScoreServiceImplTest 4E` · `PlannerBindInviteFlowTest 5` · `ArticleWorkflowTest 3F` · `GrowthRecordSyncFlowTest 3` · `AdminFamilyOverviewControllerTest 3E` · `FamilyAdminOverviewServiceTest 3E` · `ProductOrderServiceUpdateExpressFieldTest 3F` · `DimensionRegistryMapContractTest 3F` · `FortuneServiceTest 2E` · `UserServiceFamilyNameLinkTest 2E` · `ServiceRoleApproveTest 2E` · `MindFortuneControllerTest 1F`(产品)· `MembershipPaySwitchTest 1F` · `PaymentServiceORDRoutingTest 1F` · `TaskPlanServiceTest 1F` · `TeamProfitCronContractTest 1F` · `DailyCheckinStreakFlowTest 1E` · `GuideModuleIntegrationTest 1E` · `OrchestrationEngineTest 1F` · `OrchestrationIntegrationTest 1F`
|
|
|
+
|
|
|
+> **R88 27 类 → R89 24 类**:消失的 3 类 = `GuideFamilyTaskControllerTest` + `GuideRolePermissionTest` + `FamilyControllerTest`(8 红转绿确认);**无新增红类、无回归**。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 4. langgraph 12 例红因(本机 venv 兜底,251 未派发)
|
|
|
+
|
|
|
+与 R88 一致:**12 红 / 44 收集**(修后基线,无新增、无减少)。
|
|
|
+
|
|
|
+| 类 | 例数 | 归因 | 类型 |
|
|
|
+|---|---|---|---|
|
|
|
+| `test_auto_tag.py` | 5 | 依赖 `/api/v1/chat`(RAG/chromadb)→ 环境 | 环境(B-54) |
|
|
|
+| `test_intent.py` | 4 | `prompt_service` 连 `localhost:9082` 失败 + 意图分类降级 | 环境(需本机后端 + LLM) |
|
|
|
+| `test_analyze.py` | 2 | `ValueError: Checkpointer requires ... thread_id` → 恒 500 | **产品缺陷(B-65)** |
|
|
|
+| `test_chat.py` | 1 | 500,`ImportError: chromadb_rust_bindings` DLL 缺失 | 环境(B-54) |
|
|
|
+
|
|
|
+> B-64(test_memory 4 绿)、B-66(test_report_parse 5 绿)本轮保持绿;B-65(产品 2)与 B-54(环境 10)未变。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 5. 浏览器自动化明细(单节点串行,28/28 全绿)
|
|
|
+
|
|
|
+| 套件 | 用例 | 结果 | 耗时 |
|
|
|
+|---|---|---|---|
|
|
|
+| admin-desktop | TC-A-U01 登录页渲染 / U02 滑块人机验证 / U03 未登录拦截 / U04 真实登录进主框架 / U05 核心菜单 | **5/5** | 2.3m |
|
|
|
+| frontend-mobile | TC-F-U01 首页渲染 / U02 五维沙盘 / U03 TabBar 健康 / U04 TabBar 成长 / U05 未登录「我的」鉴权引导 / U06 关键资源无 failed | **6/6** | 49.2s |
|
|
|
+| shop-api | TC-S-U01 price asc / U02 price desc / U03 默认排序 / U04 非法排序列白名单拦截 | **4/4** | 10.5s |
|
|
|
+| health-contract | TC-H-U01~U10 华为/小米 10 端点 401 + TC-HP-U01~03 健康方案 3 端点 401 | **13/13** | 5.6s |
|
|
|
+
|
|
|
+> **B-61 闭环保持**:TC-HP-U01~03 全部 401 `{"code":401,"message":"请先登录"}`,健康方案鉴权门禁连续第 9 轮零回归。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 6. 本轮代码改动与 cfc-web 复跑确认
|
|
|
+
|
|
|
+**本轮测试侧无代码改动**(纯复跑验证 R88 定向修复)。cfc-web 存在一次**窗口内实时变化**:
|
|
|
+
|
|
|
+- **首跑**(15:40 前后,研发实现合入前):17 suites · 95 passed / **21 failed**(S-cfc-72~76 TDD-RED 契约红,原 90 例零回归)。
|
|
|
+- **研发窗口内合入实现**:`e777224fc`(S-cfc-77 `admin.familyCoupon.backToList`)+ `ef3e81fec`(S-cfc-78 `reportEntry`/`planEntry`/`createdAtDisplay`/`actionMenu`),随远端提交于 15:57 前合入主链。
|
|
|
+- **复跑确认**(16:28,`_jest_web_r89_v2.log`):17 suites · **116 passed / 116 = 100%**,21 红全部转绿。
|
|
|
+
|
|
|
+> **契约闭环证据**:S-cfc-72~76 由 RED → GREEN,研发实现合入 + 全量复跑确认,测试侧零改动即可全绿(契约驱动生效)。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 7. 门禁判定
|
|
|
+
|
|
|
+| 门禁 | 判据 | 实测 | 结论 |
|
|
|
+|---|---|---|---|
|
|
|
+| G1 总通过率 ≥95% | 97.38% | ≥95% | ✅ |
|
|
|
+| G2 零红例 | 78 红 | 0 | ❌ |
|
|
|
+| G5 前端 Jest | 354/355(1 skip) | 无红 | ✅ |
|
|
|
+| G6 浏览器 E2E | 28/28 | 100% | ✅ |
|
|
|
+| G7 langgraph 零红 | 12 红 | 0 | ❌ |
|
|
|
+| G8 B-61 健康鉴权契约 | 13/13 | 闭环 | ✅ |
|
|
|
+| G9 SRS 锚点覆盖 | 3/170 | ≥目标 | ❌ |
|
|
|
+| G10 langgraph 派 251 | 未达成 | 达成 | ❌ |
|
|
|
+| G11 CI 流水线门禁 | 被 langgraph 阻断 | 通过 | ❌ |
|
|
|
+| G4 管理端 Jest(含契约) | 116/116 | 全绿 | ✅ |
|
|
|
+
|
|
|
+**总判定:⛔ 不通过(有条件)**——9 项达标 / 2 项未达标(G2/G7 与 R88 相同的持续项)+ G9/G10/G11 受 SRS 锚点 / langgraph 派发 / CI 阻断。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 8. 使绿优先矩阵(下一轮 R90 建议)
|
|
|
+
|
|
|
+| 优先级 | 动作 | 预计绿 | 归属 |
|
|
|
+|---|---|---|---|
|
|
|
+| P-1 | `AdminFamilyOverviewControllerTest`/`FamilyAdminOverviewServiceTest`/`UserServiceFamilyNameLinkTest` 补 `@MockBean`(auditLogAspect 注入链) | +8 | 测试侧 |
|
|
|
+| P-2 | `CfCommissionServiceSettleTest` 打桩 `cfBalanceService.earnByRule(...)`(档位/规则查询 stub) | +8 | 测试侧 |
|
|
|
+| P-3 | Mockito 误用族(`ProductOrderServiceFulfillmentMultiModeTest` 6E + `ProductOrderServiceUpdateExpressFieldTest` 3F) | +9 | 测试侧 |
|
|
|
+| P-4 | 夹具 NPE 补齐(`FamilyJoinRequestServiceReferrerBindTest` 4 + `FortuneServiceTest` 2 + `GrowthRecordSyncFlowTest` 2 + `ProductOrderServiceFulfillmentMultiModeTest` 3 + `ServiceRoleApproveTest` 2) | +13 | 测试侧 |
|
|
|
+| P-5 | `/api/mind/` 入 `LOGIN_REQUIRED_PATHS`(`MindFortuneControllerTest` 期望 401) | +1 | **研发** |
|
|
|
+| P-6 | langgraph `test_analyze.py` thread_id 参数化修复 | +2 | **研发** |
|
|
|
+| P-7 | 251 放通 9000/8000(langgraph 派发前置) | 解锁 G10 | **运维** |
|
|
|
+| P-8 | 剩余 14 例断言定性(`expected`/`Status`/`JSON path` 逐例判定装置 vs 产品) | +14 | 测试侧 |
|
|
|
+
|
|
|
+> 若 P-1~P-4 + P-8 全绿(44 例):后端 → 2558+44 = 2602/2628 = **99.01%**,总通过率 → (3067+44)/3171 = **98.12%**;叠加 P-5(研发 1 例)→ 后端 99.05%、总 98.15%。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 9. 结论与移交
|
|
|
+
|
|
|
+- **后端方向性改善**:红例 74→66(−8),通过率 97.03%→**97.34%**,红类 27→24(−3)。R88 定向修复的 3 个契约红类经全量 clean 复跑正式确认,**可入台账**。
|
|
|
+- **cfc-web 契约闭环**:研发合入 S-cfc-72~76 共 26 例契约测试并窗口内实现(S-cfc-77/78)→ 复跑 **116/116 全绿**,契约驱动闭环生效;原 90 例零回归。
|
|
|
+- **全量 97.38%**:3171 例 / 3088 过(红例 78 = 后端 66 + langgraph 12)。
|
|
|
+- **持续未决**:langgraph 12 红(B-65 产品 2 + B-54 环境 10,251 未派发)、SRS 锚点覆盖 3/170、CI 门禁被 langgraph 阻断。
|
|
|
+- **测试结果有变化**(相对 R88):后端 −8 红(+0.31pp)、cfc-web +26 例契约测试(21 红 → 0,研发实现闭环)→ 本轮交付件已提交并推送远程,研发交接通知就绪。
|
|
|
+- **下轮使绿优先**:P-1~P-4/P-7 后端测试装置批量修复(44 例,预计后端 → 99.0%);P-5/P-6 研发侧(B-69 `/api/mind/` 401、B-65 langgraph analyze 500);P-7 运维侧 251 放通。
|