SuperAPI AI 工具集

tidb-test-diff-triage

测试与质量

查看项目

更新于 10-16 08:05

技能介绍

用途:排查 TiDB 测试中突然出现、但与当前 PR 改动无关的 diff,尤其在 merge/rebase 后 plan、result 或 testdata 发生变化,或单次测试与全量测试输出不一致时使用。

主要能力与步骤: 一是先排除 failpoint 配置问题。TiDB 许多测试行为依赖 failpoint 注入,-tags=intest,deadlock 并不会启用 failpoint。可参考 docs/agents/testing-flow.md 的 Failpoint decision 检查受影响包;若存在命中,改用启用 failpoint 的方式重跑,并在 go test 命令中加 -count=1 以保证可复现。若启用后 diff 消失,应归类为环境/配置问题,而非逻辑回归。 二是隔离 merge 影响。若非 failpoint 导致,用最小目标复现,例如 -run <TestName> -count=1,比较 good/bad commit 并在合并区间内二分定位,先找到首个坏 commit 再更新预期输出。资料给出的命令为: git bisect start git bisect bad <bad_commit> git bisect good <good_commit>

三是在原因确认后才更新 testdata。只有上游合并有意改变优化器行为,或原有测试预期已过时但查询语义未变时,才同步预期 plan/result;根因未定位前不要记录或更新 testdata。

调查记录输出格式:症状(diff 变化内容)、范围(单测还是全量)、failpoint 检查(命令与结果)、首个坏 commit(哈希与标题,如已二分)、结论(环境问题/上游行为变化/本地回归)、行动(启用 failpoint 重跑、同步预期或继续修代码)。

限制:资料未提供适用版本、自动化工具或更完整的命令行参数说明。