AI Coding 质量治理:工程规范、代码评审与风险驱动测试

举报
霍格沃兹测试开发学社 发表于 2026/10/09 17:32:38 2026/10/09
【摘要】 摘要:AI Coding 正在改变软件研发与测试的工作方式。当大量代码由 AI 辅助生成,工程规范不统一、代码审查压力增加、测试覆盖不足等问题也更加突出。本文结合一项 31 万行代码的重构实践,从 AI Rule、Skill、AI Code Review、风险驱动测试和渐进式重构五个方面,分析 AI Coding 在复杂项目中的质量保障方法。一、AI Coding 提高了开发效率,为什么技术...
摘要:

AI Coding 正在改变软件研发与测试的工作方式。当大量代码由 AI 辅助生成,工程规范不统一、代码审查压力增加、测试覆盖不足等问题也更加突出。本文结合一项 31 万行代码的重构实践,从 AI Rule、Skill、AI Code Review、风险驱动测试和渐进式重构五个方面,分析 AI Coding 在复杂项目中的质量保障方法。

一、AI Coding 提高了开发效率,为什么技术债反而可能增加?

AI Coding 能够帮助工程师完成接口开发、业务逻辑编写、代码重构以及测试脚本生成,但生成速度快,并不意味着代码质量一定高。

在复杂项目中,AI Coding 的质量保障需要覆盖工程规范、代码评审、测试验证和持续重构,而不只是检查生成的代码能否运行。

一项公开的 Agent 评测系统重构实践,展示了这一问题。

该系统从 2025 年 6 月不足 5 万行代码,逐渐增长到约 31 万行。团队超过 90% 的代码由 AI 辅助编写,平均每月还需要完成约 16 个需求。

业务快速增长的同时,系统逐渐出现了几个典型问题。

首先,早期代码按照业务需求组织,缺少清晰的工程分层。Controller、业务逻辑和数据访问代码相互交织,模块之间存在较深的依赖。

其次,不同工程师使用 AI Coding 的习惯不同,生成代码的组织形式和实现思路也存在差异。

还有一些历史兼容逻辑隐藏在较长的调用链中,修改一个接口,可能影响多个业务模块。

这种情况下,继续提高代码生成速度,很可能让原本存在的架构问题扩散得更快。

团队需要解决两个问题:

一是如何清理已有技术债,二是如何避免 AI 继续制造新的技术债。


缺少统一约束与建立质量治理后的两种开发模式,对比代码生成、工程规范、质量检查和交付结果的差异。

二、AI Coding 工程规范:让团队和 AI 遵循同一套开发标准

传统研发中,开发规范主要依靠技术文档、代码评审和工程师经验维持。

到了 AI Coding 阶段,规范还需要能够被 AI Coding 工具理解和使用。

不过,真正需要先统一的是团队内部的工程标准。

例如,业务逻辑应该放在哪一层?数据库对象能不能直接暴露给上层?哪些模块允许互相依赖?新增公共组件需要满足什么条件?

如果工程师对这些问题本身就没有统一认识,即使配置了 AI Rule,生成结果仍可能不一致。

1. 统一架构与业务模型

以典型后端业务系统为例,可以先明确以下约束。

规范类型
主要约束
架构分层
明确接口层、应用层和基础设施层职责
业务模型
统一业务对象及其转换规则
接口契约
明确参数、返回值与兼容要求
依赖管理
限制跨层和循环依赖
质量标准
明确代码评审与测试准入条件

规范确定后,再将其转换为 AI Coding 可以使用的工程约束。

2. 使用 AI Rule 约束代码生成

AI Rule 可以理解为项目级编码规则。

例如:

  • 数据库持久化对象不得直接作为公共接口返回对象。
  • Controller 不直接承担复杂业务逻辑。
  • 修改公共接口时,需要检查上下游兼容性。
  • 新增代码优先复用现有公共能力。
  • 核心业务变更需要补充相应测试。

对于支持自动加载规则的 AI Coding 工具,可以将这些约束配置到项目规则文件中,让模型在编写代码时持续参考。

需要注意,AI Rule 本质上是对模型的行为约束,并不等同于静态检查器。

对于能够确定性验证的规则,还应通过架构测试、静态代码分析和 CI 质量门禁进行检查。

