专题演讲嘉宾:蒋宇

蚂蚁集团研发工程师

蒋宇,2021 年加入支付宝,现任支付宝数字民生技术研发工程师,长期深耕生活缴费领域,参与复杂高并发生产系统的架构演进与工程建设。近年来聚焦 AI 原生软件工程,致力于探索 AI 时代大规模遗留系统的重构方法与交付体系,重点研究如何通过行为建模、场景生成、差分验真与流量回放,让AI生成代码从“能够生成”走向“可理解、可审查、可验证、可发布”,推动AI重构能力在真实业务中的工程化落地。

by 蒋宇

蚂蚁集团
研发工程师

本次演讲源于支付宝生活缴费一个包含约 60 万行 Java 代码、600 多个接口的核心在线系统跨语言重构实践。系统包含复杂的业务分支、机构差异配置、分布式调用链和外部依赖。传统依靠代码评审、补充用例和上线观察的交付方式,能够发现局部实现问题,却难以证明新系统在预期业务边界内保持了老系统的关键行为。

为此,我们将重构目标从“迁移代码”转变为“迁移行为”,建立两个相互校验的 Loop:Loop 1 从老系统提取业务行为,通过 PERS 建模、Case-Forge 路径压缩和人机协同完成场景生成;Loop 2 使用 Bubble 在新系统回放相同场景,验证实际执行路径,判定新老系统的行为差异,并结合真实流量回放为分阶段切流提供依据。

本次演讲重点剖析两个工程问题:一是如何从复杂分支中提取规模可控但不失真的行为集合;二是如何识别 AI 生成用例中的路径偏移与假覆盖,并将差分结果转化为可发布、可观测、可回退的工程决策。

演讲提纲

1. 现象:代码完成了,为什么重构还没有完成

  • 大规模跨语言重构面对的不是简单的语法转换,而是散落在代码分支、机构配置和外部交互中的业务行为迁移
  • 代码评审通过、生成用例 PASS、覆盖率上升,都只能说明部分实现得到检查,不能证明目标业务分支真正执行
  • 重构交付最终需要回答三个问题:老系统有哪些关键行为需要迁移;新系统是否真实复现了这些行为;发现差异后,能否据此作出发布决策

2. 思路:把跨语言重构转化为行为迁移

  • 不要求新旧代码结构逐行对应,而是在明确的建模与可观察边界内,验证业务终点、核心返回、副作用和关键交互是否等价
  • 建立两个相互校验的 Loop:Loop 1 回到老系统,确定“需要迁移什么行为”;Loop 2 进入新系统,验证“这些行为是否被真实复现”
  • 将场景生成与执行验真分离。AI 可以参与理解和生成,但不能同时负责生成目标、修改数据并证明目标已经完成
  • 重构交付物不再只有新代码,还包括行为模型、可执行场景、实际路径证据、差异结论以及发布与回退依据

3. 方法:双 Loop 如何贯穿重构与上线

  • Loop 1 从老系统识别业务终点,使用 PERS 表达行为,通过路径压缩控制组合规模,再由 AI 补全业务数据、机构配置和 Mock 语义
  • Loop 2 在相同输入和依赖响应约束下回放新系统,验证实际执行路径,并比较新老系统的业务结果和外部影响
  • 两个 Loop 通过行为场景连接。每个场景都需要具备目标行为、输入约束、实际路径证据和差分结论,才能进入后续流量验证
  • 整体过程形成“老系统行为提取—新系统回放验真—差异驱动修复—真实流量验证—分阶段切流”的交付链路

4. 技术深挖一:如何得到规模可控但不失真的行为集合

  • PERS 将前置条件、触发事件、业务结果和副作用组织为独立于编程语言的行为描述,使老系统中的业务知识能够进入新系统验证
  • 在复杂接口中,请求参数、机构配置和外部返回会共同影响执行路径。直接组合所有因素会产生场景爆炸,简单保留高频或 Top-N 路径又可能遗漏低频失败终点
  • Case-Forge 首先按照业务终点组织候选路径,复用共享分支条件,对只影响局部结果的独立因素进行增量展开,并剪除约束冲突或不可达的组合
  • 路径压缩的目标不是得到最少的用例,而是在执行成本可控的前提下,为每类关键业务终点保留具有代表性的可执行路径
  • 确定性分析负责提供路径骨架和条件约束,AI 负责将抽象条件展开为具体的业务数据、机构配置和 Mock,人负责确认高风险终点及语义边界
  • 以一个同时受请求参数、机构配置和外部返回影响的接口为例,展示如何从大量路径组合中识别业务终点、压缩候选路径,并生成人可以审查、机器可以执行的场景

