ホワイトボックステストとは?デメリット3つとテストの種類を解説

最終更新日:2023年01月12日
 株式会社ラテラルリンク
監修者
代表取締役 岩井昌弘
ホワイトボックステストとは?デメリット3つとテストの種類を解説
この記事で解決できるお悩み
  • ホワイトボックステストの特徴・種類とは?
  • ブラックボックステストとの違いとは?
  • ホワイトボックステストで発見できない不具合とは?

ホワイトボックステストとは、システム構築において組み込んだプログラムが正しく動作しているか確認するためのテストです。処理の分岐やデータの流れに着目し、不具合が起こらないかを確認します。

当記事では、経験が浅いプログラマやシステム開発の発注をする担当者に向けて、ホワイトボックステストの概要を解説しています。ホワイトボックステストでは発見できない不具合についても解説していますので、ぜひ参考にしてください。

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

ビジネスシーン

ホワイトボックステストとは、システム開発の中でプログラムの内部構造が正常に動作するかを確認するテストです。モジュールの動作確認をする「単体テスト」での実施が一般的です。

ホワイトボックステストでは、システムを構成しているモジュール全てを網羅的に検証します。条件分岐や例外処理・プログラミングの単純なミスなどの不具合がないかを確認することができます。

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

ブラックボックステストとは、システムの内部構造が見えない状態(ブラックボックス化)で、ユーザー目線に立っておこなうテストです。ホワイトボックステストと異なり、どのようにモジュールが動いているかといった内部構造は意識しません。

ブラックボックステストでは、システムの使いやすさや画面のデザインなど、ユーザビリティの向上を目的としています。 

ホワイトボックステストのメリット

ホワイトボックステストには、2つのメリットがあります。

  • 現実的にはありえない、広いデータ範囲でテストできる
  • モジュール単位でテストするため、不具合箇所を容易に発見できる

現実的にありえないデータを、システム利用者が入力するケースがあります。広いデータ範囲でテストしておくことで、入力者の意図にそぐわない誤ったデータでもシステム上の不具合を防ぐことができます。

ホワイトボックステストはモジュール単位でテストするため、不具合箇所が容易に発見できます。不具合の発見が早ければ修正も早く、効率的にテストを進めることができるでしょう。

ホワイトボックステストの時点で不具合を多く発見することで、品質の向上を期待できます。

ホワイトボックステストのデメリット

デメリットとして、ホワイトボックステストでは発見できない事項が3つあります。

  • ユーザーのニーズ漏れ
  • 設計書の誤りや漏れ
  • 他システムやモジュールと連携時の不具合

ユーザーのニーズ漏れ

ホワイトボックステストはシステムのモジュールが正しく動作しているかを確認するテストであるため、ユーザーのニーズまでは把握できません。

例えば、年間の売上を処理するプログラム内で0円以上の売上数値で詳細設計がされており、ホワイトボックステストも問題なく完了したとしましょう。実際にはマイナスの売上月を考慮して欲しいユーザーニーズがあった場合、ホワイトボックステストで気づくことができません。

設計書の誤りや漏れ

ホワイトボックステストは、詳細設計書やプログラム設計書に則ってテストします。設計書自体に誤りや漏れがあった場合、ホワイトボックステストでは発見できません。

ホワイトボックステストが終わった後に設計書を修正した際は、改めてホワイトボックステストを実施する必要があります。

他システムやモジュールと連携時の不具合

ホワイトボックステストはモジュール単位でテストするため、他システムやモジュール連携時の不具合には気づくことができません。ブラックボックステストやシステムテストで不具合が発見されたときは、一部のモジュールでホワイトボックステストをやり直すことがあります。

他システムやモジュールとの連携時に起こる不具合は必ず発生するものと考え、リスクを考慮した余裕のあるテストスケジュール設定が大切です。

ホワイトボックステストの主な2つの手法

フローチャート 考えるビジネスマン

