2種類のテストデータ
https://gyazo.com/4fc110db69fe29797a5784e731d72264
Aのテストデータは、現状ですべてOKか、1個だけNGぐらい
動いていた機能を意図せず壊してないかを確認するためのテスト
全部 OKなのが普通の状態
たくさんNGだと人間がパンクする
一つNGになるテストケースを追加して、それからそれがOKになるように実装する
これがあると安心して修正ができる
Bのテストは理想的状態を記述したテスト
現状ですべてOKになるようでは目的を果たせていない
たくさんNGがでる
人間がNGケースの全体を把握することが本質的に難しい
そこで正解率などの統計量を観察する
この種のテストデータが十分蓄積すれば、機械学習を使うことが可能になる
しばしば、Bのテストデータをゼロから作ることが困難なので、プログラムの出力のおかしなところだけを手直しすることで作ることがある
そもそも「プログラムが理想的な挙動をしない」が前提になってる
AとBを混ぜてはいけない
混ざったものをAとして使うと、どうすれば改善できるかわからない大量のNGに押しつぶされる
混ざったものをBとして使うと、機械学習が理想に近づくことではなく現状を維持することを重視してしまう