SDE / SDE2 · AI Coding / Debug

Amazon AI Coding:已有 Repo 的失败测试怎样定位与修复?

把Test→Route→Handler→Data→Response连接起来,核对最小补丁与AI建议,原始代码缺失仍待核。

题目重点:把Test→Route→Handler→Data→Response连接起来,核对最小补丁与AI建议,原始代码缺失仍待核。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 原repo、完整failed tests、guardrail和exact bug未在本地公开;文章教诊断方法,不给伪造原题patch或“六测试答案”。
  • 样例为虚构API任务,正式题必须以提供的测试/接口合同为准,不能把作者某次时长当所有OA统一规则。
  • AI使用以题面可用能力为准;不假设可以读任意文件、执行命令或代替候选人直接改代码。

解题路线

  1. 先运行最小可复现失败,保存test名称、输入、expected/actual、traceback与代码位置;按endpoint/症状分组,多个失败可能同根,不先改每个断言对应函数。
  2. 读取test到route到handler,再到query/model和response。检查URL实际命中的函数、参数来源、缺省/边界、filter组合、字段类型、排序tie、返回status/schema及写操作是否真的persist。
  3. 建立候选原因和反证:若数量对但顺序错,不重写查询全部逻辑;若500先沿traceback定位。没有query但有filter是独立输入合同,不能默认必须两个参数都有。
  4. 给AI最小上下文与明确假设,请它列证据和最小改动,并自己核对schema/测试。生成建议即使语法正确也可能修改了API合同或隐藏数据问题,须能亲自解释。
  5. 补丁在业务代码修因,不删失败测试、硬编码样例或改expected掩盖问题。先跑相关失败,再跑相邻成功路径与必要集成,避免单测绿但数据库未写或错误响应不一致。
  6. 时间分配按任务实际预算:保留阅读、第一修复与回归段;只提交能解释和验证的改动,未修项说明症状/假设,不凭AI信心假称全部完成。

手动走一遍

虚构训练例:/movies?year=2020测试数量对但顺序错,定位到排序缺第二key后补稳定tie,而不是改数据过滤;另一个POST返回201但未persist,应核保存与事务,不把“成功status”当写成功。这里不是题目六个test。

规模与取舍

主要成本在代码范围和测试执行,复杂度随repo与依赖变化,不能报固定O(1)。验证按具体剩余风险选择;原repo缺失使本文无法确认某个真实bug已经修复。

易错点与追问

容易失分的边界

  • 跳过test/route直接修改猜测位置。
  • 修改expected或硬编码样例。
  • AI生成补丁无法解释。
  • 返回成功但未持久化。

继续深挖

  • 如何判断多个fail是同一个根因?
  • 单位测试绿但集成失败怎么办?
  • AI建议新依赖而环境不允许怎么办?
✓已复制微信号!