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