从“全量回归”到“精准回归”
我们给效能平台补上了一条 JaCoCo 增量覆盖率闭环
每次上线前,测试团队最怕的不是“没有回归”,而是“回归不知道该回哪里”。
代码改了几十个文件,研发说影响不大;业务说这次很急;测试只能把核心用例再扫一遍。最后不是回归范围过大拖慢交付,就是漏测风险藏在某个边角分支里。
这也是我们最近在效能平台里补齐“精准测试”能力的原因:让平台基于 Git Diff、关系图谱、AI 影响分析、推荐用例、Jenkins 执行和 JaCoCo 增量覆盖率,给出一条可落地的精准回归链路。
一、为什么要做精准测试?
传统回归有三个典型问题。
- 范围靠经验。
变更文件、接口、模块、用例之间的关系没有沉淀,测试范围常常依赖研发口头说明。 - 覆盖率看整体。
整体 JaCoCo 覆盖率可能不错,但真正新增或修改的代码有没有被测到,往往不清楚。 - 执行链路断开。
影响分析、用例推荐、Jenkins 执行、覆盖率报告、质量门禁分散在不同系统里,过程难复盘。
精准测试要解决的,就是把这些碎片连起来。
二、这次平台新增了什么?
这次新增的精准测试能力,核心围绕六个页面和一条执行闭环。
1. 变更分析
平台可以基于产品名称和项目名称创建变更分析任务,关联 Git 仓库、分支、Base Commit 和 Target Commit。
解析 Git Diff 后,系统会记录每个变更文件、变更行号、代码片段,并在详情页中支持查看真实代码片段。
这一步解决的是:到底改了什么。
在新增分析后,会在列表中进行展示,点击解析变更,会调用jenkins流水线,然后拉取对应代码,并且进行部署,进行代码变更分析,分析完成后,会有一个分析结果,点击查看可以跳转到详情页面




2. AI 影响分析
过去 AI 影响分析只是一个兜底 JSON,信息比较空。现在它会输出结构化结果:
综合结论 受影响模块 受影响接口或链路 风险点 测试关注点 推荐回归策略
例如系统会识别 ERP 业务、系统管理、基础框架、部署配置等受影响模块,并说明可能影响导入导出、分页查询、接口参数校验、权限边界、异常分支和 Jenkins 执行环境。
这一步解决的是:这些变更可能影响哪里。
点击AI分析,分析完成后,查看结果,会显示对应受影响的模块,以及受影响的接口, 风险点以及测试需要的关注点,和一些建议


3. 关系图谱
平台支持维护文件、接口、模块、用例、脚本之间的关系。
当变更文件命中关系图谱时,系统可以沿着“文件 -> 接口 -> 模块 -> 用例 -> 脚本”的链路生成推荐。
这一步解决的是:变更和测试资产怎么关联。
4. 回归推荐
系统会根据关系图谱和 AI 影响分析生成推荐用例。
如果关系图谱暂时不完整,也会基于变更文件生成兜底推荐,避免页面空着无法继续流程。推荐结果里会包含推荐等级、风险等级、用例 ID、脚本 ID、模块、接口、推荐原因、AI 原因和是否采纳。
这一步解决的是:应该测哪些用例。
根据影响范围,会在你的用例列表中进行检索,检索出相应可能影响的一些用例,可以进行采纳,采纳后又会生成到对应的测试计划中,忽略就是删除


5. Jenkins 精准回归
点击“发起精准回归”后,平台会创建执行记录,并把参数传给 Jenkins。
ANALYSIS_ID / PROJECT_ID / CASE_IDS / SCRIPT_IDS / BASE_COMMIT / TARGET_COMMIT / RUN_MODE=precise / CALLBACK_TOKEN / PLATFORM_BASE_URL
默认 Jenkins Job 为 precise-test-runner。
这一步解决的是:推荐出来的用例怎么执行。

6. JaCoCo 增量覆盖率
Jenkins 执行完成后,平台可以拉取或上传 JaCoCo XML,并计算增量覆盖率。
这里重点不是看整体覆盖率,而是看“变更代码是否被覆盖”。覆盖率报告会展示变更行数、已覆盖变更行、未覆盖变更行、增量覆盖率、未覆盖代码片段、完整变更代码片段和 AI 风险分析。
弹框中的代码片段已经改为读取真实仓库文件内容,不再用模板数据。已覆盖行和未覆盖行也会按照实际行号进行标记,方便测试、研发一起定位风险。
这一步解决的是:这次改动有没有被测到。
对于部署代码后,进行自动化测试或者手工测试,测试完成后,都会对覆盖率进行收集,可以查看对应当前测试的覆盖率怎么样,从而决定是否需要进行补充测试


7. 质量门禁
质量门禁会基于增量覆盖率、P0/P1 用例执行情况和风险分析给出结果。
如果增量覆盖率不足,或者关键推荐用例未通过,门禁会阻断发布,并给出修复建议。
根据本次所有的覆盖率,会有对应的质量门禁推荐,推荐是否通过,给出建议

三、完整链路长什么样?
它的价值不在于某一个页面,而在于把一次代码变更从“分析、推荐、执行、验证、门禁”串成闭环。
测试不再只问:“这次要不要全量回归?”而是可以看平台给出的结果:
哪些模块受影响? 哪些接口需要回归? 哪些用例应该优先执行? 哪些变更行没有覆盖? 哪些未覆盖代码存在发布风险? 当前是否满足质量门禁?
四、这套能力适合什么场景?
适合多模块系统,比如 ERP、系统管理、基础框架、消息通知、三方登录等模块频繁变更的项目。 适合自动化资产逐步沉淀中的团队。即使关系图谱不完整,也可以先用兜底推荐跑通流程。 适合想把覆盖率从“整体指标”推进到“变更质量指标”的团队。 适合需要 Jenkins、Git、JaCoCo、测试平台联动的交付团队。
五、落地后的收益
变更范围可视化 影响分析结构化 回归推荐可采纳 Jenkins 执行可追踪 增量覆盖率可核验 未覆盖代码可定位 发布门禁可判断
更重要的是,它把“测试经验”变成了“平台数据”。一次变更不再只是几个 commit,也不再只是一次 Jenkins 构建,而是可以沉淀为可追溯的质量记录。
六、下一步会持续进行的规划
把关系图谱自动化,通过代码扫描、接口路由、用例标签、脚本元数据自动生成更多关系。 把 JaCoCo 覆盖率和测试用例执行结果进一步关联,让平台知道某一段代码到底由哪些用例覆盖。 引入更细粒度的风险评分,结合变更复杂度、历史缺陷、模块稳定性、未覆盖代码、失败用例形成发布风险指数。
精准测试不是为了替代测试判断,而是为了让判断有依据。当平台能告诉我们“哪里变了、影响什么、该测什么、测到了没有、能不能发”,回归就不再是一次模糊的扫雷,而是一条清晰的工程化链路。
夜雨聆风