画像ツール一覧

ホワイトボックス

White Box

セキュリティ

評価する人が内部構造やコードの情報を利用できる状態・手法を指します。ホワイトボックステストでは、その構造を手掛かりにテストを設計します。インターネット上への一般公開が条件ではありません。

🐾 猫で例えると?

箱の中で仰向けに寝転がり、完全にお腹の白い毛を見せて無防備になっている茶トラ猫
箱の中の様子を見ながら確かめられる茶トラ

箱の中で仰向けになり、お腹を見せる茶トラ。箱の外からでも猫の様子が分かるように、調べる人がコードや設計情報を見ながら確かめられる状態をホワイトボックスに見立てます。猫のお腹の白さではなく「調べたい中身が見える」点が対応します。誰にでも一般公開する必要はありません。

🐾 PR

💻 ソフトウェア開発における「ホワイトボックス」とは?

システム開発の世界において、ホワイトボックスという言葉は主に「ホワイトボックステスト」という文脈で使われます。これは、プログラムが「どのような計算式で動いているか」「どんな条件分岐があるか」をすべて知っている前提で、内部の設計通りに正しく処理が行われるかを検証するテスト手法です。

ブラックボックステストは仕様や外部から見える動作を基に設計し、ホワイトボックステストは分岐などの内部構造を基に設計します。どちらかが常に優れるのではなく、仕様の不足と実装上の見落としを違う角度から探します。

⚠️ ホワイトボックスの仕組みと注意点

内部構造が分かると、条件分岐やエラー処理を狙ったテストを作れます。一方、経路や入力の組み合わせが増えるほど、確認する範囲も広がります。何を網羅するかを決め、カバレッジの数字だけでなく期待する結果まで確かめる必要があります。

セキュリティ診断におけるホワイトボックス

セキュリティ診断では、ソースコードや設計情報、テスト用アカウントを診断者へ渡すことで、限られた時間を内部の確認に使えます。情報漏洩の再現に限った方法ではなく、秘密保持と取扱い範囲を決めた上で実施します。

// 分岐のtrue/falseを両方確認する例
function calculateDiscount(price, isPremiumMember) {
  if (isPremiumMember) return price * 0.8;
  return price * 0.9;
}
console.assert(calculateDiscount(1000, true) === 800);
console.assert(calculateDiscount(1000, false) === 900);
// 分岐網羅の例。一般にC0は命令網羅、C1は分岐網羅を指す

この二例でtrueとfalseの分岐は通せますが、負の価格や小数の丸めをどう扱うべきかまでは確認していません。カバレッジ100%は「通った範囲」の指標であり、期待する結果の正しさや仕様全体を保証するものではありません。

🛠️ ホワイトボックスを賢く運用するためのポイント

現場でホワイトボックステストや診断を実施する際は、以下の点に注意して効率よく進めます。

箱の中が見えると茶トラの居場所を確かめやすいように、内部情報は調査を助けます。見えたコードをなぞるだけで終わらず、利用者が求める動作も別の角度から確かめましょう。