メインコンテンツまでスキップ

なぜテストを書くのか

実際にテストコードを書き始める前に、「なぜテストコードを書く必要があるのか?」から考えてみます。

正直、アプリの規模が小さいうちはテストコードの恩恵はそこまで大きくありません。

むしろテストを書く時間を費やす分、開発スピードが落ちるかもしれません。

しかし、規模が大きいアプリでは話が変わってきます。

規模が大きいアプリはコード量が膨大です。

機能追加・バグ修正・リファクタリングなどで定期的にコードのメンテナンスが必要となります。

テストコードがあると「コードのメンテナンス」をより安全に行えます。

具体例

では実際に、テストコードがあるときとない時でどんな違いがあるかを見ていきましょう。

テストコードがない場合

テストコードがない状態で、規模が大きめのアプリのリファクタリングを行なったとします。

先ほども話したように、規模が大きめのアプリはコード量が膨大となります。

どのファイルがどのファイルに影響を与えているかを目視で把握するのは大変な作業となります。(全てのファイルの依存ファイルを確認するのは骨が折れる作業)

つまり、「機能追加」「バグ修正」「リファクタリング」といった既存コードに手を加える作業を、「ここのコードの修正をしても、現在動いているアプリに影響なく済むかな...」と自信を持って行うことができません。

テストコードがある場合

テストコードを書いていると、「機能追加」「バグ修正」「リファクタリング」を行う際に、目の前の開発に集中することができます。

なぜなら、その修正によって何か不具合が発生したとしても、本番反映させる前に、テストコードの自動化によって「問題があればテストでエラーを教えてくれる」からです。

もちろんテストコードで全てのエラーに対応できるとは限りません。(全てのテストを書けているとは限らないため)

しかし、その都度テストコードを追加していけば、より強固なテストになります。

その結果、テストコードを書いていない時と比べて、アプリの保守・運用のコストがだいぶ小さくなります。

個人的な意見

テストコードはメリットだけでなく、デメリットもあります。

デメリットでパッと思い浮かぶものを 3 つほど以下に書き出してみました。

  • テストコードを書く分の時間を費やすことになる
  • 全てのテストを書けているとは限らない
  • 仕様がコロコロと変わると、テストコードも都度変更の対応をしないといけない

全ての想定しうる可能性に対するテストコードを書こうとすると、アプリの機能開発がなかなか進められなくなるかもしれません。

これは個人的な考えになりますが、開発初期段階では、全てのパターンのテストを書こうとするのではなく、コスパの良いテストコードを書いていくと良いかなと考えています。

ここでいう「コスパの良いテストコード」とは「アプリのクリティカルな部分だけテストを書く」というものです。

例えば、アプリの中で決済を行う処理があるとすれば、決済部分の処理はお金が動く「特にミスがゆるされない部分」です。

この「特にミスが許されない部分」を重点的にテストを書いて、あとから開発の余裕が出てきた時に優先度が低かった部分のテストを書いていくと、スピード感を持って開発が進められるのではないかなと考えています。(特に開発規模がまだ小さい段階のとき)

テストコードを書くスキルは、開発の現場でも使われるスキル

ここまで色々と書いてきましたが、既存サービスの保守・運用の仕事をする場合、テストコードを書く場面が出てきます。

テストコードの書き方は覚えておいてそんでないので覚えておくことをおすすめします。

個人的な意見

未経験から Web エンジニア就職・転職を目指している人のコードを見た時に、テストコードが書かれていると、「お!テストコードちゃんと書いてるじゃん!」という気持ちになります。

さらに、「どうしてテストコードを書いているかの説明」までできたら、かなりの好印象を持ちます。

個人的な意見になりますが、テストコードをすっきりと書けているコードを見ると、「成長スピード早そう」「センスありそう」と感じます。

それでは次の章から、実際にテストコードを書いていきましょう。