【ほわいとぼっくすてすと】

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

最終更新:
💡 プログラムの中を見て、通る道を確かめる

プログラムの内部構造や処理を調べ、その構造に基づいてテストを設計する方法。実行した命令や分岐の割合などで網羅度を測れるが、高い網羅率だけで仕様の正しさや不具合がないことは保証できない。

📌 このページのポイント
ホワイトボックス — 分かれ道を試す入力 xx=1 と x=0x > 0 ?真:x=1偽:x=0「正」を返す「非正」を返す道を通る + 返り値を確認する
架空の条件分岐を両側から試す例。構造を通るだけでなく、期待する結果になったかも確認する。
ひよこ ひよこ
ホワイトボックステストは、何を見ているの?
ペンギン先生 ペンギン先生
プログラムの内部の処理や構造を見て、試す入力を考えるんだ。たとえば「xが0より大きいか」で処理が分かれるなら、大きい場合と、そうでない場合を通る入力を用意するよ。単体テストで使われることが多いけれど、単体テストだけに限る分類ではないんだ。
ひよこ ひよこ
全部の命令を実行できれば、全部試したことになる?
ペンギン先生 ペンギン先生
何を全部とするかを区別しよう。命令網羅は、実行できる命令のうち、実際に通ったものの割合だよ。分岐網羅は、条件による分かれ道などの枝をどれだけ通ったかを見る。命令を全部通っても、条件が偽になる場合を試していないことがあるんだ。
ひよこ ひよこ
図の例では、どんな入力を試すの?
ペンギン先生 ペンギン先生
図は「x > 0なら正、そうでなければ非正を返す」という架空の処理だよ。x=1で真の側、x=0で偽の側を通れる。さらに、返った値がそれぞれ正と非正になっているか確認するんだ。通ったという記録だけでは、計算や返り値が間違っていても見逃すことがあるよ。
ひよこ ひよこ
網羅率が100%なら、不具合はなくなる?
ペンギン先生 ペンギン先生
なくなるとは言えないよ。たとえば同じ道を通っても、特定の値だけで計算が失敗することがあるし、必要な機能そのものが実装されていないと内部の道を調べるだけでは気づきにくい。目標の網羅率は、測る対象とリスクを踏まえて決めるんだ。どのプロジェクトでも80%なら合格、という決まりではないよ。
ひよこ ひよこ
ブラックボックステストと、どちらを使えばいい?
ペンギン先生 ペンギン先生
ブラックボックスは、内部構造を根拠にせず、仕様として期待する振る舞いからテストを考える方法だよ。ホワイトボックスは、内部の通っていない道などを見つけやすい。仕様と構造の両方から試すと、互いの見落としを補いやすいね。実装を変えたときは、構造に基づくテストや網羅対象も見直そう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ホワイトボックステスト」って出てきたら「プログラムの中の構造を見て考えるテスト」と思えばだいたいOK!
📖 おまけ:英語の意味
「White-box Testing」 = 内部構造を見て考えるテスト
💬 箱の中の仕組みを見通して試すイメージ。中を根拠にしないBlack-box Testingと対比する言葉だよ。

参考資料

← 用語集にもどる