【要約】pytestのassertion差分を読んで失敗を10分で切り分ける──最小再現とClaude Codeの頼み方 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者がpytestのテスト失敗に直面した際、スタックトレースを漫然と読み、原因の特定が不十分なまま修正を試みてしまう問題がある。このままでは、複雑な失敗に対して誤った修正を加えてしまうリスクが高い。具体的には以下の課題が挙げられる。
- ・失敗が複数ある場合に、どのテストが問題か迷子になる。
- ・原因が曖昧なままコードを直すと、誤った前提の上に修正が積み上がる。
- ・AIに対し「直して」とだけ指示すると、回答が曖昧で精度が上がらない。
// Approach
本記事では、修正を行う前に「原因の確定」を最優先するアプローチを提案している。まずpytestの差分表示機能を機械的に読み解き、次にテストケースを最小限に絞り込む。具体的なステップは以下の通りである。
- ・pytestの差分(E行や+ where行)を、決まった順番で読み解く。
- ・pytestのオプション(-x, -k, --lf, -vv)を使い、失敗ケースを特定する。
- ・Claude Codeに対し、修正ではなく「原因の切り分け」に特化したプロンプトを送る。
- ・AIには、差分の意味、原因の候補、確認用のコマンドを提示させる。
// Result
この手法を導入することで、デバッグの精度向上と作業時間の短縮を実現できる。推測に頼らず、事実に基づいた修正が可能になる。得られる成果は以下の通りである。
- ・「どのケースが・何と何で食い違ったか」を、推測ゼロで確定できる。
- ・AIを活用し、原因の候補を確からしい順に整理し、検証手順まで得られる。
- ・浮動小数点誤差などの「テスト側の不備」も、差分から見分けられる。
- ・手戻りのない、確実な修正プロセスが構築できる。
Senior Engineer Insight
> デバッグの鍵は「修正の速さ」ではなく「判断の速さ」にある。AIを単なるコーダーではなく、高度な分析官として扱うこの手法は、実戦において極めて有効だ。特に大規模なテストスイートを持つ環境では、失敗の切り分けに要する時間を最小化することが、開発全体のスループットに直結する。AIへの指示を「修正」から「切り分け」へ分離する設計思想は、プロンプトエンジニアリングの観点からも理にかなっている。