本文へ移動

ほわいとぼっくすてすと

ホワイトボックステスト

White-box test = 内部構造を考慮したテスト

プログラムの内部構造を解析し、ソースコードの命令や分岐を網羅的に実行して正しさを検証するテスト手法です。

詳しい説明

1. 定義

ホワイトボックステストとは、プログラムの内部構造(ソースコード、論理分岐、ループなど)を全て見通した状態で、内部の処理が設計通りに動いているかを検証するテストです。

プログラムが仕様を満たすだけでなく、全ての命令が正しく実行されるか、全ての条件分岐が網羅されているかといった「構造的な正確さ」を検証します。開発者が行う単体テストで主に使用されます。

2. 仕組みと種類

主な検証基準として、命令網羅、分岐網羅、条件網羅などがあります。命令網羅はプログラムの全命令を少なくとも1回は実行すること、分岐網羅はすべての条件分岐の真と偽を一度は通ることを確認します。

これらの基準を達成するために、プログラムのフローチャートやソースコードを解析し、どのようなデータを与えれば特定の処理ルートが通るかを計算してテストケースを作成します。コードの隅々まで確認することで、隠れたバグを発見します。

3. 試験ごとの視点

ITパスポート試験では、開発プロセスにおけるテスト工程の一部として扱われます。ブラックボックステストと対比し、開発者側で行う詳細なテストであることを理解しておくことが重要です。

基本情報技術者試験では、網羅基準(命令、分岐、条件)の定義と、それぞれの強度の違いが深く問われます。どの基準が最も厳しいか(条件網羅>分岐網羅>命令網羅)、といった比較や、計算問題が出題されることもあります。

4. 紛らわしい語との違い

ブラックボックステストは、内部構造を無視して入力と出力のみを検証します。ホワイトボックステストは内部の動きを詳細に追跡するため、目的と対象範囲が全く異なります。

コードレビューは、人がコードを読んで問題を探す手法です。ホワイトボックステストは実際にプログラムを実行して挙動を確認する手法であり、手動確認と実行テストという違いがあります。

5. 身近な例

料理のレシピに例えると、料理の完成品(味)を確かめるのがブラックボックステストなら、ホワイトボックステストは、調理中の手順をすべて確認することです。「ちゃんと切ったか」「火加減を調整したか」など、完成に至るまでの工程の正しさを一通り確認します。

プログラムでは、複雑な条件分岐がある場合、全てのルート(真・偽の両方)が正しく実行されるかを確認します。例えば、パスワードが正しい場合と間違っている場合、それぞれ別の処理に進むことを、実際のコードを追いかけて確認するのがホワイトボックステストです。

試験で問われること

ITパスポート試験

  • プログラムの内部構造まで確認するテスト手法であることを押さえる。
  • 主に単体テストなどの開発初期工程で行われることを理解する。
  • 利用者視点ではなく、開発者視点のテストであることを把握する。

基本情報技術者試験

  • 命令網羅、分岐網羅、条件網羅の定義と強度の順序を完璧に覚える。
  • ブラックボックステストとの観点の違い(内部か外部か)を明確にする。
  • テスト設計の網羅基準がソースコードの構造に基づいていることを理解する。