2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「なぜテストを書くのかは「テストを書いてよかった」という体験を通して、はじめて気づけるものです。」

Posted at

はじめに

◆この記事は何?
テストを書く理由について紹介する記事です。

◆対象は?
エンジニア
特にテストコードを書いていないエンジニア

◆この記事のねらい

  • テストを書き始めるきっかけになること
  • テストを継続的に書く動機づけになること

先に結論

  • テストを書く理由は多岐にわたる
  • これらの理由は、個人の心理や主観になる場合がある
  • 体験を通じて「自分なりのテストを書く理由」を見つける

「テストを書いて良かった」という体験

なぜテストを書くのかは「テストを書いてよかった」という体験を通して、はじめて気づけるものです。」は、書籍『フロントエンド開発のためのテスト入門』に出てくる印象的なフレーズです。本書の中で私が最も共感できた一文でした。

書籍『フロントエンド開発のためのテスト入門』の主題は、書籍名の通りフロントエンド開発ですが、第1章「テストの目的と障壁」と第2章「テスト手法とテスト戦略」は、全てのエンジニアにとって有益な内容です。

テストを書くメリットは心理的なもの、だから体験した方がいい

テストを書く理由の説明で私がよく聞くのは、「質とスピード」の損益分岐点を用いた説明です。

「テスト自動化の損益分岐点は4回」

他にも次のようにテストを書く理由は説明できます。

  • 自分の実装の正しさを保証するた
  • PR レビューの工数を下げる
  • リファクタリングを実施しやすくするため
  • コードの品質を高めるため
  • テストそのものの工数を削減するため
  • バグを潰すため
  • 仕様書の代わりになるため

参考: 「なぜテストコードを書くのか?」

上記のように様々な説明方法がありますが、私は最終的には心理的な理由に帰着すると考えます。

「JJUG CCC 2024 Spring:テストコードが根付くチームを立ち上げるために考えたいこと」では、次のように紹介されています。

テストを書くようになった理由を聞いてみると、「自信を持つため」「楽しいから」といった心理的なものだった

書籍『フロントエンド開発のためのテスト入門』でも、次のように言及されています。

テストコードを書くことは、自身が書いたコード品質を見直す機会になります。(中略)様々な観点でコードを見直す機会が生まれるので、実装品質に対してより自信を持つことができます。

テストコードを書き続けると、自信や楽しさを得られます。

テストコードによって、プログラミングの楽しさを、開発の楽しさを増強してくれます。

テストを書く理由が心理的なものだからこそ体験が重要です。

テストに答えがない、だから体験した方がいい

テストは、人によって言うことが異なります。

「我々はなぜテストを書くのか / Why we write test codes」では次のように紹介されています。

それぞれのテストコードがある
人によって時によって言ってることが違うように聞こえる

この資料では、テストには答えがないと指摘しながら、答えがないことへの取り組み方を紹介されています。

テストを書く理由が心理的なものに帰着するとすれば、人によって時によって言ってることが違うのは腑に落ちます。テストを書く理由は主観的と言えます。

テストに答えがないからこそ、テストを書く人によって理由が異なります。だからテストコードを書いて、「テストを書いて良かった」という体験した方が良いと考えます。

おわりに

この記事では、テストコードを書く理由が様々あり、心理的なものになること、主観的になること、答えがないことを紹介しました。

自分なりの「テストコードを書く理由」を見つける一助となれば幸いです。

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?