ソフトウェアテストの種類を体系的に整理 — ISTQB準拠のテストレベル・タイプ・技法まとめ

重岡 正 ·  Sat, May 10, 2025

ソフトウェアテストには多くの種類があり、プロジェクトの現場では「ユニットテスト」「リグレッションテスト」「E2Eテスト」など、さまざまな用語が飛び交います。しかし、これらの用語は体系的に整理されており、国際的には ISTQB(International Software Testing Qualifications Board) の分類が最も広く参照される「準標準」として知られています。

この記事では、ISTQB の公式体系をベースに、実務でよく使われるテストの種類を テストレベル・テストタイプ・テスト設計技法 の3つの軸で整理して解説します。

ソフトウェアテストとは

ISTQB では、ソフトウェアテストを以下のように定義しています。

ソフトウェアの品質を評価し、欠陥を発見し、リスクを低減するための活動

ISTQB Glossary

テストは単に「バグを見つける作業」ではなく、ソフトウェアが期待通りに動作するかを確認し、リリースのリスクを管理するための包括的な活動です。

テストレベル — いつ・どの粒度でテストするか

最も基本となる分類が テストレベル(Testing Levels) です。開発工程に沿って、テスト対象の粒度を変えていく考え方で、一般的に「V字モデル」として知られています。

ISTQB では以下のレベルが定義されています。

ユニットテスト(単体テスト / Unit Testing)

プログラムの最小単位(関数やメソッド)が正しく動作するかを検証します。ロジックの正しさや境界値の確認が主な目的です。

開発者が実装と同時に書くことが多く、CI/CD パイプラインで最初に実行されるテストでもあります。

統合テスト(結合テスト / Integration Testing)

同一システム内のコンポーネント同士を組み合わせた際に、インターフェースやデータの受け渡しに問題がないかを検証します。「コンポーネント統合テスト」とも呼ばれます。

たとえば、API と DB の接続、モジュール間のデータフローなどが対象です。

システムテスト(System Testing)

システム全体として、定義された要件(機能・性能)を満たしているかを検証します。End-to-End のシナリオテストがこのレベルに該当します。

システム統合テスト(System Integration Testing)

統合テストが「システム内部」のコンポーネント間を対象とするのに対し、システム統合テストはシステムの境界を越えた接続を検証します。

たとえば、自社システムとサードパーティ決済 API の連携、他チームが開発したマイクロサービスとの結合などが対象です。

受入テスト(Acceptance Testing / UAT)

最終的にユーザーのビジネスニーズを満たしているか、デプロイ可能かを確認します。ユーザー視点での要件充足確認であり、リリース判定の基準となります。

テストタイプ — 何を目的にテストするか

テストレベルとは別の軸として、テストの目的別分類(Test Types) があります。どのテストレベルにおいても、以下の観点でテストを設計できます。

機能テスト(Functional Testing)

「何ができるか」に焦点を当て、仕様書通りの動作をするかを確認するテストです。

テスト内容
機能テスト仕様通りに動作するかの確認
リグレッションテスト(回帰テスト)変更により既存機能が壊れていないかの確認
スモークテストビルド直後・リリース前の基本動作確認
サニティテスト特定の変更箇所が正常かの軽量確認
エクスプロラトリーテストテスターの経験を活かし、学習・設計・実行を同時に行う探索的技法
確認テスト(再テスト)発見されたバグが正しく修正されたかの確認

特にリグレッションテストは、修正や機能追加のたびに繰り返し行われるため、自動化の最優先対象 となります。

非機能テスト(Non-functional Testing)

「どのように動くか」に焦点を当てるテストです。機能は正しく動いていても、パフォーマンスやセキュリティに問題があれば品質は不十分です。

テスト内容
パフォーマンステストレスポンス・スループットの検証
負荷テスト(Load Test)想定される負荷での動作確認
ストレステスト(Stress Test)限界負荷での動作確認
セキュリティテスト脆弱性・認証・認可の検証
ユーザビリティテストUX 観点での使いやすさ検証
アクセシビリティテストWCAG 準拠などの利用可能性検証
互換性テストブラウザ・OS・デバイス間の動作確認

テスト設計技法 — どうテストを設計するか

テストケースをどのように作成するかの観点です。

