はじめに
◆この記事は何?
テストを書く理由について紹介する記事です。
◆対象は?
エンジニア
特にテストコードを書いていないエンジニア
◆この記事のねらい
- テストを書き始めるきっかけになること
- テストを継続的に書く動機づけになること
先に結論
- テストを書く理由は多岐にわたる
- これらの理由は、個人の心理や主観になる場合がある
- 体験を通じて「自分なりのテストを書く理由」を見つける
「テストを書いて良かった」という体験
「なぜテストを書くのかは「テストを書いてよかった」という体験を通して、はじめて気づけるものです。」は、書籍『フロントエンド開発のためのテスト入門』に出てくる印象的なフレーズです。本書の中で私が最も共感できた一文でした。
書籍『フロントエンド開発のためのテスト入門』の主題は、書籍名の通りフロントエンド開発ですが、第1章「テストの目的と障壁」と第2章「テスト手法とテスト戦略」は、全てのエンジニアにとって有益な内容です。
テストを書くメリットは心理的なもの、だから体験した方がいい
テストを書く理由の説明で私がよく聞くのは、「質とスピード」の損益分岐点を用いた説明です。
「テスト自動化の損益分岐点は4回」
他にも次のようにテストを書く理由は説明できます。
- 自分の実装の正しさを保証するた
- PR レビューの工数を下げる
- リファクタリングを実施しやすくするため
- コードの品質を高めるため
- テストそのものの工数を削減するため
- バグを潰すため
- 仕様書の代わりになるため
参考: 「なぜテストコードを書くのか?」
上記のように様々な説明方法がありますが、私は最終的には心理的な理由に帰着すると考えます。
「JJUG CCC 2024 Spring:テストコードが根付くチームを立ち上げるために考えたいこと」では、次のように紹介されています。
テストを書くようになった理由を聞いてみると、「自信を持つため」「楽しいから」といった心理的なものだった
書籍『フロントエンド開発のためのテスト入門』でも、次のように言及されています。
テストコードを書くことは、自身が書いたコード品質を見直す機会になります。(中略)様々な観点でコードを見直す機会が生まれるので、実装品質に対してより自信を持つことができます。
テストコードを書き続けると、自信や楽しさを得られます。
テストコードによって、プログラミングの楽しさを、開発の楽しさを増強してくれます。
テストを書く理由が心理的なものだからこそ体験が重要です。
テストに答えがない、だから体験した方がいい
テストは、人によって言うことが異なります。
「我々はなぜテストを書くのか / Why we write test codes」では次のように紹介されています。
それぞれのテストコードがある
人によって時によって言ってることが違うように聞こえる
この資料では、テストには答えがないと指摘しながら、答えがないことへの取り組み方を紹介されています。
テストを書く理由が心理的なものに帰着するとすれば、人によって時によって言ってることが違うのは腑に落ちます。テストを書く理由は主観的と言えます。
テストに答えがないからこそ、テストを書く人によって理由が異なります。だからテストコードを書いて、「テストを書いて良かった」という体験した方が良いと考えます。
おわりに
この記事では、テストコードを書く理由が様々あり、心理的なものになること、主観的になること、答えがないことを紹介しました。
自分なりの「テストコードを書く理由」を見つける一助となれば幸いです。