デジタルトレンドナビ
システム開発

2024.01.31

ホワイトボックステストとは?ブラックボックステストとの違いや必要性について解説

ホワイトボックステストとは?ブラックボックステストとの違いや必要性について解説

ホワイトボックステストは、開発者の立場からソフトウェアやシステムが想定どおりに作動しているかをチェックするテストです。実施することで、ほかのテストでは見えない部分も可視化出来ることが特徴です。


今回はホワイトボックスについて詳しく解説するとともに、ブラックボックステストとの違いやこれらの必要性について解説します。
ソフトウェア開発や品質管理に携わる方は、ぜひ目を通してください。

この記事でわかること

  • ホワイトボックスでできること
  • ブラックボックステストとの違い
  • ホワイトボックステストを行うメリットとデメリット
  • ホワイトボックステストを行う必要性

ホワイトボックステストでできることは?

ホワイトボックステストでできることは?

ソフトウェアやシステム開発では、運用開始や納品までの間に数多くのテストが行われます。そのなかの1つがホワイトボックステストであり、相互補完する関係にブラックボックステストがあります。はじめに、ホワイトボックステストの意義や特徴を解説していきます。

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

ホワイトボックステストとは、内部構造に重点を置いたテストで、仕様書のとおりに動作することを前提に行われます。構造のみならず設計したとおりの動作が確認できるか、制御の流れなども含めて行われます。

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

このテストはエンジニアが手掛けた部分を網羅して、あらゆる検証が行われることが特徴です。条件分岐を基準としたテスト、例外処理をメインとしたテストなど、幅広い範囲で検証します。プログラム上にバグがないか、処理ミスによるエラーの有無など細かいところまでチェックします。

どのようなテストをどこまでやるかは開発内容により異なり、プログラムの詳細設計書をもとに進めます。場合によっては、各所について正しく把握するためにフローチャートで表すこともあり、チームを組んで開発する場合に誰が見てもわかるようにしておくこともポイントです。

相互補完するテストの種類にはブラックボックステストがありますが、次の章で両者の違いについて解説していきます。

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

ブラックボックステストは、システムにおける外部要素に対するテストです。内部・外部という表現をすると少しややこしいのですが、ホワイトボックステストが仕様書どおりに動くことを前提としているのに対し、ブラックボックステストはユーザーの操作性などに重きを置いている といったニュアンスがあります。

そして、システムに入力する情報と出力される情報に重きを置いてテストを行い、そのシステムを使用するユーザーと同じ立場で、外部からシステムを操作することが基本となります。画面表示やレイアウトの崩れ、ユーザーインターフェースの不具合の有無に加え、同値分割法や境界値分析、ディシジョンテーブルテスト、状態移管テスト、組み合わせテストなどの手法を使ったテストが行われます。

名前にホワイトやブラックが使われていることから、さまざまなイメージを持つこともありますが、簡単にいえば開発者側で行う内部的な検証と、ユーザーの立場でみた製品全体の検証という違いがあります。なお、両者は役割に違いがあるものの、どちらか一方だけを実施することはありません。どちらも行うのが一般的です。

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

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

ホワイトボックステストは、モジュール内の処理フローや構造・仕組みなどを検証する開発者側が行うテストです。この検証を行うことでプログラムに対してどのような影響を及ぼすのでしょうか。ホワイトボックステストのメリットとデメリットをそれぞれ解説していきます。

メリット①重要な要素を細かく把握できる

テストできるデータやパスなど、開発者であれば複数の組み合わせを用意できるので、さまざまな状況を想定して実行できる点が最大のメリットです。製品として使用・運用した場合に想定できる範囲はもちろん、通常ではありえないような状況を設定して実行することもできます。

とくに重要な部分は細かい設定をすることで、詳細な情報を把握できます。安全性やセキュリティなどを司る部分に注力するケースもあります。テストを繰り返すことで、その製品の強み・弱みはもちろん、耐久性も把握できるのもメリットの1つです。

メリット②不具合も見つけられる

ソフトウェアやシステムは、人が便利かつ効率的に操作できるよう開発しますが、人がつくるもののため、完璧なノーミスを目指すことは難しいです。ホワイトボックステストでは、開発段階では気づかなかったバグなどの不具合を発見できることもメリットです。

別のプログラムと合わせたときに、こうした不具合が見つかることもあり、早期に対処できることも魅力といえます。この段階で修正を繰り返し、不具合のない状態にできれば、この開発はほぼ完成に近い状態になります。

デメリット①詳細設計書のミスは致命的

ホワイトボックステストは、詳細設計書をベースに行われます。テスト基準や手法などもこれに沿って行うため、万が一間違いがあった場合は、すべてが台無しになる可能性があります。つまり、本来なら見つけられるはずの不具合が見つけられないケースもあるわけです。

そのため、詳細設計書は命綱のような存在であり、厳重な正確さが求められます。

デメリット②使いやすさまでは判断できない

ソフトウェアやシステムの内部的な不具合を検証するテストのため、ユーザー目線での操作性や使いやすさまでは把握することができません。製品によっては、どんなに正常な動作を確認できても、実際に使ってみると手順が多い、もう少し便利に使いたいなどの要望が出てくることもあります。