ホワイトボックステストの主な2つの手法は以下のとおりです。

  • 制御フローテスト
  • データフローテスト

制御フローテスト

プログラム内にある、条件判定や制御処理が正しく機能しているかを確認します。制御フローテストでは、モジュール内にあるさまざまな分岐処理・ループ処理の経路全てを通過する必要があります。

モジュール単位で全ての経路を通過しないと、後工程のテストケースが膨大になります。後工程のテストをスムーズに実施するためにも、制御フローテストでは全ての条件パターンを試すようにしましょう。

IF文やCASE文・ループ文をフロー図で可視化すると、テスト漏れが起こりにくくなります。全ての条件を検証し、モジュールレベルで考慮漏れがない状態にしましょう。

データフローテスト

プログラムで定義した、変数と変数の加工が正しく処理されるかを確認するテストです。モジュール内では、定義した変数に加算や減算・消滅などを繰り返して処理をしています。

データフローテストでは、ある値を与えて処理を実行した結果、想定通りの値が返ってくるかを確認します。データの流れに注目して、正しい処理が行われているか・無駄なデータ処理をしていないかを検証しましょう。

ホワイトボックステストを実施する上でのポイント

ホワイトボックステストを実施するためには、内部構造を把握する必要があるため、プログラムを組んだ本人が担当するケースが多いです。

詳細設計書やプログラム設計書に矛盾がない動きになるよう、システム最小単位のモジュール構造が可視化されていると効率よく実施できるでしょう。
モジュールの構造を可視化した後、設計書に記載のない処理や想定外のデータ量を用いた分析をすることで品質向上が望めます。

まとめ

ホワイトボックステストは、モジュール単位でシステムに不具合がないかを確認するためのテストです。全ての条件分岐とデータ範囲で網羅性のあるテストを実施します。

ホワイトボックステストだけでは、システム全体の不具合を発見することはできません。ブラックボックステストやシステムテスト、ユーザー検証などを組み合わせて、システムの品質向上に取り組んでいきましょう。

「比較ビズ」なら、複数の業者を比較して価格や納入プロセスなどに優れた会社を見つけることができます。システム開発やテスト設計に迷うことがあれば、ぜひ利用してみてください。

自社にぴったりのシステム開発会社を探すには?

システム開発会社選びでお困りなら「比較ビズ」が解決します!

  • 費用相場がわからず不安...
  • 発注先選びを失敗したくない…
  • 忙しくて探す時間がない...

今年で運営17年目の「比較ビズ」は、仕事を”依頼したい人”と”請けたい人”を繋ぐマッチングサービスです。これまでWEBシステム、スマホアプリ、業務システムの開発など多くのご相談を頂き1万社以上もの企業様の発注をサポートしてまいりました。

まずは下記のボタンより、お気軽にご相談ください。

監修者の一言

システムテストにおける開発者側のテストとしては、機能要件で定義した個々の機能がシステム設計書の通りに実装されているかに着目した単体テスト。それぞれの機能間や他システムとの連携を見る結合テスト、システム全体が業務要件で定義したフロー通りの機能を満たしているかどうかを確認する総合テストといったものがあります。このうち、ホワイトボックステストは、単体テストで用いられる手法の1つです。

これからテストを計画する際には、テストの範囲や、次のテストに進むための完了条件はもとより、連携体制、具体的には、どのレベルの障害が発生した時に、誰に報告をするのか、テスト期間中のミーティングの計画といったことも合わせて決めておきましょう。

 株式会社ラテラルリンク
代表取締役 岩井昌弘
監修者

徳島県出身 名古屋大学情報文化学部卒業。同大学院人間情報学研究科修士課程修了。2006年有限会社ラテラルリンクを設立。名古屋市で、Webシステム開発を中心に、Web構築全般、Web活用支援に従事。クライアントは、中小・零細企業から東証一部上場企業、国立大学まで幅広いニーズに対応。経済産業省認定「スマートSMEサポーター」。