3. 使用 Skill 固化复杂开发任务

相比 AI Rule,Skill 更适合承载可重复执行的任务流程。

例如,团队需要将旧系统中直接传递的数据库对象,改造成具有明确边界的业务对象。

可以把迁移过程整理成标准化 Skill:

识别受影响对象 → 建立转换关系 → 调整接口契约 → 修复调用链 → 执行验证

工程师以后再处理类似模块时,可以复用已经验证过的任务步骤。

这样可以减少每次重新设计提示词和重复摸索改造方法的成本。

标准层、执行层、验证层之间的关系,以及 AI Rule、Skill 和 Coding Agent 如何配合完成规范化开发。

三、AI 辅助技术债排查:从人工阅读转向代码关联分析

当代码规模达到几十万行时,单靠人工逐个阅读文件,很难快速掌握完整的依赖关系。

尤其是数据库查询、状态管理、历史兼容和跨模块调用等问题,往往隐藏在代码细节中。

AI 可以辅助完成大范围代码检索、调用关系梳理和潜在问题分析。

在上述公开案例中,工程师借助 AI 排查复杂调用链,定位了 10 个较难通过常规人工阅读发现的性能隐患。

这类方法可以应用到多个场景。

排查方向
AI 辅助分析内容
代码依赖
跨层调用、循环依赖、重复实现
数据库性能
重复查询、潜在慢查询、索引问题
状态管理
状态变更路径、异常状态、并发风险
接口兼容
参数变化、历史调用、返回结构
技术债治理
高复杂度模块、待迁移对象

但 AI 给出的风险线索仍需要验证。

例如,AI 发现某条调用链中存在多次数据库查询,并不意味着一定存在性能故障。

工程师还需要结合真实执行路径、数据规模、查询计划及运行指标判断问题的严重程度。

因此,更合理的分工是由工程师确定排查重点,AI 扩大代码分析范围,再通过实际证据确认问题。

对于测试开发工程师,这些分析结果同样具有价值。

历史缺陷集中、调用链复杂、业务状态较多的模块,可以优先纳入回归测试和专项测试范围。

四、AI Code Review:将质量检查前移到代码提交之前

随着 AI 生成代码的速度提高,Code Review 很容易成为研发流程中的新瓶颈。

过去工程师可能需要较长时间才能完成一个模块的实现,Reviewer 有相对充足的时间进行审查。

现在 AI 能够快速修改多个文件,甚至完成跨模块重构。如果所有问题都依靠人工逐行检查,代码审查的工作量会明显增加。

可以通过 Pre-PR 机制,把基础质量检查放在正式提交之前。

1. 建立 AI 预审流程

一套比较完整的流程是:

需求与技术方案 → AI Coding → 静态检查与 AI 预审 → 问题修复 → 人工 Code Review → 自动化回归 → 合并发布

其中,AI Code Review 可以重点检查:

检查维度
主要内容
代码规范
命名、分层、依赖关系
逻辑正确性
分支条件、空值与异常处理
接口兼容
参数变化、返回结构、旧版本依赖
性能风险
重复查询、循环调用、资源消耗
安全检查
权限校验、输入处理、敏感信息
可测试性
测试入口、依赖隔离、断言条件

对于检查出的缺陷,需要完成确认、修复和重新验证。

正式提交 PR 时,还应附上本次变更说明,包括修改模块、影响范围、测试情况以及需要 Reviewer 重点关注的问题。

2. 人工评审重点转向业务正确性

AI 可以发现一些明显的编码问题,但业务语义错误仍然需要重点关注。

例如,一个订单查询接口的返回结构完全符合规范,异常处理也没有明显问题。

但如果 AI 在修改过程中遗漏了用户数据隔离条件,就可能产生越权查询风险。

这种缺陷不是单靠检查代码格式就能发现的。

因此,人工评审需要更关注业务规则、技术方案、模块边界以及高风险场景。

3. 多模型审查提高问题发现机会

部分团队还会采用高能力模型审查代码,或者通过不同模型交叉检查。

这种方式有机会发现单一模型遗漏的问题,但不能保证审查结果完全正确。

对于关键业务,AI 审查仍需要配合确定性检查、自动化测试以及必要的人工复核。

