自動テストのテストコードを書こう!というのは、10年くらい前から叫ばれています。
しかし、実際にテストコードを書くかどうかは案件によって半々です。
自動テストのメリット
自動テストのメリットは、何回も繰り返せることにあります。
手動テストは、繰り返しに向いておらず、その都度エンジニアが手を動かす必要があります。
上記の自動テストのメリットは、仕様変更が入った場合にとても役に立ちます。
仕様変更が入った場合、その影響範囲が大きければ大きいほど、本来、テストをやり直す必要も大きくなるはずです。
この時、自動テストであればテストコードのちょっとした修正だけでテスト完了できます。
しかし、手動テストの場合は、修正箇所に係るテストケースをやり直すことになります。
ウォーターフォール VS アジャイル開発
自動テストは繰り返しやった分だけ、利用価値が上がります。
繰り返しが不要、もしくはあまり発生しないワークフロー、例えばウォーターフォールでしっかり設計書レビューもしている場合、仕様変更発生の可能性は低いかもしれません。
そのため、自動テストは新規開発時に1度作って実行したら終わりになるかもしれません。エンジニアとしては価値を感じにくいでしょう。
一方、アジャイル開発ではウォーターフォールの時ほど最初から仕様を固めず進んでいくでしょう。
そうすると、開発を進めていく中で仕様変更は発生しやすくなります。進めているうちに、やっぱりこうだよね、もうちょっと進めてからあれも必要だよねと、仕様は変わっていきます。
そうすると、その都度手動テストをするのは時間がかかりますし、エンジニアのモチベーションも下がってしまいます。
自動テストが導入されていれば、手動テストの時ほどテストに要する時間はかからないでしょう。
自動テスト導入の是非
自動テストはチームで話あって、戦略的に取り入れる必要があります。
自動テストのコーディングとメンテナンスには時間というコストがかかるため、導入するならば品質担保という視点から、「どこからどこまでは自動テストにする、そのため手動テストは省く。手動テストでやる部分はここ。」という具合に、全体戦略を考えてからやりたいものです。
自動テストは「繰り返しテストが発生するシーンで価値がある」ということを押さえてもらって、ウォーターフォール以外の開発では導入するメリットが大きくなります。
もちろん、ウォーターフォールでもテストコードのメンテナンスコストが許容されるなら、是非導入するべきです。