単体テスト

要点

  • 単体テストとは、プログラムの最小単位(関数やメソッドなど)が仕様通りに動くかを検証するテストです。
  • 開発者自身が、コードを書きながら・書いた直後に行うことが多いテストです。
  • 開発の最も早い段階で不具合を見つけられるため、修正コストを抑えられます。

単体テストとは

単体テストは、システムを構成する部品(モジュール)の中でも最も小さい単位である「関数」や「メソッド」を対象に、それぞれが期待通りに動くかを確認するテストです。システム全体ではなく、部品ひとつひとつに焦点を当てる点が特徴です。

🔑 身近な例車を組み立てる前に、エンジン単体・ブレーキ単体で動作確認をするのに似ています。部品ひとつひとつがきちんと動くことを確かめておくからこそ、後で組み立てたときのトラブルを減らせます。

何を検証するか

単体テストでは、ある関数・メソッドに対して「入力(引数)を渡したときに、期待した通りの出力(戻り値)が返ってくるか」を確認します。

入力値を渡す
関数・メソッドを
実行
期待した出力か
確認

この確認を、正常な入力だけでなく、想定外の入力やぎりぎりの値についても行います。

テストケースの考え方

単体テストのテストケースは、主に次の3つの観点で用意します。

正常系想定通りの入力で正しい結果が返るか
境界値上限・下限ぎりぎりの値で正しく動くか
異常系誤った入力に対して適切にエラー処理されるか

これらを組み合わせることで、思わぬ入力によるバグを未然に防ぎやすくなります。

自動化とテストコード

単体テストは、テストコードとして書いておき、ツールを使って自動的に実行するのが一般的です。JavaScriptの「Jest」やJavaの「JUnit」、Pythonの「pytest」などが代表的なツールです。

一度テストコードを書いておけば、プログラムを変更するたびに何度でも同じ確認を繰り返せます。手作業での確認と違い、確認漏れやヒューマンエラーが起きにくいのも利点です。

単体テストのメリットと限界

単体テストには大きなメリットがある一方で、これだけでは確認できないこともあります。

メリット不具合を最も早い段階・小さい範囲で見つけられる
限界部品同士を組み合わせたときの連携までは確認できない

部品同士がうまく連携できるかどうかは、次の工程である「結合テスト」で確認します。

まとめ

単体テストは、プログラムの最小単位が仕様通りに動くかを検証するテストで、開発者自身が早い段階で行うことが多い工程です。正常系・異常系・境界値の観点でテストケースを用意し、自動化することで効率よく品質を確保できます。

関連トピック:

🏠 トップに戻る