Posted at

ユニットテスト(単体テスト)の大切さ

こんにちは、サム (@sbenemerito) です。奥多摩の留学生で、日本語を勉強しています。2018年10月に日本にフィリピンから来ました。

この記事で、ユニットテストについて話します。ユニットテストとは「単体テスト」を意味しています。目的は、ユニットテストを知らない人とかユニットテストを書いたことがない人にユニットテストを紹介します。


ユニットテストとは

ユニットテストとは、プロジェクトの部分が個々の機能を正しく果たしているかどうかを検証するテストです。その部分は「単位」か「ユニット」と呼ばれることです。通常、プロジェクトの関数がユニットテストの単位(ユニット)となります。そして、ユニットテストは、開発時など早い時で開発者によって実施されることです。それで、利用者の観点からは、ユニットテストを見ることができません。

たとえば、プロジェクトに郵便番号を入力関数を追加したいです。その関数を作りながら、ユニットテストを使って、無効なデータとか郵便番号の書式のような見つけにくい論理の欠点を簡単に見つけることができます。それで、開発者はコードが正しくて機能的に自信が上げるようになります。その自信は大事なこと(特に大きな事業のソフトウェアの開発時)です。

ユニットテストのコードは開発者が書くので、プロジェクトのコードをわかることが必要です。プロジェクトの開発者が書いたテストが一番いいユニットテストです。


大切さ・メリット



  • コードの品質が上げます。総合テスト前に欠陥を見つけろことができます。また、コード作成時前など早い段階でユニットテストを書くによって、コードをやりたいことについてもっと考えることができます。


  • 開発がより敏捷になります。プロジェクトにいくつかの関数を追加したら、時々、先のデザインかコードを変更しなければなりません。テストしたコードを変更することが危なくて時間をかけることが可能です。でも、もしユニットテストがあったら、テストしたコードを変更することが自信を持って、簡単にできます。


  • 他のコードに影響を与える可能性が低くなります。開発者は統合前に自分で書いたコードをテストするので、欠陥を早くに見つけます。


  • ドキュメンテーションを提供します。 ユニットによって提供される機能とその使用方法を学びたい開発者は、ユニットテストを調べてユニットの構造の基本的な知識を得ることができます。


  • コストを引き下げます。 バグ直することはコストがあります(特にシステム総合後に発見されたバグ)。早くに発見されたバグは修正がより簡単です。なぜなら後に発見されたバグは通常多くの変更の結果であり、バグの原因を見つけにくいです。

ユニットテストはたくさんのメリットがありますが、いくつかの不利益もあります。


不利益



  • ユニットテストを書くことは時間をかけます。たとえば、小さいプロジェクトでは、テストによる厳密な品質管理より、締め切りに間に合うのほうがいいです。


  • 考えられるすべてのシナリオを実行することが不可能です。テストデータは開発者の考えに限定されていますので、確認が完璧じゃないです。


まとめ

小さいプロジェクトより、大きなプロジェクトにユニットテストほうがいいです。小さいプロジェクトもユニットテストから利がありますが、ユニットテストがちょっと時間がかかりますので、「本当に必要ですか?」か「締め切りに間に合いますか?」のような質問をプロジェクトマネージャーが決めなければなりません。

基本的に、ユニットテストにやる価値があります。ほとんどの開発者にとって、ユニットテストはいつも必要ですが、たぶん小さいプロジェクトには、必要じゃありません。もし未来にプロジェクトが大きくなりたいなら、早くにユニットテストにやるほうがいいです。