テストの目的と分類
テストの目的は、プログラム(ソフトウェア)やシステムに潜むエラーを検出することです。テストの実施と、検出されたエラーの修正を繰り返すことで、プログラムの品質が向上していきます。テストは次のように分類できます。流れとしては、設計の逆に、小さい部品のテストから始め、徐々に組み合わせていく形になります。
単体テスト → 結合テスト → システムテスト → 運用テスト
運用テストとは区別して受け入れテスト(承認テスト、検収テスト)と呼ばれることもあります。

(1)単体テスト
単体テストでは、モジュールが思った通りの(仕様通り)の動きをするのかをテストします。
(2)結合テスト
単体テストをクリアすると、クリアしたモジュールをつなぎ合わせてテストを行う結合テスト(統合テスト)を行います。
結合テストには、モジュールの上位からテストするか下位からテストするかによって
- トップアップテスト(上位からテスト)
- ボトムアップテスト(下位からテスト)
の2種類があります。
・トップダウンテスト
トップダウンテストは、モジュールの上位側から順番にテストをしていく方法です。

結合テストを始める前にすべてのモジュールが出来てないこともあります。
このようにまだ完成していないモジュールがある場合、スタブと呼ばれる仮のモジュールを付けることによりテストを行います。
・ボトムアップテスト
ボトムアップテストは、モジュールの下位側から順番にテストをしていく方法です。

ボトムアップテストではまだ完成していないモジュールがある場合、ドライバと呼ばれる仮のモジュールを付けることによりテストを行います。
その他の結合テスト
・サンドイッチテスト
上位モジュールと下位モジュールから同時に結合してテストを進める手法です。
・ビッグバンテスト
単体テスト済みの全てのモジュールを一度に結合してテストを行う手法で、バグの原因特定が難しくなることが多いとされます。
・一斉テスト
ビッグバンテストに似ていますが、単体テストを省略結合するという点で異なります。
(3)システムテスト
単体テストや結合テストが完了した後に行われる、システム全体の機能、性能、品質などを検証する最終的なテスト工程です。要件定義や設計書通りの要件を満たしているかを確認し、実際の運用環境に近い環境でテストを行うことで、システム全体の不具合や欠陥を発見し、品質を確保することを目的とします。
システムテストでは以下のテストが行われます。
機能テスト | 機能要件を満たしているかをチェックするためのテストです。 |
性能テスト | 性能面の評価を行います。データの処理能力や応答速度、時間効率や資源効率といったパフォーマンスを検証し、要求される性能を満たしているかを確認します |
構成テスト | ソフトウェアを推奨する環境設定で使用した際に、問題なく画面が表示され、プログラムが動作するかをチェックするテストです |
負荷テスト | システムに意図的に負荷をかけて動作を確かめる。 |
耐障害テスト | 「障害許容性テスト」とも呼ばれます。トラブルが発生した際に最低限の機能を維持できるか、復旧にかかる時間や手順、障害発生後にデータを回復できるかなどをチェックします |
例外事項テスト | 仕様以外のデータ入力に対処できるか確認するテスト |