ブラックボックステスト

内部構造を見ずに、入出力のみでソフトウェアの振る舞いを検証する手法です。以下のような技法が含まれます。

  • 同値分割: 同じ挙動をする入力値をグループ化し、代表値でテスト
  • 境界値分析: 境界条件(最小値、最大値、境界の前後)を重点的にテスト
  • デシジョンテーブル: 条件の組み合わせを網羅的に整理してテスト

ホワイトボックステスト

コードの内部構造を知った上で、処理パスの網羅性(カバレッジ)を重視してテストする手法です。

  • ステートメントカバレッジ: すべての文が実行されるか
  • ブランチカバレッジ: すべての分岐が実行されるか

グレーボックステスト

ブラックボックスとホワイトボックスの中間的なアプローチです。内部構造の知識を一部活用しつつ、外部からの入出力でテストを行います。

テストピラミッド — テストのバランス

テストの種類を理解したら、次に重要なのが テストピラミッド の考え方です。Mike Cohn が『Succeeding with Agile』(2009) で提唱し、Martin Fowler の記事で広く知られるようになったこのモデルは、テストの量と種類のバランスを示しています。

E2Eテスト
少数・遅い・コスト高
統合テスト
ユニットテスト
多数・速い・コスト低
  • ユニットテストを厚く: 実行が速く、問題の特定が容易。数百〜数千単位で書く
  • 統合テストは中間: コンポーネント間の連携を適度にカバー
  • E2E テストは薄く: 実行が遅くメンテナンスコストが高いため、重要なシナリオに絞る

このバランスを保つことで、高速なフィードバックループを維持しながら、十分なテストカバレッジを確保できます。

テスト手法 — TDD と BDD

テストの種類に加えて、テストを活用した開発手法も押さえておきましょう。

TDD(テスト駆動開発)

テストを先に書いてから実装を行う開発手法です。Red(失敗するテストを書く)→ Green(テストを通す最小の実装)→ Refactor(リファクタリング)のサイクルで開発を進めます。

BDD(振る舞い駆動開発)

Given / When / Then 形式で仕様とテストを統合する手法です。ビジネス要件をそのままテストケースとして表現できるため、開発者と非開発者の間のコミュニケーションギャップを埋めるのに有効です。

テスト体系の全体像

ここまでの内容を整理すると、ソフトウェアテストは以下のような体系になります。

mindmap
  root((ソフトウェアテスト))
    テストレベル
      ユニットテスト
      統合テスト
      システムテスト
      システム統合テスト
      受入テスト
    テストタイプ
      機能テスト
        リグレッションテスト
        スモークテスト
        エクスプロラトリーテスト
      非機能テスト
        パフォーマンステスト
        セキュリティテスト
        アクセシビリティテスト
    テスト設計技法
      ブラックボックス
      ホワイトボックス
      グレーボックス
    テスト手法
      TDD
      BDD

まとめ

ソフトウェアテストの種類は多岐にわたりますが、テストレベル(粒度)・テストタイプ(目的)・テスト設計技法(手法) の3軸で整理すると、体系的に理解できます。

実務では、まず テストピラミッドのバランス を意識しながら、ユニットテストを中心に自動化を進め、リグレッションテストで品質を守り、必要に応じて非機能テスト(パフォーマンス・セキュリティ)を組み合わせるのが基本的なアプローチです。

以上、ソフトウェアテストの種類をISTQBベースで体系的に整理してみた、現場からお送りしました。

参考資料

資料URL
ISTQB 公式サイトhttps://www.istqb.org/certifications/certified-tester-foundation-level
ISTQB Glossary(用語の公式定義)https://glossary.istqb.org/ja_JP/
JSTQB Foundation Level シラバスhttps://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018V31.J03.pdf
ISO/IEC/IEEE 29119(テスト国際規格)https://www.iso.org/standard/81291.html
Atlassian — Types of Software Testinghttps://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing
Martin Fowler — Practical Test Pyramidhttps://martinfowler.com/articles/practical-test-pyramid.html
Google Testing Bloghttps://testing.googleblog.com
OWASP Testing Guidehttps://owasp.org/www-project-web-security-testing-guide/
WCAG 2.1https://www.w3.org/TR/WCAG21/