· theory  · 7 min read

テストの中身を見るか見ないか?ホワイトボックス/ブラックボックス手法を比較

システムテストを進める際、「中身のコードを知っているか、知らないか」でテストのやり方は大きく変わります。

この2つの視点をホワイトボックス(White-box)ブラックボックス(Black-box)と呼びます。単体テストや結合テストなど、工程ごとにどちらの手法が適しているかを理解することが、試験攻略の鍵です。

今回は、それぞれの特徴をPASBECASの視点で深掘りします。

Problem:テストは「網羅」が難しい

プログラムが複雑になると、考えられる「入力パターン」は無限に広がります。

「すべての数値を入力してみよう!」なんてことは不可能です。では、どうすれば「最低限のテストで最大のバグ」を見つけられるのか。その答えが、効率的なテスト手法の選択にあります。

Affinity:身近な経験で例えると?

おもちゃを修理する場面を想像してください。

  1. ホワイトボックス:中を分解して、歯車が噛み合っているか、配線が切れていないか、内部の仕組みまでじっくり確認する。
  2. ブラックボックス:外からスイッチを押してみて、音が鳴るか、光るか、思い通りの動きをするか(中身は気にせず、結果だけ)確認する。

どちらも修理には欠かせない視点ですよね。

Solution:2つの手法の使い分け

テスト工程と組み合わせて考えると、ぐっと理解が深まります。

1. ホワイトボックス(構造テスト)

プログラムの内部ロジック(コード)に着目してテストを行います。

  • 単体テストで主に使われます。
  • コードの行や条件(If文)をどれだけ実行したかという網羅率(カバレッジ)を重視します。

2. ブラックボックス(機能テスト)

プログラムの中身は気にせず、入力と出力(結果)だけを確認します。

  • システムテストや運用テストで主に使われます。
  • 仕様書通りに機能しているか、異常な入力(変な数字や文字)を入れた時に正しくエラーが出るかをチェックします。

Benefit:それぞれに得意なバグがある

手法を使い分けるメリットは、見つけられるバグの種類が違うことです。

  • ホワイトボックスの強み:絶対に実行されない「死んだコード」や、特定の条件下だけで起こる論理ミスを見逃しません。
  • ブラックボックスの強み:コードをどれだけチェックしても気づかない、「機能そのものの作り忘れ」や、ユーザーの使い勝手の悪さを発見できます。

Evidence:試験に出るキーワード「境界値分析」

試験では、特にブラックボックスに関連する「境界値分析(限界値分析)」が超頻出です。

  • 境界値分析:例えば「100点以下なら合格」という機能がある場合、境界となる99、100、101点をテストします。バグは端っこ(境界)で起こりやすいからです。
  • 同値分割:入力値を「合格チーム(0〜100)」と「不合格チーム(101〜)」などのグループに分け、各グループの代表的な値を1つずつテストする方法です。

Contents:カバレッジの深掘り

ホワイトボックスでは「どこまでテストしたか」の指標が必要です。

  • 命令網羅:すべての命令(行)を少なくとも1回実行。
  • 判定条件網羅:すべての分岐(Yes/No)を少なくとも1回実行。

どちらがより厳しい(テストが細かい)かは、試験でもよく問われます。

Agitation:もし手法を間違えたら?

「ブラックボックスだけで全部テストしよう!」という考えは危険です。 一見、外からは正しく動いているように見えても、内部でメモリを大量消費していたり、特定の1億分の1の確率でフリーズするコードが眠っていたりします。「中も見ないと、最後の一刺しは防げない」のがシステム開発の怖さです。

Solution(Hacks):AIに「境界値」を考えさせる

手作業でテストデータを考えるのは意外と大変ですが、AIを「テストエンジニア」として使ってみましょう。

学習ハック:ChatGPTでテストケースの洗い出し 「入力フォーム:年齢(0〜120歳の整数)。0歳以下や数値以外はエラーという仕様です。このブラックボックステストにおいて、同値分割と境界値分析に基づいたテストデータを最小限かつ網羅的にリストアップして」と聞いてみてください。「どんな値が怪しいのか」というテストのセンスが磨かれます。

まとめ

中身を見る「白」、外から見る「黒」。

試験対策としては、単体テスト=ホワイトボックス、システムテスト=ブラックボックス、そして「境界値分析」の重要性をセットで覚えておきましょう。

:::tip 試験対策メモ コードの品質を高めるなら白、ユーザーの期待に応えるなら黒です。どちらが欠けても100点のテストにはなりません。 :::

Back to Blog