単体テストの解説(ITパスポートシラバス用語)

目次

単体テストとは

単体テスト(たんたいてすと)とは、開発したプログラム全体を一度にテストするのではなく、プログラムを構成する「最小の部品(関数やクラス、メソッドなど)」が、それぞれ単体で正しく動くかどうかを確認する最初のテスト工程です。英語では「ユニットテスト」とも呼ばれます。

家づくりに例えると、家全体の組み立てを始める前に、使用する柱やレンガ、ドアノブなどの各パーツ自体に傷がないか、強度や寸法が正しいかを個別にチェックする作業に似ています。この段階で個々の部品の欠陥を見つけて直しておくことで、後の工程で大きな手戻りが発生するのを防ぐことができます。

具体例

例えば、スマートフォンのアプリで「生年月日を入力すると、現在の年齢を計算する関数」を開発したとします。この関数に対する単体テストでは、以下のような検証を行います。

  • 正しい日付(例: 2000年1月1日)を入力したときに、期待通りの年齢が返ってくるか
  • 未来の日支(例: 2050年1月1日)のような不正な値を入力したときに、正しくエラーを表示するか
  • うるう年の2月29日を入力しても計算がずれないか

このように、プログラムの小さな塊ごとに様々なデータを入力して動作を確認します。

もう少し詳しく

単体テストは、主に開発者がプログラムの実装直後に実施するテストです。このテストでは、コードの内部構造を意識した「ホワイトボックステスト」がよく用いられます。ホワイトボックステストでは、プログラム内のすべての条件分岐(if文など)や繰り返し処理が意図通りに実行されるかを確認します。単体テストの自動化には、JUnitやpytestといった「xUnit」と呼ばれるテストフレームワークが広く使われています。テストを自動化しておくことで、コードを変更した際に他の部分が壊れていないかを瞬時に確認する「回帰テスト(リグレッションテスト)」を容易に行うことができ、開発の生産性と品質が大幅に向上します。また、単体テストを行うことで、プログラムの仕様上の矛盾や考慮漏れ(境界値の処理ミスなど)を早い段階で発見し、修正コストを最小限に抑えることができます。

試験でのポイント

ITパスポート試験では、ソフトウェア開発プロセスの流れにおける単体テストの位置づけが問われます。テスト工程は「単体テスト → 結合テスト → システムテスト → 運用テスト」の順に進むことを整理しておきましょう。また、開発者自身がテストを行うことが多い点や、モジュール(部品)単体の動作を確認するという目的をしっかりと押さえてください。間違いやすい点として、システム全体を動かして性能や業務要件を確認する「システムテスト」や「運用テスト」との違いがあります。単体テストでは、データベースとの連携や外部システムとの接続は行わず、スタブやドライバといったテスト用のダミー部品を用いて、対象のモジュールのみを隔離してテストを行うという特徴も重要です。

関連する用語

結合テスト、システムテスト、ホワイトボックステスト、回帰テスト

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