Railsチュートリアルでは細かくテストを書かされます。
開発に慣れてくると最初にテストを書くらしい。
テストを書く手間はあるが、バグを追う時間が短縮されるので結果的に開発速度が上がるそうです。
ポートフォリオ用アプリケーションなどはテストなどの細部まで作り込むと時間効率が悪くなるので、後から必要な部分のテストを書いていくというやり方でもいいのではないかと考えてます(相対的に優先度が低いだけで重要なのは変わりない)。
テストを”先に書く”場合と”後で書く”場合の違いをまとめてみました。
先に書く
・アプリケーションのコードよりも明らかにテストコードの方が短くシンプルになる(=簡単に書ける)
・セキュリティが重要な課題またはセキュリティ周りのエラーが発生した場合
・バグを見つけたら再現する。回帰バグを防ぐ体制を整えてから修正に取りかかる
・リファクタリングするとき。特に、エラーを起こしそうなコードや止まってしまいそうなコードを集中的にテストする
後で書く
・動作の仕様がまだ固まりきっていない場合、アプリケーションのコードを先に書き、期待する動作を書く。
・すぐにまた変更しそうなコード(HTML構造の細部など)
テスト駆動開発のサイクル
失敗するテストを最初に書く
→アプリケーションのコードを書いて成功させる(パスさせる)
→必要ならリファクタリングする