一张图讲清楚:AI 精准测试系统到底怎么设计

5 阅读4分钟

开头

很多团队想把 AI 接到测试平台里,第一反应是加一个聊天框:

输入需求,让 AI 生成测试点。

这个方向可以做 Demo,但很难真正落地。

因为一次真实发版的测试范围,不只取决于需求描述,还取决于代码变更、历史链路、覆盖率、缺陷记录、业务入口和团队执行情况。

所以,AI 精准测试系统的核心不是“AI 问答”,而是一套数据闭环。

1. 总体架构图

可以先用这张图理解整体结构:

flowchart LR
    A[代码仓库 / Git Diff] --> B[变更分析]
    C[Java Agent] --> D[链路采集]
    E[测试执行] --> F[覆盖率采集]
    D --> G[链路快照]
    F --> H[覆盖率报告]
    B --> I[风险分析服务]
    G --> I
    H --> I
    J[历史缺陷 / 用例库] --> I
    I --> K[AI 上下文构建]
    K --> L[AI 回归推荐]
    L --> M[测试执行清单]
    M --> N[结果复盘 / 指标看板]

这套架构不是为了炫技,而是为了回答一个具体问题:

本次变更应该测哪里,以及现在测得够不够?

2. 变更分析层:先知道改了什么

精准测试的第一步一定是变更分析。

输入通常来自:

  • Git Commit。
  • Merge Request。
  • 发布分支 Diff。
  • 需求关联的代码变更。

输出最好不要只停留在文件级,而是尽量到类和方法级:

变更文件:OrderService.java
变更类:OrderService
变更方法:createOrder, cancelOrder
变更类型:修改

方法级变更后续才能和调用链、覆盖率、用例更精确地关联。

3. Java Agent 采集层:记录运行态事实

静态 Diff 只能说明代码发生了变化,但不能说明业务请求如何经过这些代码。

Java Agent 的价值在于记录运行态事实:

  • 请求入口。
  • 调用类和方法。
  • 方法耗时。
  • 异常信息。
  • SQL、Redis、MQ 等资源访问。
  • TraceId 或请求上下文。

例如一次下单请求可能形成这样的链路:

POST /order/create
  -> OrderController#create
  -> OrderService#createOrder
  -> InventoryService#lockStock
  -> CouponService#useCoupon
  -> PaymentService#createPayOrder

InventoryService#lockStock 被修改时,平台就能知道它影响了下单链路,而不是只知道“库存服务有改动”。

4. 覆盖率采集层:确认测到了没有

覆盖率在精准测试里不是最终目标,而是证据。

我们真正关心的是:

  • 本次变更方法有没有被覆盖?
  • 高风险链路有没有被执行?
  • 异常分支有没有被触达?
  • 历史缺陷相关路径有没有回归?

因此覆盖率报告要从“总体百分比”升级为“增量覆盖证据”。

示例:

本次变更方法:PaymentCallbackService#handleCallback
覆盖状态:已覆盖
未覆盖分支:重复回调异常分支
关联历史缺陷:支付重复通知导致订单状态异常
建议:补充重复回调场景

这样的覆盖率才会直接影响测试决策。

5. 风险分析服务:把数据关联起来

有了 Diff、链路和覆盖率,还需要一个风险分析服务把它们串起来。

它可以做这些事情:

  • 变更方法关联历史调用链。
  • 调用链关联接口、RPC、MQ、定时任务。
  • 本次测试执行记录关联覆盖率。
  • 历史缺陷关联高风险模块。
  • 输出风险等级和优先级。

风险分析服务不一定一开始就很复杂。早期可以用规则实现:

如果变更方法未覆盖,并且出现在核心交易链路中,则标记为高风险。
如果变更方法已覆盖,但异常分支未覆盖,则标记为中风险。
如果变更方法只影响后台查询,并且已有自动化覆盖,则标记为低风险。

规则能先跑起来,AI 再做解释和补充。

6. AI 上下文构建:决定推荐质量

AI 输出质量取决于输入质量。

不要只给 AI 一句需求描述,而要构建结构化上下文:

需求背景:支付回调逻辑调整
变更方法:PaymentCallbackService#handleCallback
影响入口:POST /pay/callback, MQ: order-status-topic
本次覆盖:主流程已覆盖,重复回调分支未覆盖
历史缺陷:重复回调曾导致订单状态回滚
当前目标:推荐本次必须回归的场景

然后要求 AI 输出固定结构:

  • 变更摘要。
  • 风险等级。
  • 影响入口。
  • 必测场景。
  • 未覆盖风险。
  • 需要人工确认的问题。

结构化输入 + 结构化输出,是 AI 在工程平台里可用的前提。

7. 指标看板:让团队看到价值

精准测试最终要服务团队效率和质量,所以必须有指标。

建议至少看这些:

  • 增量代码覆盖率。
  • 变更方法覆盖率。
  • 推荐回归场景采纳率。
  • 未覆盖风险关闭率。
  • 回归测试耗时变化。
  • 缺陷逃逸率变化。

不要只汇报“接入了 AI”。管理层更关心的是:

  • 回归有没有更快?
  • 风险有没有更透明?
  • 漏测有没有减少?
  • 测试结论有没有更可解释?

8. 总结

AI 精准测试系统不是单个功能,而是一条链路:

Diff → Agent 链路 → 覆盖率 → 风险分析 → AI 推荐 → 执行复盘

其中 AI 不是起点,而是最后的解释、归纳和推荐层。

如果前面的工程事实不完整,AI 只会输出漂亮但没法执行的建议。

下一篇我会继续拆:Java Agent 在精准测试里到底能采集什么,以及采集边界应该怎么设计。