ブラックボックスまたはホワイトボックスのテスト-最初にどちらを行いますか?


14

ブラックボックスとホワイトボックスのテストが同じ人によって行われる非常に小さなチームで、テスターは最初にどちらを行うべきですか?


1
これはコンテキストに依存すると思います。仕様の実装をほぼ完了し、最終テストを開始したいのですか、それとも開発サイクル中いつでも一般的なことを話しているのですか?回答の中で言及されているように、これらのコーダーは内部の仕組みを理解し、コミットする前に実装の機能をアサートしたいので、実装者は通常、単体テストを記述します。
クリス

回答:


11

最も正確でなければなりません。

真剣に、ホワイトボックステスト(つまり、コードの内部をテストする)は、コードを書いた開発者による単体テストで行うのが理想的です。ユニットテストは時間の経過とともにビルドされ、ビルドプロセスの一部となるため、正しく動作しないことがわかっているコードで貧弱なテスターの時間を無駄にすることはありません。ユニットテストは、チームが小さいほど重要になります。特に、問題を解決するためのテスターの軍隊がないためです。

通常、ブラックボックステスト(つまり、ユーザー/システムインターフェイスを介したテスト)は、ほとんどのテスターが行うことです。

すべてのテストでは、完成品にとって機能がどれほど重要であるかを優先する必要があります。Xを実行するツールを提供することがミッションであり、製品がXを実行しない場合、それは大きな問題です。


1
さて、これまで読んだベストアンサー。
クリス

5

ブラック

機能を検証するためのブラックボックステスト。破損した場合は、必要に応じてホワイトボックステストを実施します。すべてのブラックボックステストに合格し、カバレッジが良好であれば、ホワイトボックステストは不要です。


2
もちろん、ブラックボックステストが機能または構成の重要な部分のテストを見逃していない限り:}
アラン

3
@アラン:同じ議論がホワイトボックステストに適用されるため、「カバレッジは良い」という警告
スティーブンA.ロウ

1
同意-私の声明は、あなたの良い報道の定義に依存すると思います。
アラン

1
@DocBrownあなたが説明したことが、ホワイトボックスのテストのようなリモートのものであるかどうかは絶対にわかりません。ホワイトボックステストとは、特定の実装のブランチパスを追跡し、すべてのパスを実行するテストケースを作成することです。まだ実装していない場合、定義ごとにホワイトボックステストを行うことはできません。TDDとBDDを使用すると、与えられたときに一般的な形状のテストを作成できます。入力データまたは前提条件状態をセットアップし、ユニットを起動し、出力データをチェックするか、状態またはサードパーティの呼び出しを終了します。これがブラックボックステストの定義です。
サミ

1
@SamJudge:私の理解では、実装コードの内部を見て、その情報を使用して非常に特定のテストデータ(パブリックインターフェイスを介して渡される)を設計すると、このホワイトボックステストを呼び出すことが正当化されます。そのようなテストは、結果が予想と異なる場合にも失敗します。後でテストだけを見ると、もちろん「このテストはホワイトボックス(またはブラックボックス)アプローチによって作成された」と明確に言えないかもしれません。
ドックブラウン

3

ブラックボックス。

通常、ホワイトボックスコンポーネントはブラックボックスコンポーネントに依存しているため、まずブラックボックスをテストしてから、ホワイトボックスに移動します。


