ホワイトボックステストとブラックボックステストの違いとは、プログラムの中の動きを確認するか、入力した内容と結果を確認するかです。
ホワイトボックステストでは、プログラムの中にある処理や分かれ道を確認します。ブラックボックステストでは、画面を操作した結果が、決められた通りになるかを確認します。
かんたんに言うと、機械の中を開けて部品の動きを調べるのがホワイトボックステストです。機械を外から操作して、正しく動くかを調べるのがブラックボックステストです。
この記事では、2つのテストの意味、具体例、種類、使い分けを初心者向けに解説します。
関連するIT用語・ビジネス用語をまとめて確認したい方は、IT用語・ビジネス用語一覧もあわせてご覧ください。
ホワイトボックステストとブラックボックステストの違いとは
ホワイトボックステストとブラックボックステストの大きな違いは、プログラムの中身をテストの判断材料にするかどうかです。
ホワイトボックステストでは、プログラムがどのような順番で動くかを確認します。ブラックボックステストでは、入力した内容に対して、正しい結果が返るかを確認します。
| 比較する項目 | ホワイトボックステスト | ブラックボックステスト |
|---|---|---|
| 確認するもの | プログラムの内部の動き | 入力した内容と表示される結果 |
| ソースコード | 確認する | 基本的に判断材料にしない |
| 主な目的 | 処理の抜けや分かれ道の誤りを見つける | 決められた通りに動くか確認する |
| 主な方法 | 命令網羅、分岐網羅、条件網羅 | 同値分割、境界値分析、デシジョンテーブル |
| よく使われる場面 | 単体テストなど | 結合テスト、システムテストなど |
| 見つけやすい問題 | 実行されていない処理、条件の誤り | 画面の表示ミス、仕様とのずれ |
ソースコードとは、コンピューターに行わせる命令を、人が読める形で書いたものです。
仕様とは、システムがどのように動くべきかを決めた内容です。実際の動きが仕様と異なる場合は、修正が必要になります。
2つのテストは、どちらか一方を選ぶものではありません。見つけやすい問題が異なるため、目的に合わせて組み合わせます。
ホワイトボックステストとは
ホワイトボックステストとは、プログラムの内部の動きを見ながら行うテストです。
プログラムの処理が、どの順番で動くかを確認します。条件によって処理が分かれる部分も調べます。
プログラムとは、コンピューターに行わせる処理をまとめたものです。たとえば、ログイン、検索、計算などの機能を動かします。
プログラムの中身を見て確認するテスト
プログラムには、入力された内容によって動きを変える部分があります。
たとえば、年齢が18歳以上なら「利用できます」と表示し、18歳未満なら「利用できません」と表示する処理です。
このように、条件によって処理が分かれる仕組みを条件分岐といいます。
ホワイトボックステストでは、18歳以上の場合と18歳未満の場合の両方を試します。すべての処理が正しく動くかを確認するためです。
ホワイトボックステストの身近な例
身近な例では、料理の作り方を確認する場面に似ています。
完成した料理を食べるだけでなく、材料を入れる順番や加熱時間まで確認します。
IT用語としては、完成した画面だけを見るのではありません。画面の裏側で動く計算や判断まで確認するテストです。
ブラックボックステストとは
ブラックボックステストとは、プログラムの中身をテストの判断材料にせず、入力した内容と結果を確認するテストです。
利用者と同じように画面を操作し、決められた通りに動くかを調べます。
入力とは、文字や数字を画面に入れることです。出力とは、入力に対して画面に表示される結果のことです。
入力と結果を見て確認するテスト
ブラックボックステストでは、プログラムの内部で何が行われているかを細かく確認しません。
入力した内容に対して、期待した結果が表示されるかを確認します。
たとえば、正しいパスワードを入力したときにログインできるかを調べます。間違ったパスワードを入力したときに、エラーが表示されるかも確認します。
エラーとは、入力や処理に問題があるときに表示される案内です。
ブラックボックステストの身近な例
身近な例では、自動販売機を使う場面に似ています。
利用者は、自動販売機の中にある配線や部品を確認しません。お金を入れてボタンを押し、選んだ飲み物が出るかを確認します。
IT用語としては、プログラムの中身よりも、操作と結果が正しいかを確認するテストです。
ホワイトボックステストとブラックボックステストの違いを比較
2つのテストは、同じシステムを確認する方法ですが、見る場所が異なります。
ここでは、初心者が押さえておきたい4つの違いを説明します。
確認する場所の違い
ホワイトボックステストは、プログラムの内部を確認します。
ブラックボックステストは、画面や操作結果など、利用者から見える部分を中心に確認します。
ソースコードを見るかどうかの違い
ホワイトボックステストでは、ソースコードを見ながらテスト内容を考えます。
どの処理が動くか、どこで動きが分かれるかを確認するためです。
ブラックボックステストでは、仕様書や画面の動きをもとにテスト内容を考えます。
仕様書とは、入力できる内容や表示する結果など、システムの決まりをまとめた文書です。
見つけやすい問題の違い
ホワイトボックステストは、一度も動いていない処理や、条件分岐の誤りを見つけやすい方法です。
一方で、必要な機能そのものが作られていない場合は、気づきにくいことがあります。
ブラックボックステストは、画面の表示ミスや、仕様と実際の動きのずれを見つけやすい方法です。
ただし、プログラム内部のどこに原因があるかまでは、すぐに分からない場合があります。
テスト方法の違い
ホワイトボックステストでは、プログラムの処理をどこまで動かせたかを確認します。
ブラックボックステストでは、入力する値をグループに分けたり、入力できる範囲の境目を試したりします。
どちらも、限られた時間で大切な部分を確認するための方法です。
具体例で分かる2つのテストの違い
ログイン画面を例にすると、2つのテストの違いが分かりやすくなります。
同じログイン機能でも、確認する視点が異なります。
ログイン画面をホワイトボックステストする例
ホワイトボックステストでは、ログイン処理の中の動きを確認します。
たとえば、次の処理がすべて実行されるかを調べます。
- 利用者名が正しい場合の処理
- 利用者名が間違っている場合の処理
- パスワードが正しい場合の処理
- パスワードが間違っている場合の処理
- 入力欄が空の場合の処理
処理の一部が一度も実行されていない場合は、確認が足りない可能性があります。
ログイン画面をブラックボックステストする例
ブラックボックステストでは、実際に画面へ文字を入力します。
たとえば、次のような操作を確認します。
- 正しい利用者名とパスワードでログインできるか
- 間違ったパスワードでエラーが表示されるか
- 入力欄が空のときに案内が表示されるか
- 長すぎる文字を入力しても問題が起きないか
この方法では、利用者が実際に使ったときの動きを確認できます。
ホワイトボックステストの主な種類
ホワイトボックステストでは、プログラムをどこまで確認できたかを測ります。
確認できた範囲を表す言葉が、網羅率やカバレッジです。
網羅とは、確認すべき部分を、どこまで漏れなく確認したかという意味です。
| 種類 | かんたんな意味 |
|---|---|
| 命令網羅 | プログラムの命令を1回以上動かす |
| 分岐網羅 | 条件で分かれるすべての道を通る |
| 条件網羅 | 一つひとつの条件で、当てはまる場合と当てはまらない場合を試す |
命令網羅
命令網羅とは、プログラムに書かれた命令を、少なくとも1回は実行する方法です。
命令網羅は、C0と呼ばれることもあります。
プログラムの中に、一度も使われない処理が残っていないかを確認できます。
分岐網羅
分岐網羅とは、条件によって処理が分かれる部分で、すべての道を少なくとも1回は実行する方法です。
分岐網羅は、判定網羅やC1と呼ばれることもあります。
たとえば、「条件に当てはまる場合」と「当てはまらない場合」の両方を確認します。
条件網羅
条件網羅とは、条件式の中にある一つひとつの条件について、当てはまる場合と当てはまらない場合を確認する方法です。
条件が複数あるときに、それぞれが正しく判断されるかを調べます。
分岐網羅よりも、条件を細かく確認できる場合があります。
ブラックボックステストの主な種類
ブラックボックステストでは、入力する値や操作の組み合わせを工夫します。
代表的な方法は、同値分割、境界値分析、デシジョンテーブルです。
同値分割
同値分割とは、同じ結果になると考えられる入力を、いくつかのグループに分ける方法です。
たとえば、年齢を1歳から120歳まで入力できる場合を考えます。
- 0歳以下
- 1歳から120歳
- 121歳以上
すべての数字を試すのではなく、それぞれのグループから代表的な値を選びます。
これにより、少ない回数で大切な確認ができます。
境界値分析
境界値分析とは、入力できる範囲の境目を重点的に確認する方法です。
年齢を1歳から120歳まで入力できる場合は、0歳、1歳、120歳、121歳などを試します。
範囲の境目では誤りが起きやすいため、テストでよく使われます。
同値分割と境界値分析の違い
同値分割は、入力する値をグループに分ける方法です。
境界値分析は、グループの境目にある値を重点的に確認する方法です。
2つは一緒に使われることが多くあります。
デシジョンテーブル
デシジョンテーブルとは、複数の条件と結果の組み合わせを表にして確認する方法です。
日本語では、決定表と呼ばれます。
たとえば、会員かどうか、購入金額が一定以上かどうかで、割引内容が変わる場合に使います。
ホワイトボックステストとブラックボックステストの使い分け
ホワイトボックステストとブラックボックステストは、どちらか一方だけを選ぶものではありません。
確認したい内容や、システムを作る段階に応じて使い分けます。
単体テストでの使い分け
単体テストとは、プログラムを小さな部分に分けて確認するテストです。
たとえば、計算する部分や、入力内容を確認する部分を一つずつ調べます。
単体テストでは、ホワイトボックステストがよく使われます。処理の分かれ道や計算結果を細かく確認しやすいためです。
ただし、単体テストでも、入力と結果だけを見るブラックボックステストを行うことがあります。
単体テストとホワイトボックステストの違い
単体テストとホワイトボックステストは、同じ意味ではありません。
単体テストは、どの大きさのプログラムを確認するかを表す言葉です。
ホワイトボックステストは、どのような見方で確認するかを表す言葉です。
結合テストでの使い分け
結合テストとは、複数のプログラムや機能をつないで確認するテストです。
たとえば、注文画面から支払い画面へ、正しく情報が渡るかを確認します。
結合テストでは、ブラックボックステストがよく使われます。
ただし、問題が起きた場所を調べるときは、プログラム内部の動きも確認します。
システムテストでの使い分け
システムテストとは、完成に近いシステム全体を確認するテストです。
利用者と同じように操作するため、ブラックボックステストが中心になります。
画面、検索、登録、支払いなど、複数の機能が正しく動くかを確認します。
ホワイトボックステストのメリットとデメリット
ホワイトボックステストは、プログラム内部の処理を細かく確認できる方法です。
一方で、ソースコードを読むための知識が必要になります。
ホワイトボックステストのメリット
- 実行されていない処理を見つけやすい
- 条件分岐の誤りを確認しやすい
- 問題がある場所を絞り込みやすい
- 自動テストに向いている
自動テストとは、あらかじめ作った手順を、コンピューターに繰り返し実行させるテストです。
人が毎回同じ操作をしなくても、決められた確認を自動で行えます。
ホワイトボックステストのデメリット
- プログラムの知識が必要になる
- 仕様そのものの抜けに気づきにくい
- すべての処理を確認するには時間がかかる
プログラムが正しく書かれていても、必要な機能が最初から作られていない場合があります。
そのため、利用者の立場から確認するブラックボックステストも必要です。
ブラックボックステストのメリットとデメリット
ブラックボックステストは、利用者に近い視点で確認できる方法です。
一方で、プログラム内部のどこに問題があるかまでは分かりにくい場合があります。
ブラックボックステストのメリット
- 利用者と同じ操作で確認できる
- 仕様どおりに動くか確認しやすい
- プログラムの詳しい知識がなくても行いやすい
- 画面や操作の問題を見つけやすい
完成した機能を、実際に利用する人に近い立場で確認できる点が大きなメリットです。
ブラックボックステストのデメリット
- 内部のどこに問題があるか分かりにくい
- 一度も実行されていない処理に気づきにくい
- 入力の選び方によって確認漏れが起きることがある
すべての入力を試すことは難しいため、同値分割や境界値分析を使います。
初心者が間違えやすいポイント
ホワイトボックステストとブラックボックステストには、意味を取り違えやすい点があります。
ここでは、特に間違えやすい3つのポイントを説明します。
ホワイトボックステストは単体テストと同じではない
ホワイトボックステストは、プログラムの中を見て確認する方法です。
単体テストは、小さな単位に分けて確認するテストです。
単体テストでホワイトボックステストがよく使われますが、2つは同じ意味ではありません。
ブラックボックステストは中身を知らないという意味ではない
ブラックボックステストをする人が、プログラムをまったく知らないとは限りません。
プログラムの中身を知らないのではなく、中身をテストの判断材料にしない方法です。
入力した内容と結果を中心に確認します。
どちらか一方だけ行えばよいわけではない
ホワイトボックステストだけでは、利用者の操作で起きる問題を見落とすことがあります。
ブラックボックステストだけでは、一度も実行されていない内部処理を見落とすことがあります。
2つを組み合わせることで、異なる角度からシステムを確認できます。
ホワイトボックステストとブラックボックステストのよくある質問
ホワイトボックステストはいつ使いますか?
プログラムの内部処理や条件分岐を確認したいときに使います。
単体テストでよく使われますが、必要に応じてほかのテストでも使われます。
ブラックボックステストはいつ使いますか?
入力した内容に対して、正しい結果が返るかを確認したいときに使います。
画面操作や機能全体を確認する場面でよく使われます。
単体テストではどちらを使いますか?
単体テストでは、ホワイトボックステストがよく使われます。
ただし、入力と結果だけを確認するブラックボックステストも行われます。
ホワイトボックステストの網羅率とは何ですか?
網羅率とは、プログラムの処理をどの程度確認できたかを表す割合です。
テストカバレッジとも呼ばれます。
命令網羅、分岐網羅、条件網羅など、何を基準にするかによって割合の意味が変わります。
プログラムの実行された部分の割合を測るものは何ですか?
プログラムの実行された部分の割合を測るものは、テストカバレッジです。
日本語では、網羅率と呼ばれます。
どの命令や分岐を実行したかによって、命令網羅率や分岐網羅率などに分かれます。
ブラックボックステストでもプログラムの知識は必要ですか?
プログラムの詳しい知識がなくても、テストを行える場合があります。
ただし、仕様や画面の使い方を正しく理解する必要があります。
ホワイトボックステストとブラックボックステストは併用できますか?
2つのテストは併用できます。
内部処理と利用者から見た動きの両方を確認できるため、組み合わせて使うのが一般的です。
まとめ|ホワイトボックステストとブラックボックステストの違いとは
ホワイトボックステストとブラックボックステストの違いとは、プログラムの中の動きを確認するか、入力した内容と結果を確認するかです。
ホワイトボックステストは、処理の順番や条件分岐を確認します。ブラックボックステストは、利用者の操作に対して正しい結果が返るかを確認します。
- ホワイトボックステストは、プログラム内部の動きを確認する
- ブラックボックステストは、入力した内容と結果を確認する
- ホワイトボックステストでは、命令網羅や分岐網羅を使う
- ブラックボックステストでは、同値分割や境界値分析を使う
- 単体テストでは、ホワイトボックステストがよく使われる
- 結合テストやシステムテストでは、ブラックボックステストがよく使われる
- 実際の開発では、2つを組み合わせて使う
2つは、見つけやすい問題が異なります。どちらか一方だけでなく、確認する目的に合わせて使い分けることが大切です。

