単体テスト
要点
- 単体テストとは、プログラムの最小単位(関数やメソッドなど)が仕様通りに動くかを検証するテストです。
- 開発者自身が、コードを書きながら・書いた直後に行うことが多いテストです。
- 開発の最も早い段階で不具合を見つけられるため、修正コストを抑えられます。
単体テストとは
単体テストは、システムを構成する部品(モジュール)の中でも最も小さい単位である「関数」や「メソッド」を対象に、それぞれが期待通りに動くかを確認するテストです。システム全体ではなく、部品ひとつひとつに焦点を当てる点が特徴です。
🔑 身近な例車を組み立てる前に、エンジン単体・ブレーキ単体で動作確認をするのに似ています。部品ひとつひとつがきちんと動くことを確かめておくからこそ、後で組み立てたときのトラブルを減らせます。
何を検証するか
単体テストでは、ある関数・メソッドに対して「入力(引数)を渡したときに、期待した通りの出力(戻り値)が返ってくるか」を確認します。
実行
確認
この確認を、正常な入力だけでなく、想定外の入力やぎりぎりの値についても行います。
テストケースの考え方
単体テストのテストケースは、主に次の3つの観点で用意します。
これらを組み合わせることで、思わぬ入力によるバグを未然に防ぎやすくなります。
自動化とテストコード
単体テストは、テストコードとして書いておき、ツールを使って自動的に実行するのが一般的です。JavaScriptの「Jest」やJavaの「JUnit」、Pythonの「pytest」などが代表的なツールです。
一度テストコードを書いておけば、プログラムを変更するたびに何度でも同じ確認を繰り返せます。手作業での確認と違い、確認漏れやヒューマンエラーが起きにくいのも利点です。
単体テストのメリットと限界
単体テストには大きなメリットがある一方で、これだけでは確認できないこともあります。
部品同士がうまく連携できるかどうかは、次の工程である「結合テスト」で確認します。
まとめ
単体テストは、プログラムの最小単位が仕様通りに動くかを検証するテストで、開発者自身が早い段階で行うことが多い工程です。正常系・異常系・境界値の観点でテストケースを用意し、自動化することで効率よく品質を確保できます。
関連トピック: