• ホーム
  • 品質向上Blog
  • ホワイトボックステストとは?ブラックボックステストとの違いやテスト技法について紹介

ホワイトボックステストとは?ブラックボックステストとの違いやテスト技法について紹介

ソフトウェアテスト

ソフトウェアテストの質は、製品・サービスの品質を左右します。そのテスト技法には各フェーズに応じた様々な種類があります。

そこで今回は、システムの内部構造に着目するソフトウェアテスト技法「ホワイトボックステスト」について解説します。

「ホワイトボックステストとは何か?」「ブラックボックステストと違いを含め、実施方法を知りたい」という方は、ぜひご一読ください。

ホワイトボックステストとは

ホワイトボックステストとは、別名「構造テスト」とも呼ばれることがあります。
主に、プログラムの内部構造を理解・意識した開発者自身によって実施されます。
具体的には、ソースコードの文、分岐、条件などを網羅的に、それらが正しい構造で意図した通りに動作しているかを確認するテストです。

そのため、ホワイトボックステストの実行には「プログラミングに関する知識」が必要不可欠です。

ホワイトボックステストには以下のような特徴・メリットがあります。

ホワイトボックステストの特徴

  • 単純なミスを検証
  • 耐久性やバグなど、網羅的に検証できる
  • 内部処理上の不具合・バグが発見できる
  • テスト項目がまとめやすい

また、ホワイトボックステストは、システムの内部構造を網羅するようなテストケースに適しています。
具体的には、実施するテストケースによるプログラム実行結果をテスト品質の指標とし、その網羅率(カバレッジ)を計測、分析します。

カバレッジについては後半部分の「ホワイトボックステストの必須知識」にて、詳しく解説します。

qs_cta-btn_700-150.pngのサムネイル画像

ブラックボックステストとの違い

ここからは、以下の特徴について「ホワイトボックステスト」、「ブラックボックステスト」の内容を詳しく説明します。

種別 内容
ホワイトボックステスト 内部構造に注目した網羅的なテスト。
プログラムの内部の情報を基に行うため、
プログラミングの知識が必要不可欠
ブラックボックステスト 内部構造は考慮せず、外部の仕様に限定したテスト。
画面状態のインプット・アウトプットを検証結果とする。

ブラックボックステストとは、別名「機能テスト」とも呼ばれることがあります。

主にプログラムの内部構造を考慮せずに外部からの視点で、ユーザー要求を仕様通り満たしているかを確認するテストです。

テストすべき項目は仕様書などから洗い出します。

そのため、あらかじめシステムの仕様やユーザー要求を理解・把握しておく必要があります。
ブラックボックステストは多くの場合、開発者以外の第三者によってテストが実行されます。そのため、多くのテストレベルに活用ができ、費用対効果が高いと言えるでしょう。

ブラックボックステストとは以下の特徴・メリットを持ち合わせています。

ブラックボックステストの特徴

  • テストレベルのほとんどで対応可能
  • 費用対効果が高い
  • 対応可能なテストレベルが幅広い
  • ユーザー要求を満たしているか確認できる
  • 操作面の良い点・悪い点を洗い出せる

ブラックボックステストについてはこちらの記事でも詳しく解説しておりますので、ぜひご一読ください。

ブラックボックステストとは?ホワイトボックステストとの違いや主要技法について

ホワイトボックステストの技法

ここまでの内容をふまえ、次は「ホワイトボックステストの技法」についてご紹介します。今回は、主に以下2つの技法を取り上げます。

ホワイトボックステストの技法
制御フローテスト:
プログラムにおける処理フローが、網羅的に正しく実行されているかを確認するテスト

データフローテスト:
プログラムの内部構造に関するデータや変数が、正しい手順で行われているかを確認するテスト

制御フローテスト

ホワイトボックステストの技法1つ目は「制御フローテスト」です。

制御フローテストでは、対象となる機能(モジュール)を構成する要素に着目します。そのため、主にプログラムにおける処理フローが、網羅的に正しく実行されているかを確認するテストです。

具体的には、「命令文/分岐した経緯/条件判定」に着目し、これらがすべて正常に動作しているかを網羅的に確認します。前述の通り、これらの網羅率を「カバレッジ」と呼びます。

制御フローテストでは網羅率(カバレッジ)を全てクリアし100%となることが目標となります。

