新卒時代に「テスト」というものがよく分からなかった私が、
7年以上の経験を経て体系化した「テスト」という言葉の定義を共有します
テストの段階 | 目的 | 実施内容 | 重要な観点 |
単体テスト | モジュールが単一で期待通りの動作をしているかを検証する。 |
単一の「関数」、「クラス」、「画面」が
想定されうるInputに対して期待したOutputおよび処理や動作をしているか検証する。
*以降、「関数」「クラス」「画面」を総称してモジュールと表現させてください。 |
|
結合テスト | 単体テストをクリアしたモジュール、及び異なるシステム同士が連携することによって、 想定通りの動作をしているか/逆に想定外の動作をしていないかを検証する。 | 依存関係がある複数の「関数」、「クラス」、「画面」、「システム」を連結した際に、 想定されうるInputに対して期待したOutputおよび処理や動作をしているか検証する。 |
|
シナリオ(システム)テスト | システムを導入し、エンドユーザーと擦り合わせた要件を実現できているか/実現できたいない箇所はないかを検証する。 |
特定の「画面」、「機能」、「システム」を繋ぎ合わせた際に、
想定している業務やシナリオを実施できるかを検証する。 *特に特定の業務のみを対象とするテストをシナリオテスト システム化対象の業務全てを対象とするものをシステムテストと呼んでいる印象。 |
|
受入テスト | システムを導入することで、エンドユーザーが期待していた効果が出るかどうか検証する。 | システムテストのようなシステム全体のテストを「エンドユーザー」が実施するもの。 |
|