この記事は何か?
本記事はブラックボックステストの基本概念と、一般的な4つのテスト技法(同値分割法、境界値分析法、デシジョンテーブルテスト、状態遷移テスト)について解説します。
目次
ブラックボックステストとは?
ブラックボックステストとは、テスト対象の内部構造を意識せずに入力と出力が仕様通りであることを確認するテスト手法です。
ISTQB(International Software Testing Qualifications Board)では以下のように定義されています。
ブラックボックステスト技法(black-box test technique)
コンポーネントやシステムの仕様の分析に基づくテスト技法のひとつ。
(出典:ISTQB Glossary)
対照的な手法として、内部構造を考慮してテストするホワイトボックステストが存在します。
一般的なブラックボックステストのテスト技法
ISTQBのFoundation Levelシラバスでは、同値分割法、境界値分析法、デシジョンテーブルテスト、状態遷移テストの4つが一般的なテスト技法として取り上げられています。
1.同値分割法
1.1.特徴
同値分割法は、入力値の範囲を「同等の振る舞いをする」グループ(同値クラス)に分割し、各グループから代表値を選んでテストする手法です。
この手法は「同じクラス内の値は同等の振る舞いをする」という前提のもと、各クラスから1つずつ値を選択することで効率的にテストを実施できます。
同値クラスには以下の2種類が存在します。
- 有効同値クラス: 仕様上正しい入力値の範囲
- 無効同値クラス: 仕様上エラーとなる入力値の範囲
1.2.適用例
年齢制限が「18歳以上65歳以下」という仕様の会員登録システムを例に挙げます。
この場合、入力値は以下の同値クラスに分割できます。
- 有効同値クラス: 18歳~65歳
- 無効同値クラス: 17歳以下、66歳以上
各クラスから代表値を選ぶと、テストケースは以下のようになります。
| No. | 入力値 | 期待結果 | クラス |
|---|---|---|---|
| 1 | 30歳 | 登録成功 | 有効同値クラス |
| 2 | 10歳 | 登録失敗 | 無効同値クラス |
| 3 | 70歳 | 登録失敗 | 無効同値クラス |
このように、全ての年齢をテストする代わりに少数のテストケースで仕様を検証できます。
2.境界値分析法
境界値分析法は、同値分割法と併用されることが多い手法です。
2.1.特徴
境界値分析法は、同値クラスの境界値とその前後の値に着目してテストする手法です。
この手法は「バグは境界付近で発生しやすい」という経験則に基づいています。
境界値分析では以下の値をテストします。
- 最小値(境界値そのもの)
- 最小値 - 1(境界の外側)
- 最小値 + 1(境界の内側)
- 最大値 - 1(境界の内側)
- 最大値(境界値そのもの)
- 最大値 + 1(境界の外側)
2.2.適用例
同値分割法と同様に、年齢制限が「18歳以上65歳以下」という仕様の会員登録システムで説明します。
境界値分析では以下の値をテストします。
| No. | 入力値 | 期待結果 | 分類 |
|---|---|---|---|
| 1 | 17歳 | 登録失敗 | 下限の境界外(最小値-1) |
| 2 | 18歳 | 登録成功 | 下限の境界値(最小値) |
| 3 | 19歳 | 登録成功 | 下限の内側(最小値+1) |
| 4 | 64歳 | 登録成功 | 上限の内側(最大値-1) |
| 5 | 65歳 | 登録成功 | 上限の境界値(最大値) |
| 6 | 66歳 | 登録失敗 | 上限の境界外(最大値+1) |
3.デシジョンテーブルテスト
3.1.特徴
デシジョンテーブルテストは、複数の条件の組み合わせと、それに対応する結果を表形式で整理してテストする手法です。
この手法は以下のような特徴を持ちます。
- 複数の条件を組み合わせた業務ロジックのテストに有効
- 条件の網羅性を視覚的に確認しやすい
- 仕様の矛盾や抜け漏れを発見しやすい
デシジョンテーブルは通常、以下の4つの領域で構成されます。
- 条件記述部: テストする条件項目
- 条件指定部: 各条件の値(T/F、Yes/No など)
- 動作記述部: 実行される動作
- 動作指定部: 各条件の組み合わせで実行される動作
3.2.適用例
ECサイトで会員種別・購入金額・キャンペーン期間の組み合わせによって割引率が変わる仕様を例に挙げます。
条件
- 会員種別: 一般会員 / プレミアム会員
- 購入金額: 5,000円未満 / 5,000円以上
- キャンペーン期間: 期間外 / 期間内
デシジョンテーブル(Y=該当、N=非該当)
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
|---|---|---|---|---|---|---|---|---|---|
| 条件 | プレミアム会員 | Y | Y | Y | Y | N | N | N | N |
| 5,000円以上 | Y | Y | N | N | Y | Y | N | N | |
| キャンペーン期間内 | Y | N | Y | N | Y | N | Y | N | |
| 動作 | 割引率 | 20% | 15% | 10% | 10% | 10% | 5% | 5% | 0% |
例えば、ルール1(テストケース1)の条件に該当する場合、20%割引が適用されます。
全ての組み合わせを明示することで、仕様の網羅性を確保できます。
4.状態遷移テスト
4.1.特徴
状態遷移テストは、システムの状態とイベントによる状態変化に着目してテストする手法です。
システムが異なる状態を持ち、イベントによって状態が遷移する場合に有効です。
この手法では、状態遷移図や状態遷移表を基にテストケースを設計します。
4.2.適用例
ストップウォッチ機能の状態遷移を例に挙げます。システムは以下の状態を持ちます。
状態
- 初期状態(00:00:00表示)
- 計測中
- 一時停止中
イベント
- スタート/ストップボタン押下
- リセットボタン押下
テストケース例
| No. | 現在の状態 | イベント | 期待される状態 |
|---|---|---|---|
| 1 | 初期状態 | スタート/ストップボタン押下 | 計測中/時間が進む |
| 2 | 初期状態 | リセットボタン押下 | 初期状態/変化なし |
| 3 | 計測中 | スタート/ストップボタン押下 | 一時停止中/時間表示を保持 |
| 4 | 計測中 | リセットボタン押下 | 初期状態/00:00:00に戻る |
| 5 | 一時停止中 | スタート/ストップボタン押下 | 計測中/時間が再開 |
| 6 | 一時停止中 | リセットボタン押下 | 初期状態/00:00:00に戻る |
このようにすべての状態からの遷移パターンをテストすることで、状態管理の不備を網羅的に検出できます。
参考資料
- ISTQB Glossary (日本語版) https://glossary.istqb.org/ja_JP/home
- ISTQB Foundation Level シラバス Version 4.0(2023年版)https://jstqb.jp/syllabus.html#syllabus_foundation