ソフトウェアのバグをどうやって防ぐのか。普通は「テスト」を書きます。コードが正しく動くかチェックするプログラムのことです。
そこで今日紹介するのは「ちょうどいいタイミングでバグを捕まえるテストを自動で作る」方法。テストを自動生成し、バグが本番環境に入り込む「前」に食い止める仕組みです。

まずそもそもの話として、「テスト」って何のためにあるのでしょうか。すごくざっくり言うと、「コードがちゃんと動いているか確認するための、もうひとつのプログラム」です。たとえば「1+1を計算する関数」があったら、「1+1の結果は2になる?」と確認するプログラムを別に書いておく。これがテストです。もし誰かがうっかりその関数を壊してしまったら、テストが「2じゃなくなってるよ!」と教えてくれるわけです。
しかし現実のソフトウェアはもっと複雑で巨大なので、人間が全部テストを書くことは大変です。
今回の内容は、大きく言うと2つの話が軸になっています。ひとつは「どうやってバグを見つけるテストを自動で作るか」というワークフローの話。もうひとつは「見つけたテスト結果をどう評価するか、本当にバグなのか誤報なのかをどう見分けるか」という成果と評価の話です。
以下で詳しく紹介します。