グレーボックステスト

グレーボックステスト (英: gray-box testing)は、ホワイトボックステストとブラックボックステストを組み合わせたテスト技法のこと。内部構造を把握したうえで、外部からのデータ・仕様に基づきテストをする。アプリケーションの不適切な構造、不適切な使用による欠陥を見つけるのが目的である 。 ブラックボックステスターは、テスト対象のアプリケーションの内部構造を認識していないが、ホワイトボックステスターはアプリケーションの内部構造を見ることができる。グレーボックステスターは、内部構造を部分的に知っている。これには、内部データ構造の文書や使用されるアルゴリズムの情報が含まれる。 グレーボックステスターは、テストケースを定義するために、アプリケーションのハイレベルな説明文書と、詳細文書の両方を必要とする。 グレーボックステストは、ブラックボックステストのストレートな手法を採用し、ホワイトボックステストのコードターゲットシステムと組み合わせるため有益である。 グレーボックステストは、アサーションメソッドを使用してプログラムをテストする前にすべての条件を提示するため、要件テストケースの生成に基づいている。要件仕様言語は、要件を理解し、その正確性を簡単に検証できるようにするために使用される。 オブジェクト指向ソフトウェアは、主にオブジェクトで構成されている。ここで、オブジェクトとは、実行可能コードやデータを持つ単一の分割できないユニットのことである。グレーボックステストを行うアプリケーションに必要なするために必要ないくつかの仮定を以下に示す。 メソッドのアクティブ化 テスト対象クラス（CUT）の状態レポート。 レポートテストは、テスト対象クラスに固有。 アーキテクチャモデル 統一モデリング言語-UML設計モデル 有限ステートマシン-ステートモデル Cem Kanerは、「グレーボックステストは入力と出力をテストするが、テストの設計は、通常はテスターからは見えないコードやプログラム操作の情報に基づいて作成される」と定義している。 グレーボックステストの手法は次の通りである。 マトリックステスト：プロジェクトのステータスレポート。 回帰テスト：新しい変更が加えられた場合にテストケースを再実行する。 パターンテスト：その設計またはアーキテクチャとパターンに適したアプリケーションを検証する。 直交表テスト：すべての可能な組み合わせのサブセットとして使用する。 グレーボックステストはホワイトボックステストとブラックボックステストを組み合わせたものであるため、両方のテストの複合的な利点がある。 非侵入型：機能仕様、アーキテクチャビューに基づいているが、ソースコードやバイナリに基づいていないため、侵襲性も高くなっている。 インテリジェントテストオーサリング：グレーボックステスターは、データ型処理、通信プロトコル、例外処理などのインテリジェントテストシナリオを処理する。 偏見のないテスト：上記のすべての利点と機能にもかかわらず、グレーボックステストはテスターと開発者の間のテストの境界を維持する。 部分的なコードカバレッジ：グレーボックステストでは、アプリケーションの内部または構造への情報に制限があるので、ソースコードまたはバイナリが欠落しており、コードパストラバーサルへのアクセスが制限されている。 欠陥識別：分散アプリケーションでは、欠陥の識別を関連付けることは困難です。それでも、グレーボックステストは、これらのシステムが例外をスローするのがどれほど適切であり、Webサービス環境を備えた分散システムでこれらの例外がどれほど細かく処理されるかを見つけるのに役立つ 。 グレーボックステストは、Webアプリケーションに最適である。 Webアプリケーションは分散ネットワークや分散システムで構成されているが、ソースコードやバイナリはないため、ホワイトボックステストは実施できない。ブラックボックステストも、顧客と開発者の間の契約のために使用されない。重要な情報がWebサービス記述言語（WSDL）で利用できるため、グレーボックステストを使用する方が効率的である。 グレーボックステストは、機能またはビジネスドメインのテストに適しています。機能テストは基本的に、外部システムとのユーザーインタラクションのテストで行われる。グレーボックステストは、その特性から機能テストに最適である。また、ソフトウェアがソフトウェアに定義された要件を満たしていることを確認するのにも役立つ 。 Webサービスの分散性により、グレーボックステストでサービス指向アーキテクチャ（SOA）内の欠陥を検出できます。ご存知のように、ホワイトボックステストは内部構造を直接処理するため、Webサービスには適していません。ホワイトボックステストは、最先端の方法に使用できます。たとえば、大きな配列の自動テストを生成して例外処理状態を支援するメッセージミューテーション、ソースコードやバイナリなしのフロー。このような戦略は、グレーボックステストをホワイトボックステストの結果に近づけるのに役立ちます。 グレーボックスモデル ホワイトボックステスト ブラックボックステスト ^ “Microsoft Research – Emerging Technology, Computer, and Software Research”. 2020年12月21日閲覧。 ^ “Archived copy”. 29 March 2012時点のオリジナルよりアーカイブ。17 October 2011閲覧。 ^ “Gray Box Testing”. Software Testing Fundamentals (4 November 2011). 19 January 2012閲覧。 ^ “Example of grey box testing with definition”. Geekinterview.com. 19 January 2012閲覧。 ^ a b Jake Rogers (August 8, 2016). “Common Questions Regarding Grey-Box Testing”. cgsec.co.uk. August 8, 2016閲覧。 ^ “Object-Oriented Extensions to Pascal”. Pascal-central.com. 19 January 2012閲覧。 ^ Patton, Ron (26 July 2005). Software Testing. Sams. p. 2. ISBN 978-0-672-32798-8. https://archive.org/details/softwaretesting0000patt/page/2  ^ “Archived copy”. 3 April 2012時点のオリジナルよりアーカイブ。17 October 2011閲覧。 ^ Nguyen, Hung Q (2001). Testing Applications on the Web: Test Planning for Internet-Based Systems. John Wiley & Sons. ISBN 9780471437642  ^ “Explore the World of Gray Box Testing”. Extremesoftwaretesting.com. 19 January 2012閲覧。 ^ a b “SOA Testing Tools for Black, White and Gray Box SOA Testing Techniques”. Crosschecknet.com. 1 October 2018時点のオリジナルよりアーカイブ。19 January 2012閲覧。 ^ “E33 Gray Box Testing.PDF”. 2020年12月21日閲覧。 ^ Ramdeo (5 May 2011). “Gray Box Testing - Software”. Testing Geek. 19 January 2012閲覧。 ^ Bach, James. Lessons Learned in Software Testing. Wiley Computer Publishing. https://www.amazon.com/exec/obidos/ASIN/0471081124/softwarqaandtest  ^ Falk, Jack. Testing Computer Software, 2nd Edition. Wiley Computer Publishing. https://www.amazon.com/exec/obidos/ASIN/0471358460/softwarqaandtest  ^ Graybox Software Testing Methodology ^ Li, Z. J.; Tan, H. F.; Liu, H. H.; Zhu, J.; Mitsumori, N. M. (6 April 2010). “Business-process-driven gray-box SOA testing”. IBM Systems Journal 47 (3): 457–472. doi:10.1147/sj.473.0457.