automation-run-2026-11-08-R89.md 14 KB

自动化运行证据(第 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 放通。