需求、代码生成、静态检查、AI 预审、人工评审、自动化回归和发布监控之间的流程,以及出现问题后的回退机制。

五、AI 辅助测试:从自动生成用例转向风险驱动测试

AI 测试用例生成已经是较为常见的应用场景。

将需求文档或接口定义交给大模型,通常可以快速生成正常场景、异常场景和边界测试用例。

但实际工程中存在一个问题:

AI 能够生成大量测试用例,却不一定知道哪些业务场景最需要验证。

如果需求文档没有写清楚历史兼容逻辑、跨系统依赖和特殊权限要求,AI 可能遗漏重要场景。

另一种情况是生成大量低价值用例,增加审核与维护成本。

更适合复杂系统的方式,是以业务风险为依据,由工程师确定测试范围与重点,再让 AI 完成代码分析、测试组合和步骤生成。

1. 测试范围识别:确定哪些接口受到影响

首先根据代码变更和运行数据识别候选影响范围。

可以综合利用 Git Diff、接口定义、代码调用链以及流量监控信息。

例如,一次订单服务改动表面上只修改了查询逻辑,但相关结果也被订单详情页、售后系统和运营后台使用。

仅测试直接修改的接口,可能无法覆盖全部风险。

AI 可以辅助收集受影响接口清单,再由测试人员确认真实影响范围。

2. 风险分级:确定每个接口需要测试多深

接口影响范围确定后,需要进一步评估测试优先级。

可以重点检查三个问题:

① 本次代码修改涉及多少逻辑和依赖?

② 修改涉及哪些条件分支和状态转换?

③ 新逻辑是否兼容历史数据及原有调用方式?

对于涉及资金、权限、核心交易和历史数据迁移的变更,还需要提高相应测试优先级。

风险分级应由工程师结合业务背景完成,而不能仅根据修改代码的行数进行判断。

3. 测试设计:利用判定表减少无效组合

复杂业务接口经常具有多个输入条件。

例如,一个查询接口同时支持用户身份、订单状态和时间范围筛选。

如果直接生成全部组合,用例数量可能迅速增加。

可以先通过等价类、边界值和判定表拆分测试条件,再结合风险选择需要覆盖的组合。

AI 适合辅助整理条件、生成候选组合和检查重复场景。

测试人员则需要确认业务特殊规则及关键边界是否被完整覆盖。

4. 测试步骤生成:一次操作验证多个结果

测试设计完成后,可以让 AI 进一步生成结构化测试步骤。

例如,修改订单状态后,除了验证接口返回结果,还可以检查数据库状态、相关业务记录及下游服务的处理结果。

同一个测试操作可以覆盖多个验证维度。

需要特别注意,测试预期应来自已经确认的业务规则或接口契约,不能完全依据 AI 生成的实现代码反推。

否则可能出现代码实现错误,而测试用例也采用相同错误逻辑的情况。

5. 覆盖矩阵:检查哪些风险尚未验证

最后,将受影响接口与测试维度建立对应关系。

接口
正常功能
异常参数
权限校验
历史兼容
订单查询
已覆盖
已覆盖
已覆盖
待补充
订单修改
已覆盖
已覆盖
待补充
已覆盖
订单取消
已覆盖
已覆盖
已覆盖
已覆盖

表格为示例,用于说明接口与测试维度之间的覆盖关系。

通过覆盖矩阵,可以快速发现仍然缺少验证的业务场景。

这比单纯统计生成了多少测试用例更有价值。

6. 将测试设计进一步接入自动化执行

如果团队已经建立了 Pytest、JUnit、Playwright 或其他自动化测试体系,还可以将经过审核的测试设计转换为自动化脚本。

完整流程可以扩展为:

代码变更分析 → 风险识别 → 测试设计 → 自动化执行 → 覆盖验证

其中,AI 可以参与代码分析、用例和脚本生成、失败日志归类等环节。

人工仍然需要负责测试范围确认、预期结果审核、异常分析以及最终质量判断。

这样才能形成从代码变更到验证结果的质量闭环。


代码变更分析、风险分级、测试设计、自动化执行和覆盖验证五个环节,以及 AI 能力与人工职责的分工。

六、工程示例:AI 修改订单查询接口后,测试应该如何设计?

假设一个订单系统需要新增按照订单状态筛选的功能。

