ホワイト ボックス テスト ブラック ボックス テスト

システム開発ステップで最重要部分であるテスト技法について解説します。 「テスト」と一口に言っても、単体テスト、結合テスト、総合テスト、業務検証テスト、受入テスト、運用テスト等、テストには実に様々な種類が存在しています。 テストの目的に応じて使い分ける必要があるのですが、それらを更に大雑把にわけると「 ホワイトボックステスト 」と「 ブラックボックステスト 」という2つに分類することができます。 このページでは、ホワイトボックステストとブラックボックステストとは何か?

ホワイトボックステストとブラックボックステストの違い - 科学 - 2021

ブラックボックステストで焦点となるのは「ソフトウェアの外部仕様」です。 そのため、以下のような不具合は見つけられません。 仕様に表れない内部的・潜在的不具合 ブラックボックステストの場合は、入力値に対する出力値を確認します。 そのため、例えば内部での値の処理が不十分にもかかわらず画面制御やエラー処理によって適切な値に変換されていたら、それに気づくことはできません。このような場合、画面仕様の変更などがあった際に後から不具合として検知されることがあります。また、ソースコードの冗長さもブラックボックステストでは確認できません。 入力値の選択方法によって見逃してしまった内部構造上重要な不具合 ブラックボックステストでは特に内部構造を知らないままテスト条件を削減するため、ソースコードの書き方によっては重要な入力値のテストが見逃されたり、たまたま条件が重なって仕様通りの結果が出てしまったりする可能性もあります。入力値の選択には、前のセクションで述べた技法や経験が必須だと言えます。 「ホワイトボックステスト」との違いは? テスト対象の内部構造を見ずに正常な動作を確認する「ブラックボックステスト」に対し、モジュール単位での機能を確認する「ホワイトボックステスト」があります。ブラックボックステストとの決定的な違いは、 「内部構造が分かった上で正しく機能するかどうかを確かめる」 という点です。 ソフトウェアテストでは、必ずホワイトボックステストとブラックボックステストの両方を行います。ホワイトボックステストとブラックボックステストには一長一短があるため、それぞれの性質を理解した上で適切に使い分けることをおすすめします。 ( 参考:おさらいしよう!「ホワイトボックステスト」の基本) おわりに 今回は、ブラックボックステストの基本からよく使用される技法までご紹介しました。 ブラックボックステストは、実際のソフトウェアやそれが搭載されたシステムで検証をするため、ユーザー視点に立ったテストができます。 しかし、内部構造についての詳細な確認はできないため、ブラックボックステストでは潜在的なバグや不具合を検知しきれない可能性があります。ブラックボックステストと対称的なホワイトボックステストを組み合わせてテストを行い、ソフトウェアのバグや不具合を検出していくことが重要です。

【単体テスト設計】どのようにしてテストコードを書くのか?

ホワイトボックステストで焦点となるのは「プログラムの論理構造」です。 そのため、以下のような不具合は見つけられません。 要求仕様自体の誤りや不備 開発者は詳細設計書や仕様書に従って実装し、テスト担当者は完成したモジュールが設計・仕様通りであることを確認します。そのため、設計書・仕様書自体がユーザーの求める仕様にそぐわない、といった開発の上流工程で起こる不具合は検出できません。 設計自体の漏れ抜け ホワイトボックステストでは、設計したとおりにモジュールが動作するかを確認します。 そのため、例えば、開発段階では想定しなかった入力値に対する考慮漏れがあっても、それをテストすることもないため、この種のバグは検出が困難です。 テスト対象外のモジュールと結合時の動作不整合 モジュール単体では独立して機能していたとしても、システム全体で見たときに予想しない動きをすることがあります。この原因として、他モジュールとの不整合などが挙げられますが、この種のバグもホワイトボックステストでは検出が困難です。 他モジュールとの連携はモジュール間結合テストで検証されるべきもので、単体モジュールのホワイトボックステストでは検証の対象に含まれないためです。 「ブラックボックステスト」との違いは? ソフトウェアのプログラムを理解・意識した上で行う「ホワイトボックステスト」とは対称に、 プログラムの内部構造を見ずにインプットとアウトプットを確認する「ブラックボックステスト」 があります。このテストは、よりシステムのユーザーの目線に立ったテストを行うことができる手法で、ホワイトボックステストのデメリットをうまくカバーする性質があります。 おわりに 今回は、単体テストで多く用いる「ホワイトボックステスト」の基本についてご紹介しました。このテストは、ソフトウェアの「プログラムの論理構造」を理解した上で行うため、モジュール単位の機能を確認することができます。検出されるバグや不具合、修正箇所を特定しやすく、モジュールを調査・変更するだけで効率的に修正をできることが可能です。 一方で、要求仕様自体の誤りや不備など、ソフトウェアの論理構造からは分かりにくいバグや不具合は検出しにくいため、目的に応じて他のテスト手法と組み合わせて使い分けることが大切です。

テスト分類のひとつに ブラックボックステスト と ホワイトボックステスト があります。 ブラックボックステストとは、テスト対象の内部を意識せずに 外部仕様のみからテストケースを構築していく手法 です。ユニットテストであれば、テスト対象となるメソッドの実装(コード)を意識せず、メソッドのAPI仕様からテストケースを作成することになります。 一方、ホワイトボックステストでは、テスト対象の内部を意識し、 どのような構造であるかを踏まえたテストケースを構築 します。ユニットテストであれば、テスト対象となるメソッドの実装(コード)を意識し、分岐や繰り返しなどを考慮しつつテストケースを作成することになります。 さて、ユニットテストはブラックテストでしょうか? それともブラックボックステストでしょうか?

May 15, 2024, 2:30 pm