5. 技术深挖二:如何识别假覆盖并完成差分验真

  • 实践中曾出现这样的场景:AI 生成的用例描述合理,最终断言也能 PASS,但实际执行在前置分支提前结束,目标调用和目标业务终点并未发生
  • 进一步分析发现,问题不在断言本身,而在输入、配置和 Mock 的组合没有满足目标路径约束。AI 完成了一个可以通过的用例,却没有完成预期行为的覆盖
  • 因此,有效覆盖不能只检查最终断言,还需要同时确认目标终点是否到达、关键条件是否满足、必要调用是否发生、副作用是否符合预期
  • 只有实际运行证据与目标路径一致,场景才计入有效覆盖。通过这一规则,将“用例执行成功”与“目标行为真实发生”区分开来
  • Bubble 在相同请求和依赖响应约束下分别回放新旧系统,将行为一致性转化为一组可判定的等价约束:业务终点一致、核心返回语义一致、关键副作用一致、重要 IO 交互可解释
  • 差异并不直接等于重构错误。空串与 null、时间戳等非确定字段需要归一化;老系统已有行为和本次主动变更需要单独确认;无法归因的差异则阻断下一阶段
  • 离线场景验真通过后,再结合录制流量回放验证真实请求分布,并通过白名单、小流量和分阶段切流逐步扩大范围。每个阶段都需要具备明确的观测指标和回退路径

6. 经验:最终沉淀下来的工程判断

  • 用例 PASS 不等于目标行为被覆盖。覆盖必须建立在实际路径证据上,而不能仅依赖用例数量、断言结果或覆盖率
  • AI 可以参与场景生成,但不能独立证明自己生成的场景正确。目标定义、场景生成和执行验真需要形成相互独立的约束关系
  • 老系统是行为参考,而不是绝对正确的规格。历史问题、本次主动变更和真正的重构偏差需要分类处理,不能机械追求所有字段完全一致
  • 离线一致不是上线的充分条件。缺少路径证据、差异无法归因、真实流量表现不明确或没有回退能力时,都不能继续扩大流量
  • 该方法不依赖单体或分布式架构。单体系统重点观察返回结果和状态变化;分布式系统还需要将外部调用、消息和副作用纳入行为边界。关键在于能否定义并观测需要保持的业务行为

实践痛点

  • 行为完整性与执行成本之间存在取舍。复杂分支无法全部穷举,但过度压缩又可能遗漏低频失败行为。我们的判断规则是先保证关键业务终点不丢失,再压缩到达同一终点的等价路径
  • AI 生成效率与路径真实性之间存在冲突。实践中出现过用例断言通过、目标调用却未发生的假覆盖。如果只统计 PASS 数量,会高估重构验证程度,因此必须引入独立的实际路径证据
  • 严格一致与生产差异之间存在冲突。逐字段比较会被空值表达、时间戳等差异产生的噪声淹没;整体放宽比较又可能掩盖真实业务偏差,因此需要按业务终点、核心语义、副作用和 IO 交互进行分层判定
  • 离线可重复与线上真实性之间存在取舍。离线场景便于复现和定位,但无法覆盖全部真实请求分布;真实流量更接近生产环境,却需要控制影响范围并保留快速回退能力

演讲亮点

  • 建立面向大规模 AI 重构的双 Loop 方法,将老系统行为提取、新系统回放验真和上线切流连接起来,使 AI 重构从代码生成延伸到可验证、可发布的完整交付过程
  • 将覆盖判断从“用例是否通过”升级为“目标行为是否真实发生”,通过实际路径证据识别 AI 场景中的路径偏移与假覆盖,并利用分层行为等价约束形成差异归因和发布依据

听众收益

  • 理解为什么代码评审、覆盖率和用例数量无法单独证明大规模重构的正确性
  • 掌握以业务终点组织行为模型、压缩复杂路径规模并控制场景成本的方法
  • 掌握 AI 语义展开的适用边界,以及路径偏移和假覆盖的识别方法
  • 掌握新老系统差异的分层判定方式,以及从离线验真、真实流量回放到分阶段切流的工程决策框架

交通指南

上海建工浦江皇冠假日酒店

Shanghai Construction Group Pujiang Crowne Plaza Hotel
地址:上海市闵行区陈行公路 3701 号
  • 微信咨询

  • 电话咨询

    联系电话:18514549229

微信联系我们

如您在购票过程中遇到问题,请扫码咨询票务小助手