システム開発

ホワイトボックステストとは

2020年7月23日

ホワイトボックステスト(white box test)

ホワイトボックステストとは、モジュールの内部構造(プログラムの内容)が意図していた通りに動作するかを確認するテスト手法です。

ホワイトボックステストは、ソフトウェア開発の単体テストの工程で実施されるテストであり、ホワイトボックステストの他にも ブラックボックステストと呼ばれるテスト手法があります。

ブラックボックステストとの違い

モジュールの内部構造が正しく動作するかを検証するホワイトボックステストとは違い、

ホワイトボックステスト

ホワイトボックステストのイメージ図

ブラックボックステストでは、モジュールの内部構造は意識せず、入力に対して適切な出力が得られるか(仕様通りの結果が得られるか)を検証します。

ブラックボックステスト

ブラックボックステストのイメージ図

ホワイトボックステストの網羅基準

ホワイトボックステストには「命令網羅」「判定条件網羅」「条件網羅」「複数条件網羅」と呼ばれる網羅基準が存在します。

スポンサーリンク

命令網羅

命令網羅とは、すべての処理(命令)を最低1回は通すようにする試験です。すべての処理を網羅できる入力データを準備して、内部処理が正しく動作することを確認します。

命令分岐イメージ例

例えば、上記のような内部処理で命令網羅するためには、「A=真、B=真」の入力データが必要です。

[テストデータ]

試験パターン 入力値「A」 入力値「B」
1

判定条件網羅(分岐網羅)

判定条件網羅(分岐網羅)とは、すべての分岐を最低1回は通す試験です。すべての分岐を網羅できる入力データを準備して、内部処理が正しく動作することを確認します。

分岐網羅イメージ図

例えば、上記のような内部処理で判定条件網羅するためには、「A=真、B=真」と「A=真、B=偽」または「A=偽、B=真」または「A=偽、B=偽」の入力データが必要です。

[テストデータ]

試験パターン 入力値「A」 入力値「B」
1
2

※試験パターン2は、逆でも両方「偽」でもよい。

条件網羅

条件網羅は、個々の条件を最低1回は満たすようにする試験です。例えば、次のような内部処理では、AとBには「真」と「偽」の値が入る可能性があります。この個々(今回の例ではAとB)の条件(真 or 偽)をそれぞれ1度ずつ試すのが条件網羅です。

ホワイトボックステストの例

上記のような内部処理で条件網羅するためには、「A=真、B=真」と「A=偽、B=偽」の入力データ もしくは 「A=真、B=偽」と「A=偽、B=真」もしくは「A=偽、B=真」と「A=真、B=偽」の入力データが必要です。

[テストデータ 例1]

試験パターン 入力値「A」 入力値「B」
1
2

または

[テストデータ 例2]

試験パターン 入力値「A」 入力値「B」
1
2

または

[テストデータ 例3]

試験パターン 入力値「A」 入力値「B」
1
2
AとBで1度ずつ「真」と「偽」が試せればよいので、例1、例2、例3どのテストデータを使っても条件網羅の目的は達成できます。

複数条件網羅

複数条件網羅は、想定される条件の組み合わせをすべて網羅する試験です。例えば、次のような内部処理では、AとBには「真」と「偽」の値が入る可能性があります。このAとBの条件の組み合わせをすべて網羅するのが複数条件網羅です。

ホワイトボックステストの例

上記のような内部処理で複数条件網羅するためには、「A=真、B=真」「A=真、B=偽」「A=偽、B=真」「A=偽、B=偽」の入力データが必要です。

[テストデータ]

試験パターン 入力値「A」 入力値「B」
1
2
3
4

helpful