AI Coding 已经完成接口参数、业务逻辑和数据库查询代码的修改。

正常调用返回成功,是否就可以认为本次变更已经通过测试?

显然不够。

需要重点关注以下场景:

测试场景
验证重点
订单状态筛选
返回结果是否准确
不传新增参数
原有查询功能是否兼容
历史订单查询
旧数据是否能够正常处理
用户权限隔离
是否可能查询其他用户订单
分页与排序
筛选条件是否影响分页结果
查询性能
是否增加数据库访问成本

其中,历史兼容和权限隔离往往比简单的正常查询更值得优先关注。

例如,原接口不需要订单状态参数,新增筛选条件后,如果没有兼容处理,可能导致旧客户端请求失败。

再如,AI 调整查询条件时遗漏用户 ID 限制,即使功能测试全部通过,也可能留下权限缺陷。

合理的测试流程应该先确认变更影响和关键风险,再由 AI 辅助生成测试设计,最后通过接口测试、数据验证和必要的性能测试完成检查。

这个案例也说明,AI 测试的核心不只是生成测试脚本,而是让测试范围、风险和验证结果建立明确关联。

七、渐进式重构:将技术债治理融入日常研发

对于持续交付的复杂系统,整体推倒重构通常意味着较高成本和风险。

渐进式重构提供了另一种选择。

将大型技术债拆分成可以独立验证的小任务,在正常业务迭代中逐步完成。

例如,历史系统存在数据库对象跨层传递的问题,可以在相关功能升级时同步完成数据对象转换、接口契约调整和调用链修复。

这种方式可以减少一次性大规模迁移带来的风险。

标准化迁移流程

对于重复性较高的重构任务,可以采用以下流程:

核心工程师完成样板模块 → 验证迁移方案 → 沉淀标准 SOP → AI 辅助迁移其他模块 → 执行回归验证

样板模块尤其重要。

因为 AI 即使能够快速完成类似代码修改,也需要一个经过验证的迁移标准。

实际执行时,还需要处理数据库兼容、接口变更、历史数据和回滚方案。

对于测试开发团队,可以将相关验证纳入持续集成流程,在每个重构阶段运行对应测试,避免技术债治理引入新的功能缺陷。

八、AI Coding 质量保障应该关注哪些指标?

代码生成速度可以衡量 AI Coding 的部分效率,但无法反映全部工程质量。

建议同时观察代码质量、测试效果、交付效率和线上稳定性。

评价维度
参考指标
代码质量
架构违规、静态检查问题、重复代码
测试质量
高风险场景覆盖、缺陷检出、断言有效性
研发效率
PR 周期、审查耗时、返工次数
交付质量
线上逃逸缺陷、回滚次数、故障恢复时间
AI 辅助效果
预审有效问题率、无效告警率、人工复核成本

特别是在 AI 辅助测试场景中,不能单纯把用例数量增加当作质量提升。

还需要关注测试是否能够发现真实缺陷、关键风险是否得到覆盖,以及测试脚本是否长期稳定。

有条件的团队可以进一步引入变异测试、契约测试和线上质量数据,验证自动化测试的实际有效性。

九、总结

AI Coding 的普及,让代码生产方式发生了变化,也让工程质量治理的重要性更加突出。

对于复杂业务系统,质量保障可以围绕以下几个方面展开。

首先,建立统一的架构规范、业务模型和接口契约,并通过 AI Rule 与 Skill 将工程约束应用到实际开发流程中。

其次,在代码提交之前引入 AI Code Review 和静态检查,将基础问题尽可能提前发现,同时保留人工对业务正确性的判断。

再次,利用 AI 分析代码变更、辅助风险分级和测试设计,并结合自动化测试、覆盖矩阵和执行证据完成验证。

最后,通过标准化 SOP 和渐进式重构,逐步治理历史技术债,同时避免新增代码继续破坏系统结构。

对于测试开发工程师来说,AI Coding 带来的工作变化不仅体现在测试脚本生成上。

代码变更影响分析、风险驱动测试、AI 辅助评审、自动化质量门禁和测试有效性评估,都会成为值得持续建设的工程能力。

AI 可以提高代码生产和测试设计的效率,而可靠的软件交付,仍然需要明确的工程标准、可验证的测试结果和持续运行的质量保障体系。

本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。