発注ラウンジは、システム開発の発注に必要な様々なノウハウや発注ナビで実際に開発された発注者様のインタビューなど、発注担当者様のための情報発信サイトです。

ホワイトボックステストとブラックボックステスト、どっちが必要?

システム開発におけるテストは、大きく分けて二つあります。
システムの仕様確認を行う「ブラックボックステスト」と、プログラムが想定通りに動いているかを確認する「ホワイトボックステスト」です。
ブラックボックステストは利用者側に立ったテストであるのに対し、ホワイトボックステストは作り手側の視点に立ったテストといえます。
今回は、ホワイトボックステストとブラックボックステストの違いや手法、プログラムに最適なテストについてご紹介します。

 

目次

 

 

ホワイトボックステストでは何ができる?

プログラム内部のテストをホワイトボックステスト、プログラム外部のテストをブラックボックステストといいます。まずは、ホワイトボックステストについて、どのようなテストなのかを解説します。

 

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

ホワイトボックステストは、すべてのプログラムが意図したとおりに動作しているかを確認するためのテストです。プログラムの構造やエンジニアが作成したロジック、制御の流れなどが正常かどうかを検証するため、「作り手側のテスト」といわれています。

 

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

ホワイトボックステストは網羅的なテストのため、条件分岐を基準としたテストや例外処理を重視したテストなど、あらゆる事態に対して動作確認を行えます。バグと呼ばれるプログラム上の記載ミスや処理間違いによるエラーがないかなど、単純なミスがないかを検証します。
何をどのようにテストするかというテスト項目は、動作の分岐条件やエラー時における画面表示のメッセージ設定など、プログラム内部の情報について詳細に記載されている詳細設計書を基に作成されます。
また、プログラム作成者の意図と照らし合わせて確認するため、詳細設計書の作成者が間違っている場合は、ホワイトボックステストで対処することができません。

 

ブラックボックステストでは何ができる?

次にブラックボックステストについて解説します。ブラックボックステストは、プログラムの構造など内部を考慮せずに、外部から網羅的にチェックする手法です。

 

●ブラックボックステストとは?

ブラックボックステストは、システム自体の仕様を満たしているかどうかを確認する機能のテストです。画面表示などユーザーインタフェースの不具合やレイアウト崩れなど、正しい出力ができているかを確認するため、「ユーザー側のテスト」といわれています。

 

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

ブラックボックステストでは内部構造や情報の処理方法などを考慮しないため、プログラムが内部でどのような動きをしているのかわかりません。そのため、情報の処理前と処理後の値の変化や、画面の状態といったインプット・アウトプットの結果のみを確認することで検証を行います。
ブラックボックステストで行うのは、性能の確認だけではありません。使用上の不便さや判断しやすいデザインかどうかなど、ユーザーの目に見える範囲のテストを行うことからUI・UXの観点での確認も含んでいます。

 

ホワイトボックステスト・ブラックボックステストの手法

ホワイトボックステストとブラックボックステストでは、効率良くテストを行うため、それぞれテスト手法が異なります。双方で使われる具体的なテスト手法についてご紹介します。

 

●ホワイトボックステストで使われる方法

<制御フローテスト>

プログラムの処理経路が、網羅的に実行されているかを確認する方法です。条件判定と呼ばれる処理の分岐がある場合、すべての処理経路を通過させる必要があります。一つでも処理経路の実行が確認されないと、プログラムが正常に動作しているかを判断できなくなるため、条件に合わせたテストデータを用意する必要があります。

<データフローテスト>

プログラムのデータや変数が、順番通りに行われているかを確認する方法です。プログラムでは渡された値について変換したり、ほかの文字を付加したりといった加工を行う場合があります。そのため、データフローテストでは、ある処理について実行された結果、想定通りの値が返却されることを確認します。例えば、簡単な足し算を行うプログラムでは、「1+1」の結果が「2」と画面に正しく表示されれば合格です。

 

●ブラックボックステストで使われる方法

<同値分割法>

正常処理とエラー処理が正しく行われるかどうかを確認する方法です。例えば、一年間に存在する月について範囲判定を行うプログラムでは、1~12の値が正常処理に当たります。0以下や13以上の値がエラーと処理されれば正解ということです。

<境界値分析>

処理と処理の境界となる値を確認する方法です。正常となるパターン値と異常となるパターン値を上限下限の両境界についてテストします。

同値分割法と境界値分析は、独立してそれぞれで実施されることはほぼありません。同値分割法による正常な値を決定した後に、その数値の境界が正常かどうかを確認するのが一般的です。

 

バランスの良いテストを行う方法

ホワイトボックステストとブラックボックステストのどちらか一方しか行わないというシステムは、ほとんどありません。両方をいかに組み合わせて、効果的なテストを行うかが重要です。

 

●グレーボックステスト

グレーボックステストは、内部構造を理解した上で外部からの機能や仕様を確認するブラックボックステストを行うことを指します。通常のブラックボックステストよりも詳細な確認を行えるため、ホワイトボックステストとブラックボックステストの中間といえます。
グレーボックステストを行う際は、多くの場合、内部の構造についてよく理解しているプログラム作成者をテスト実施者にします。プログラム作成者をテスト担当にすると、内部を知らない他者が実施するよりも時間がかからず、スムーズにテストを行えるためです。

 

●両方のメリットを織り交ぜるのが最適

ホワイトボックステストとブラックボックステストは両方のメリットを生かし、織り交ぜて行うのが最もバランスが良い方法といえます。
ホワイトボックステストは内部の確認なので、デグレーションチェックまでは網羅できません。また、内部構造について理解していることを前提にテストを行うため、プログラムの規模が大きくなればなるほど理解するまでに時間がかかり、その分コストが増大します。
一方、ブラックボックステストは、外部からの確認のみで済むため、理解するのに時間はかかりません。ただし、内部についての詳細な確認はできないため、潜在的なバグを検知しきれない可能性があります。

ホワイトボックステストかブラックボックステストか、どちらか一方に偏ったテストでは、プログラム開発に必要な最低限の確認を網羅できません。工数や工期などを考慮して、どちらのテストをどこまでやるかを検討しましょう。

 

プログラムにとって最適なテストを行うのに必要なこと

ホワイトボックス2-min

プログラム開発におけるテストは、内部と外部の双方からチェックをするのが前提です。
クライアントの要件を満たしているかを確認するためには、内部もしくは外部の一方だけを確認しても意味を成さないためです。
実際の現場で、ホワイトボックステストとブラックボックステストを明確に分けて行うことはあまりありません。
しかし、処理側の観点と表示側の観点でテスト項目書が作られることはあります。
両方の観点を理解しておけば、幅広いプログラムのテストに対応可能になり、プログラムに合わせてバランス良く行うことができるでしょう。

 

■システム開発の外注先探しは「発注ナビ」で

システム開発会社はすでにお決まりですか?

発注ナビは、システム開発に特化した発注先選定支援サービスです。
全国1500社以上の開発会社から、貴社に代わって最適な発注先をお探しします。
ご相談からご紹介まで完全無料(成約手数料なども一切不要です)。
最短1日のスピード紹介で、お急ぎの案件でもお待たせすることがありません。

詳しくはこちらをご覧ください。

 

 

発注先選びにお困りの方はこちら

具体的に『システム開発』が得意な会社を探す

システム開発の発注先を「専門スタッフ」に相談する

関連する記事

PAGETOP