2
私は、あなたが「ブラックボックスコンポーネント」と「ホワイトボックスコンポーネント」によって何を意味するかわからない-私にはちょうど「コンポーネント」(つまり、または基礎となるコードまたはアーキテクチャの知識がなくてもテストすることができるthey'r。
アラン・

ここで提案している「依存」関係がわかりません。白と黒のボックスはコンポーネントではありません。アランが言及しているように、コンポーネントをテストするスタイルです。違いは、問題のコンポーネントをテストするために取られるアプローチにあります。
クリス

2

まず、コーダー/開発者としてホワイトテストを行い、問題なく動作することを確認します。次に、通常はプログラムの内部構造を考慮することなく、エンドユーザーであるかのように考えてブラックボックステストを行います。他の人が書いた内部モジュールをテストしている可能性があり、コードにアクセスできないため、ブラックテストを行っている場合でも、コーダー/開発者のように考える必要がある場合があります。


2

良いテストサイクルが必要な場合は、両方を実行する別の人が必要です。

  • ホワイトボックステストに主に焦点を当てた開発者は、最近のコードの変更点、より複雑な(したがって壊れる可能性のある)領域などを知っており、新しい欠陥を引き起こす可能性が最も高いこれらの領域に適切に努力を集中できます。

  • 一方、ブラックボックステストに重点を置いたQAテスターは、エンドユーザーのようなテストにより簡単にアプローチできます。コードの内部知識がなくても、新しいアプローチをとることができ、ソリューションのさまざまな部分がどのように実装されているかという知識に偏ることはありません。開発者が見落としていたバグや、アプリケーションの他の領域を誤って壊してしまったコード変更からの退行をキャッチします。

質問に答えるには、まずホワイトボックステストを実行する必要があります。ただし、効果的にするためには、ブラックボックステストを別の人に依頼する必要があります。


1

私は、ブラックボックステストから始めて、コードカバレッジ情報またはデバッガーを使用して、自分が何をしているかを把握し、何が起こっているのかを分析するのが好きです。

しかし、本当の答えはそれが依存するということです。APIテストを行う場合は、コードをより早く(最初にでも)掘り下げますが、目標が大規模なエンドツーエンドのシナリオを確認することである場合は、ずっと後になります。


1

私が言うブラックボックスがとにかく存在テストは、コード(またはボックス)の前に書かれている、という理由だけTDDの提唱者として、最初のテスト:)

ホワイトボックステスト(私が理解している限り)は、デバッグの考え方においてより有用です。


-1、TDD ホワイトボックステストです。TDDでは、次のテストを記述するために、テストに関係するコードが何をする(および何をしない)かを知ることが不可欠です。ブラックボックステストとは、コードについてまったく知らない人(テスター、コードの作成方法さえ知らなくてもよい人)がテストを設計することを意味します。
Doc Brown

1
その後、TDDを同じ方法で練習しません。私にとってのTDDは、クラス/関数の仕様を強制することです:テストは、クラス/関数が指定どおりに動作することを確認するために書かれていますが、それらの仕様が守られている限り、舞台裏でコードがどのように動作するかはあまり気にしません...これは、テストが機能の前に記述されている場合に必要です。
マチューM.

1

コードが存在する前にテストを作成しているため、ブラックボックステスト。テスターは、小さなチームで効率的に作業するために、コードを記述する開発者と並行して、時間のかかる自動テストを開発する必要があります。

コードが既に作成されている場合、ブラックボックスの観点からテストカバレッジをスケッチして、実際のコードで脳を混乱させる前にブレインストーミングを行う時間を確保することをお勧めします。ただし、ホワイトボックスに切り替えてコードを見てから実際のテストをやりすぎて、危険な領域を感じ取り、先にブレインストーミングしたテストに優先順位を付けることができます複雑または疑わしいと思われるコードの部分を見てください)。


0

どちらでもない。Right BICEPを使用して、正しい順序に関係なく、正しい境界条件を念頭に置いて、適切なテストを記述しようとしています。これらはどちらも実用的な単体テストで提案されている頭字語です。

私の目標は、最初にどの色を書くかではなく、良いテストを書くことに集中することです。


「白」と「黒」は単体テストの用語ではないため、もちろん心配する必要はありません。ユニットテストは事実上のホワイトボックスです。
エセルエヴァンス

@Ethel Evans:定義上、ホワイトボックステストではありません。単体テストの大部分はホワイトボックステストですが、必須ではありません。入力のドメインを関数の出力の範囲にマッピングするテストはユニットテストですが、実装の詳細を知る必要はありません。
スティーブンエバーズ

0

最初にホワイトボックステストを行います

ブラックボックステストの2番目に進みます。

>ブラックボックステスト

I.テスターは、テキストボックス、ラジオボタン、リストボックス、コマンドボタンなど、アプリケーションの機能をチェックする必要があります。

II。テスターは、ロゴ、画像、スペルなど、アプリケーションの非機能性をチェックする必要があります。

III。テスターは、アプリケーションのフロー全体をチェックする必要があります。

注:ポジティブおよびネガティブ条件を確認するには。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.