ソフトウェアテストの種類とは?単体・結合・システムテストをわかりやすく解説
ソフトウェアテストとは
ソフトウェアテストとは、開発したプログラムが正しく動作するか確認する工程です。バグ(不具合)を発見し、品質を保証するために行います。テストは複数の段階で実施されます。
テストの4段階
① 単体テスト(ユニットテスト)
最小単位のモジュール(関数・クラス)単位でテストします。他のモジュールとの依存を切り離して単独で検証します。
② 結合テスト(統合テスト)
複数のモジュールを組み合わせた際の連携・インターフェースをテストします。モジュール間のデータの受け渡しが正しいか確認します。
③ システムテスト
システム全体を本番に近い環境で要件通りに動作するかテストします。機能・性能・セキュリティ・負荷など多角的に検証します。
④ 受入テスト(UAT:User Acceptance Testing)
完成したシステムを発注者・エンドユーザーが要件を満たしているか確認するテストです。最終的な承認の前に行われます。
| テスト種類 | 対象 | 実施者 |
|---|---|---|
| 単体テスト | 個々のモジュール | 開発者 |
| 結合テスト | モジュール間の連携 | 開発者・テスター |
| システムテスト | システム全体 | テスター |
| 受入テスト | 要件との適合 | 発注者・ユーザー |
ブラックボックステストとホワイトボックステスト
| 種類 | 特徴 | 何を見るか |
|---|---|---|
| ブラックボックステスト | 内部構造を知らずに入出力で検証 | 仕様通りに動くか |
| ホワイトボックステスト | 内部構造(コード)を理解してテスト | すべての分岐が通るか |
試験対策ポイント
- 単体テスト:モジュール単位(開発者が実施)
- 結合テスト:モジュール間の連携確認
- システムテスト:システム全体を要件で検証
- 受入テスト:ユーザーが最終確認
- ブラックボックス vs ホワイトボックス = 内部構造を見るか否か
テスト技法の種類
| 技法 | 概要 |
|---|---|
| 同値分割 | 入力値をグループに分け各グループを代表値でテスト |
| 境界値分析 | 境界付近の値(最小・最大・境界±1)をテスト |
| デシジョンテーブル | 条件の組み合わせを表にして網羅的にテスト |
| 状態遷移テスト | システムの状態変化と遷移を検証 |
| 探索的テスト | テスターが経験と直感でテストを設計しながら実施 |
テスト自動化とCI/CD
テスト自動化ツール:Selenium(Webブラウザ自動化)・JUnit(Java単体テスト)・pytest(Python)・Appium(モバイルアプリ)。CI/CD(継続的インテグレーション/継続的デリバリー):コードをリポジトリに統合するたびに自動でビルド・テストを実行する仕組み。Jenkins・GitHub Actions・GitLab CIが代表的なツール。テスト駆動開発(TDD):テストを先に書いてからコードを実装する開発手法。品質の作り込みとリファクタリングが促進される。
🎯 試験対策:ソフトウェアテストの重要ポイント
ソフトウェアテストはシステム品質を保証するための重要工程です。ITパスポートでは各テスト工程の目的と、テスト技法(ブラックボックス・ホワイトボックス)の違いが問われます。
テストの工程を整理します。単体テスト(ユニットテスト)は個々のプログラムモジュール単体の動作確認。結合テストは複数モジュールを組み合わせたインターフェース確認。システムテストはシステム全体の要件への適合確認。受入テスト(UAT)はユーザーが実際の業務で使えるかを確認します。
テスト技法の違いも重要です。ブラックボックステストは内部構造を見ずに入力と出力の関係だけを確認(同値分析・境界値分析が代表的)。ホワイトボックステストはプログラムの内部ロジックを確認(命令網羅・分岐網羅が代表的)。テストは欠陥の「発見」であり「証明」ではないというダイクストラの原則も覚えておきましょう。