このテストでは、内部的かつ詳細な検証ができる一方で、ユーザーの立場になった検証ができない点がデメリットといえます。

ホワイトボックステストで使用される手法

ホワイトボックステストで使用される手法

ホワイトボックステストを実施する際は、主に2つの手法を用いて行われます。制御フローテストとデータフローテストについてそれぞれ解説します。

制御フローテスト

制御フローテストは、対象となるプログラムの制御に関するテストで、処理に対する動作をフローチャートに記して行われます。入力値や条件など必要な情報を組み合わせたとき、設計したフローチャートのとおりに処理されるかを確認します。主なテストの流れは次のとおりです。

実施の手順

はじめにソースコードをベースとしたフローチャートを作成します。この段階では、モジュールの構造を図にして可視化することがメインとなり、具体的な動作確認などは行いません。誰が見てもわかるようにフローチャートを作成するのがポイントになります。

次に、カバレッジ基準を決めます。カバレッジとは網羅率のことで、詳細なテストを行うなかでどこまで実施するかを定めます。

ホワイトボックステストは前述したように、開発者側がさまざまなケースを想定して、あらゆる設定での検証が可能です。思いつくすべての検証をすることもできますが、納期やテストにおける時間、製品における必要性などを考えてカバレッジを決める必要があるのです。

主な内容としては、命令文(ステートメントカバレッジ)、分岐した経路(ブランチカバレッジ)、条件(複合条件カバレッジ)があります。

その後は、定めたカバレッジ基準をすべてとおるフローチャート上の経路を抽出します。そして実際にその経路を通る値を設定し、動作確認を行うのがこのテストの概要です。想定どおりの動作が確認できれば完了となります。

データフローテスト

データフローテストは、制御パスのなかの変数処理にフォーカスして、エラーなどを検証するテストです。主な変数データとして、定義・参照・消滅が挙げられます。変数は、一般に宣言や代入といった定義により生成され、1回以上参照され、その後は必要なければ消滅・解放といったサイクルを持ちます。

このテストでは、これらのサイクルが正しく処理されているか、不要な処理をしていないかを確認することが目的です。

実施の手順

実際に動作を確認する前に、検証したいデータの流れを図に示して可視化します。それに沿ってデータが使用されているかを確認します。

変数は、定義・参照・消滅といった経過をたどるのが標準ですが、参照されていない場合や、2回定義されているなどおかしな流れになっていないかを確認し、不正な状態をチェックするのがデータフローテストのおおまかな手順です。

ホワイトボックステストの必要性について

ホワイトボックステストの必要性について

ソフトウェアやシステムを開発する際は、いくつものテストが行われますが、そのなかでもホワイトボックステストはマストな存在です。テストの段階で十分な検証が行われていないと、後々不具合が多発したりバグが多く見つかる可能性があるからです。

また、開発に関する要件の漏れがあった場合は、その部分に戻って再度作業することになります。そうなれば工数や時間、労力などもどんどん膨らんでしまい、結果的にコストが予定よりも大きくなったり、十分な品質を保てなかったりする恐れもあるのです。

ただし、ホワイトボックステストは、仕様書のとおりに動作するかをチェックするのみである点は、正しく理解しておかなければなりません。というのは、仕様書どおりの製品を開発したとしても、ユーザーのニーズを満たすかまでは、このテストでは検証できないためです。

こうした性質を持つホワイトボックステストですが、製品の内部構造に対し細部まで網羅的に検証できるという点においては、開発の際は必ず行うべきものといえます。

グレーボックステストとは?

ホワイトボックステストとブラックボックステストは相互補完の関係にありますが、その中間的なポジションのグレーボックステストもあります。プログラムの内部構造を理解する人が実行者となり、ユーザー目線で外部から機能などのテストを行うものです。

具体的な内容はブラックボックステストと同じですが、内部構造を理解する人が実行するため、ホワイト・ブラックの双方の良い面を活かした詳細なテストができます。

次にこちらの記事では、RFPの記載すべき内容や作成のメリットについて解説します。ぜひご覧ください。

まとめ

まとめ

ホワイトボックステストは、開発した製品が仕様書のとおりに動くかを確認するテストであり、内部構造を理解している人が行うものです。開発に携わるエンジニアや担当者が行うことが多く、詳細設計書に基づき実行します。

また、想定の範囲を超えた設定を行い、あらゆるシーンを想定した検証もできるため、網羅的なテストができることも特徴の1つです。その一方で、ユーザーエクスペリエンスまでは検証できないものの、開発にはマストなテストです。

製品の品質向上やバグの早期発見を実現したい場合は、ホワイトボックステストを行うことをおすすめします。

投稿者

  • デジタルトレンドナビ編集部

    システム開発、Webサイト制作、ECサイトの構築・運用、デジタルトランスフォーメーション(DX)など、デジタルビジネスに関わる多岐の領域において、最新のトレンド情報や実践的なノウハウを発信してまいります。