テストの問題
順序には意味がない。思いつくことをすべて書く。
そもそも何をテストすべきかがハッキリしない。
何が正解かがハッキリしない。
どうテストすべきかがハッキリしない。
思い付かないことはテストできない。
テストケースを書くのに多大な時間がかかる。
データの作り込みが難しい。
テストの自動化が難しい。手作業になる。
テスト結果の判定が難しい。
結果の取得が困難。(目視しか方法がないなど。)
単純な値だけであれば判定できるが、大量データ、複雑なデータになると困難になる。
全網羅が難しい。
組み合わせが爆発する。
例外などの特殊ケースをテストするのが難しい。
タイミングに関わるテストが難しい。
時間や乱数、以前の処理、外部状態による変動があるために、テスト結果が完全に一致しない。
テストの過程で同じような処理が何度も現れるが、細かなケースが異なるのでまとめにくい。コピペによる乱造になる。
仕様変更に伴うテストの変更が多大になる。
テストを作れば作るほどそれが負債化する。
不要な仕様ならテストは全部不要になる。(せっかく作ったのに)
仕様の変更がテストの数だけ必要となる。
無意味なテスト(テストが必ず成功する、テストによって品質が上がらない)を作りがち
簡単なテストはすぐに思いつくので、そちらに飛びついてしまう。
getter/setter に対するテストなど。
テスト件数が品質目標に掲げられている時に、水増しとして無意味なテストが追加される。