単体テストと統合テストの違いについて学習したため、備忘録として残しておきます。
参考にさせていただいた記事はこちらです。▼
システム開発の工程の「単体テスト」と「結合テスト」の違いを徹底解説!
単体テストと統合テスト
- システム開発の工程の1つ。
よくあるシステム開発の流れ
- 要件定義
- 外部設計
- 内部設計
- プログラミング(構築)
- 単体テスト
- 結合テスト
- システムテスト
- 運用テスト
- システム移行
単体テストとは
一言で
- プログラミングの対象単位ごとに行うテスト。
- この単位をモジュールと呼んだりする。
- 単純作業になりがちなこともあり、効率が求められる工程でもある。
- (例)モデルクラスごと
詳細
- 別名:ユニットテスト
- 1つの画面、1つの機能(関数)など、小さな単位ごとに行うテストなのが特徴。
- 条件分岐を網羅する。
- 手法は2種類ある。「ホワイトボックステスト」と「ブラックボックステスト」。
- 「単体テスト仕様書」に則って実施する。
ホワイトボックステストとは
- プログラムが設計したとおりに動作するかを1つ1つ網羅的に確認するテスト手法。
- つまり、「開発者側の視点」にたったテストと言える。
- 例:設計書に「エラーが発生する」と定義されている文字列を入力してみて、出力結果が正常かどうか検証する。
- メリット:1つ1つのモジュールに対して網羅的に検証できること
- デメリット:工数増
ブラックボックステストとは
- 開発するシステム自体の仕様を満たしているかどうかを確認する機能のテスト手法。
- つまり、「利用者側の視点」にたったテストと言える。
- 内部のプログラムについては考慮しないため、「ホワイトボックス」とは逆の「ブラックボックス」と呼ばれる。
- 例:設計書に「0~100までの数値」を「正常」と設定した場合、境界付近である値(例えば、0、-1など)を選んでテストする。
- 理由:境界付近にプログラムの欠陥が多いため。
- メリット:利用者の要件を満たしていることが確認できるため、工数を抑えることができること
- デメリット:プログラムの内部処理が適切に行われているかが分からないこと
統合テストとは
一言で
- 複数のモジュールを組み合わせて行うテスト。
- テスト項目の洗い出しが難しい。
- (例)ユーザーの新規登録用画面から値を入力、送信して、データベースにレコードが追加されるまでの流れ
詳細
- 別名:コンバインドテスト(combine:組み合わせる)
- モジュール同士を結合させたときに設計通りに動作するか、想定外のエラーが出てもシステム要件が満たされているかを検証するのが特徴。
- 単体テストで正常を確認できたモジュール同士を組み合わせたり、その他の外部モジュールを結合したテストを行ったり。
- 単体テストの結果、1つ1つの機能にエラーがなかったとしても、連携させると問題が発生するケースがあるため、システムの全体的なデータの流れを把握ができる技術が求められる。
- 手法は2種類ある。「インターフェーステスト」と「ブラックボックステスト」。
インターフェーステストとは
- 定番のテスト手法。
- 「連結テスト」とも呼ばれる。
- インターフェースとは、モジュール同士を接続したときに、データの引き渡しを仲介する仕組みのこと。
- 機能間やモジュール間でデータを引き渡す際に、引き渡されるべきデータがきちんと引き渡されているか、連携に関わるモジュールが設計した通りに正常に動作しているかなどを検証する。
ブラックボックステストとは
- 上述の通りで、プログラムの内部構造を考慮せず、入力に対して正常な出力結果を得ることができるか検証するテスト。
- 結合テストの場合では、単体テストで正常を確認できたモジュール同士を結合してブラックボックステストを実施することで、仕様を満たしているかどうかを確認する。