ソフトウェアテスト
まず結論
テストにはブラックボックス(外部仕様から)とホワイトボックス(内部構造から)の2種類があります。テストの段階(単体→結合→システム→受け入れ)と、境界値分析・同値分析が試験頻出です。
ブラックボックステストとホワイトボックステスト
ブラックボックステスト
内部実装を見ずに入力と出力のみで確認。仕様書ベースでテスト設計。
技法:同値分析・境界値分析・デシジョンテーブル
ホワイトボックステスト
内部構造(コード)を確認しながらテスト。網羅率(カバレッジ)を指標に。
技法:命令網羅・分岐網羅・条件網羅
テストの段階(V字モデル)
要件定義
↕
受入テスト
基本設計
↕
システムテスト
詳細設計
↕
結合テスト
実装
↕
単体テスト
左側:開発フェーズ → 右側:対応するテストフェーズ(V字型)
| テスト段階 | 目的 | 担当 |
|---|---|---|
| 単体テスト(UT) | 関数・モジュール単位の動作確認 | 開発者 |
| 結合テスト(IT) | モジュール間の連携確認 | 開発者 |
| システムテスト(ST) | システム全体の要件達成確認 | テストチーム |
| 受入テスト(UAT) | ユーザーが実環境で要件確認 | 顧客・ユーザー |
同値分析と境界値分析
同値分析(同値クラス)
入力を「同じ結果が期待される」グループに分けて、各グループから代表値を1つ選んでテスト。
例:1〜100が有効なら代表値=50。0以下と101以上は無効クラス。
境界値分析
境界の値(直上・直下)をテスト。バグが境界に集中しやすい性質を利用。
例:有効範囲が1〜100なら → 0, 1, 100, 101をテスト。
境界値分析の例:「年齢が20以上65未満の場合、割引適用」
テストすべき境界値:19(無効)・20(有効)・64(有効)・65(無効)
テストすべき境界値:19(無効)・20(有効)・64(有効)・65(無効)
🎯 試験での出方
- 「ブラックボックステストの技法」→ 同値分析・境界値分析
- 「ホワイトボックステストの指標」→ 命令網羅率・分岐網羅率(カバレッジ)
- 「受入テストは誰が行うか」→ 顧客・エンドユーザー
- 境界値分析のテストケースを選ぶ問題(有効/無効の境界の値)
⚠️ よくある間違い
- 「ブラックボックスはコードを見る」→ ✗ ブラックボックスは外部仕様のみ。コードを見るのはホワイトボックス
- 「単体テストは最後に行う」→ ✗ 単体テストが最初で、その後結合→システム→受入の順
- 「同値分析は境界値を重点的にテストする」→ ✗ それは境界値分析。同値分析は各クラスの代表値をテスト
✍️ 確認クイズ
Q1. 入力値1〜100が有効な仕様で、境界値分析のテストケースとして適切なものはどれか。
✅ 正解は③。境界値分析では有効範囲の境界(1と100)と、その直外(0と101)をテストします。バグは境界付近に集中しやすいため、この4値が最も重要なテストケースです。
Q2. 受入テスト(UAT)は主に誰が実施するか。
✅ 正解は③。受入テスト(UAT:User Acceptance Test)は顧客やエンドユーザーが実際の業務環境で要件を満たすかを確認するテストです。V字モデルの最終段階に対応します。
Q3. コードの内部構造を考慮せず、入出力の仕様のみからテストケースを設計する手法はどれか。
✅ 正解は②。ブラックボックステストは内部実装(コード)を見ずに、仕様書の入出力仕様からテストケースを設計します。同値分析・境界値分析が代表的な技法です。
Q4. ホワイトボックステストの「命令網羅(C0)」と「分岐網羅(C1)」の違いとして正しいものはどれか。
✅ 正解は②。命令網羅(C0)は全ての命令文が少なくとも1回実行されること。分岐網羅(C1)はif文などの条件分岐で、TRUEとFALSEの両方のパスを通ること。C1の方が厳格で、C0を満たしてもC1は満たさない場合があります(例:if文がTRUEのケースしかテストしていない)。
Q5. 回帰テスト(リグレッションテスト)の目的として正しいものはどれか。
✅ 正解は②。回帰テスト(リグレッションテスト)はバグ修正や機能追加後に、既存の正常な機能が壊れていないか(デグレードしていないか)を確認するテストです。変更のたびに既存テストケースを再実行します。自動テストツールを使うと効率的に実施できます。
Sponsor Link