GitHub Copilot を使って実際に最初にテストを書く方法 (自分に嘘をつかずに)
テスト駆動開発はコードを書くよりもテストを書く方が時間がかかるため失敗します。 Copilot は計算を裏返し、これが本当に機能するワークフローです。
すべての開発者は、誰もがデンタルフロスを信じているのと同じようにテストを信じており、テストファーストの開発は同じ理由で失敗します。フロー状態にあるとき、テストを書くのは書類作成のために立ち止まっているように感じます。 Copilot は、テストを快適なものにすることではなく、書類上の異議が消えるほどテストを高速にすることで、私の数学を変えてくれました。これが実際に機能するワークフローです。
秘訣は、テストを仕様として記述し、Copilot にボイラープレートを実行させることです。実装に触れる前に、テスト名のシナリオと、予想される動作を平易な言葉で説明するコメントを含む、失敗するテストを作成します。 Copilot は、テスト ファイルがまさに Copilot が得意とするパターン化されたコードであるため、アサーション、モック、セットアップを驚くべき能力で埋めます。私の仕事は、テストが正しいことをテストしているかどうかをレビューすることに縮小しており、これは判断の判断であり、タイプすることではありません。
一度に 1 つの関数ごとにシナリオをバッチ処理します。開始する前にケース、ハッピー パス、空の入力、境界、エラーをリストし、Copilot にそれらを 1 回のパスで生成させ、セットを一緒にレビューします。 5 つのテストをセットとしてレビューすると、テストを 1 つずつレビューすることで見逃しているものが見つかります。欠落しているケース、通常はコードベースが以前に噛んだことがある奇妙なケースです。プリフライト プロンプトには、このモジュールの過去の運用インシデントをリストするコメント行が含まれるようになりました。これは、モデルに指示しない限り、モデルはそのコンテキストを認識できないためです。
AI を使用したテストファーストの正直なところは、AI がどこに誤解を招くかを把握することです。 Copilot は、ユーザーの間違った仮定を反映するテストを喜んで作成します。共通の誤解に基づいて構築されたグリーン スイートは、バグを防御するため、スイートがないよりも悪いです。解毒剤は安価であり、交渉の余地はありません。実装する前に、テストを実行して適切な理由で失敗するのを確認し、アサーションで予想される出力を意図的に中断し、テストがそれをキャッチすることを確認します。テストごとに 30 秒かかるため、スイートの正直さが保たれます。
これにより、実際に私に得られたものは、コストがほぼゼロに下がったため、これまで作成することのなかった退屈なパス、入力検証、およびエラー処理をカバーできるようになりました。納得できなかった点: コードが何をすべきかについて考えることを省略する口実。テストファーストは常に役に立つと考えられていました。赤、緑、リファクタリングのリズムはそのまま残ります。 Copilot は、赤テストを書くことが税金のように感じられる部分を削除しただけです。
