この記事は何か?
本記事は、グレーボックステストの概念と他のテスト手法との違いを解説したものです。
目次
- グレーボックステストとは
- グレーボックステストの定義
- ブラックボックステスト、ホワイトボックステストとの違い
- グレーボックステストの例
- グレーボックステストのメリット
- グレーボックステストを実施する際の注意点
グレーボックステストとは
グレーボックステストとは、システムの内部構造に関する知識を活用して外部仕様を検証するテスト手法です。
内部構造に関する知識として、データベース構造、APIの内部実装、システムアーキテクチャなどを活用します。
グレーボックステストの定義
グレーボックステストは実務で頻繁に使われるアプローチですが、明示的に「グレーボックステスト」という用語で呼ばれることは少なく、多くの現場ではブラックボックステストの一部として扱われています。
ホワイトボックステストとブラックボックステストの中間的な位置づけから「グレーボックステスト」という名称が使われていますが、ISTQBやJSTQBでは厳密に定義されておらず、人によって解釈が異なります。
ブラックボックステスト、ホワイトボックステストとの違い
| 項目 | ブラックボックステスト | グレーボックステスト | ホワイトボックステスト |
|---|---|---|---|
| 主要な情報 | 仕様書 | 仕様書+内部設計情報 | ソースコード |
| 主な実施者 | QAエンジニア | QAエンジニア(開発者と連携) | QAエンジニア、開発者 |
| 主なテスト観点 | 機能要件の検証 | 機能要件+内部状態の検証 | プログラムの制御フローやパスの検証 |
グレーボックステストの例
1. APIテスト
REST APIに対してOpenAPI仕様や内部構造の知識を活用してテストを実施します。
例:
- APIレスポンスの検証: API内部のバリデーション処理を把握したうえで、特定のパラメータに対するレスポンスのステータスコードを検証
2. データベースのテスト
画面操作後にデータベースを直接照会し、画面に表示されないデータの整合性を検証します。
例:
- タイムスタンプの確認: 画面上でデータを新規作成または更新した後、created_atやupdated_atが正しく更新されることを検証
グレーボックステストのメリット
グレーボックステストは、開発者から得た内部構造の知識を活用してテストを設計できるため、以下のメリットがあります。
- より適切な境界値やエッジケースをテストできます。これにより、仕様書だけでは見落としがちなテストパターンを網羅できます。
- テスト対象でリスクの高い箇所に焦点を当てたテストを実施できます。
グレーボックステストを実施する際の注意点
ユーザー視点を見失わないこと
内部構造の知識があると実装の詳細に引きずられてユーザー視点を見失う可能性があります。グレーボックステストは外部仕様に基づいてテストを実施するという意識が重要です。
テストを属人化しないこと
内部構造の知識を活用するテストは属人化しやすいため、テストに使用する知識やツール、クエリを文書化しておくことが望ましいです。