[CI优化] P1-2 集成测试增量执行 #444

Closed
opened 2026-07-17 11:49:42 +08:00 by xiaoxia · 3 comments
Owner

背景

Integration Tests每次跑全量,耗时较长,大部分测试与本次PR改动无关。

要做什么

  • 根据PR改动文件智能决定运行哪些测试用例
  • 后端改动只跑相关模块的集成测试
  • 纯前端改动跳过集成测试

验收标准

  • 小范围改动的PR,集成测试运行时间减少50%以上
  • 核心路径改动时仍跑全量集成测试,不降低质量保障
  • 有明确的增量/全量判定规则
## 背景 Integration Tests每次跑全量,耗时较长,大部分测试与本次PR改动无关。 ## 要做什么 - 根据PR改动文件智能决定运行哪些测试用例 - 后端改动只跑相关模块的集成测试 - 纯前端改动跳过集成测试 ## 验收标准 - [ ] 小范围改动的PR,集成测试运行时间减少50%以上 - [ ] 核心路径改动时仍跑全量集成测试,不降低质量保障 - [ ] 有明确的增量/全量判定规则
xiaoxia added this to the [CI] Phase 3:质量提升 milestone 2026-07-17 11:49:42 +08:00
xiaoxia added the devopsP1ci-optimization labels 2026-07-17 11:49:42 +08:00
Author
Owner

P1-2 方向调整说明

原方案(集成测试增量执行)调整为低优先级备选,当前优先做 Unit Tests 增量执行

原因

  • 集成测试才 381 个用例,全量跑 ~1.5 分钟,增量优化绝对收益小(省 40-60 秒/PR)
  • Unit Tests 有 2308 个用例,且 PR 改动大多集中在少数模块,增量收益大得多
  • 集成测试映射表维护成本高(端到端链路,模块边界模糊),漏测风险也更高

原方案保留

如后续需要再做集成测试增量,方案要点:

  1. Step 1:纯前端改动跳过集成测试(已有 check-frontend-only 机制)
  2. Step 2:按 API 路由改动 → 对应 integration 测试文件映射
  3. 公共模块/DB schema 改动 → 全量兜底

关联 PR: #472 (Unit Tests 增量执行)

## P1-2 方向调整说明 原方案(集成测试增量执行)**调整为低优先级备选**,当前优先做 **Unit Tests 增量执行**。 ### 原因 - 集成测试才 381 个用例,全量跑 ~1.5 分钟,增量优化绝对收益小(省 40-60 秒/PR) - Unit Tests 有 2308 个用例,且 PR 改动大多集中在少数模块,增量收益大得多 - 集成测试映射表维护成本高(端到端链路,模块边界模糊),漏测风险也更高 ### 原方案保留 如后续需要再做集成测试增量,方案要点: 1. Step 1:纯前端改动跳过集成测试(已有 check-frontend-only 机制) 2. Step 2:按 API 路由改动 → 对应 integration 测试文件映射 3. 公共模块/DB schema 改动 → 全量兜底 关联 PR: #472 (Unit Tests 增量执行)
Author
Owner

更新:P1-2 方向调整为 Unit Tests 增量执行

原集成测试增量方案收益过低(仅381用例/1.5分钟),已调整为 Unit Tests 增量执行(2308用例/3分钟+,70%PR只改1-2模块)。

已完成

  • 方案:按改动文件路径映射对应测试文件,公共核心模块改动全量兜底
  • 实现scripts/ci/select_unit_tests.py + ci-cd.yml 接入
  • PR:#472 feat(ci): P1-2 Unit Tests增量执行
  • vulture死代码扫描:5处全为误报(接口方法参数),无需清理

本 Issue(集成测试增量)状态

降为低优先级备选,暂不实施。等 Unit Tests 增量上线后观察收益,
如仍有优化空间再考虑集成测试增量。

## 更新:P1-2 方向调整为 Unit Tests 增量执行 原集成测试增量方案收益过低(仅381用例/1.5分钟),已调整为 Unit Tests 增量执行(2308用例/3分钟+,70%PR只改1-2模块)。 ### 已完成 - **方案**:按改动文件路径映射对应测试文件,公共核心模块改动全量兜底 - **实现**:`scripts/ci/select_unit_tests.py` + ci-cd.yml 接入 - **PR**:#472 feat(ci): P1-2 Unit Tests增量执行 - **vulture死代码扫描**:5处全为误报(接口方法参数),无需清理 ### 本 Issue(集成测试增量)状态 降为**低优先级备选**,暂不实施。等 Unit Tests 增量上线后观察收益, 如仍有优化空间再考虑集成测试增量。
Author
Owner

完成情况

实际实现为 Unit Tests 增量执行(原计划集成测试因集成测试仅1.5分钟收益太小,调整为Unit Tests 2308个用例,优化收益更大)。

交付PR: #472

核心改动:

  • 新增 scripts/ci/select_unit_tests.py — 按改动文件module路径智能映射相关测试文件
  • PR阶段根据改动范围自动选择:增量模式(只跑相关测试)or全量模式(所有tests/unit)
  • 与P1-3 diff-cover增量覆盖率门禁联动

结果: 纯CI/纯配置PR零测试秒过,小改动PR只跑相关用例,CI时间大幅缩短。

## 完成情况 ✅ 实际实现为 **Unit Tests 增量执行**(原计划集成测试因集成测试仅1.5分钟收益太小,调整为Unit Tests 2308个用例,优化收益更大)。 **交付PR:** #472 **核心改动:** - 新增 `scripts/ci/select_unit_tests.py` — 按改动文件module路径智能映射相关测试文件 - PR阶段根据改动范围自动选择:增量模式(只跑相关测试)or全量模式(所有tests/unit) - 与P1-3 diff-cover增量覆盖率门禁联动 **结果:** 纯CI/纯配置PR零测试秒过,小改动PR只跑相关用例,CI时间大幅缩短。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: xiaoxia/xiaoxia-saas#444