データフローテスト

ホワイトボックステストの技法2つ目は「データフローテスト」です。 データフローテストでは、システム・ソフトウェアで使われているデータや変数に着目します。 主に、プログラムにおける処理フローが、網羅的に「定義→使用→消滅」と正しい順番で実行されているかを確認するテストです。 また、データフローテストではプログラムの処理上で、未定義のままになっている使用データ・未使用データを検出し、内部構造における欠陥を削減することを目的としています。

qs_cta-btn_700-150.pngのサムネイル画像

ホワイトボックステストの必須知識「カバレッジ」とは?

ソフトウェアテストにおいてプログラミング後の単体テストによる品質担保は、手戻りの時間的ロスの削減に寄与します。

上記テストケースを考慮する上では、ホワイトボックステストの概念の1つである「カバレッジ(網羅率)」の計測・分析が、テスト品質の成否を左右します。

そこで今回は、ホワイトボックステストの必須知識として「カバレッジ」についてご紹介します。

カバレッジとは主に、ソフトウェアテストにおける対象プログラムが、「一連の検証作業により、どこまで実施されたのか」を網羅する割合を指します。テストケースにおけるカバレッジの計測により、テスト項目の抜け漏れや、対象プログラムに潜む不具合・バグの効率的且つ網羅的な検出が可能となります。

では、ホワイトボックステストでは具体的にどのようなカバレッジを計測することが多いのでしょうか?代表的なコードカバレッジは、以下の通りです。

代表的なコードカバレッジ

  • ステートメントカバレッジ(C0:命令網羅)
  • ブランチカバレッジ(C1:条件網羅)
  • マルチコンディションカバレッジ(C2複合条件網羅)

まとめ

いかがでしたでしょうか? 今回は、システム・ソフトウェア開発におけるテスト技法の「ホワイトボックステスト」に注目しました。

また、上記のように、カバレッジの評価基準には様々な種類が存在します。
これらの網羅度を算出する方法は「カバレッジ基準」と呼ばれ、これらの基準を総称した実際の網羅結果が「カバレッジ」です。

ホワイトボックステストは開発者自身による、内部構造に着目したテスト技法です。

システムの内部構造を理解・把握した上で、細やかな検証作業を実施することで、プログラミング後の内部構造が仕様通り正しく動作しているのかを、網羅的に確認することができます。

今回ご紹介した内容をふまえ、ホワイトボックステストではカバレッジを活用しながら、正しい手順で、より網羅性の高いソフトウェアテストにしましょう。

本記事をふまえ、導入するテスト技法の見直しや、ソフトウェア品質向上に役立ていただければ幸いです。最後までお読みいただき、ありがとうございました。

qs_cta-btn_700-150.pngのサムネイル画像

この記事を書いた人

テクバンは様々なICT導入を進めることにより顧客のDXを推進し売上、業務改善を推し進めます。

同じカテゴリーの記事

ソフトウェアテスト/
テスト自動化を行う
テクバンとは

  • ヒアリング
    コンサルティング

    当社在籍のコンサルタントが徹底したヒアリングを実施。現状の課題や製品特性を洗い出します。お客様の問題解決・品質向上へ向け。効果的なサービスをご提案します。

  • システム開発・アプリ導入
    インフラ環境設備

    要件定義に基づき、1,000名ほどのエンジニアから案件に合った最適な人員をアサインします。開発からアプリ導入、インフラ設備、品質保証まで全てお任せください。

  • 運用・サポート

    サービス導⼊後に発⽣するシステム運⽤やサポートなども、専⾨企業ならではの⾼いスキルで安定運⽤を実現。お客様企業にて運⽤が定着化するまでご⽀援いたします。

保有資格
  • Adobe Partner Connection リセラープログラム レジスタード
  • Cisco認定
    プレミアパートナー
  • Oracle PartnerNetwork SELL /
    LICENSE & HARDWARE
  • Microsoft Gold
    コンピテンシーパートナー
  • VMware Partner Connect Principal
  • ソフトウェアテストの内容が知りたい
  • テスト自動化の仕組みが知りたい
資料ダウンロード
ソフトウェアテストやテスト自動化の最新情報をダウンロードできます
PDF資料にて当社のサービスメニュー、当社ご紹介資料もございます
ソフトウェアテスト
テスト自動化
品質向上BLOG