QA テストは厳密にブラックボックスの観点から行うべきでしょうか?

StackOverflow https://stackoverflow.com/questions/164170

  •  03-07-2019
  •  | 
  •  

質問

単体テストが開発によって処理されると仮定すると、QA が製品がどのように動作するかの詳細を知る理由はありますか?つまり、バックグラウンドで何が起こっているかを知る必要があるのでしょうか、また、通常の UI を使用せずに製品のセグメントをテストする必要があるのでしょうか?たとえば、テスターがデータベースにアクセスして手動で値を変更し、何が起こるかを確認するのは意味があるでしょうか?

編集:
API が接続されたものではなく、開発者以外が使用するアプリケーションを扱っていると仮定しましょう。

役に立ちましたか?

解決

これは、作成するソフトウェアのアプローチと種類によって異なります。 QAにはさまざまな種類があります。ソフトウェアがフォールトトレラントである場合、QAはフォールトをシミュレートする必要があります。また、製品がどのように機能するかを知ることは、QAが潜在的に問題のあるケースを考え、より徹底的にテストするのに役立ちます。

一方、製品の仕組みを知っていると、QAがユーザーの観点から完全にテストできなくなる可能性があります。そのため、最初に基本的なテストを内部を知らずに設計し、次に潜在的な問題に基づいてより詳細なテストを設計する必要があります。

他のヒント

確かに、それはアーキテクチャに依存します。私は、db層が別の建物の完全に別のチームによって開発、管理、およびテストされるプロジェクトに取り組みました。彼らのQAは、手順、クエリなどがすべて一連のテスト条件で実行されたかどうかを確認するために、データに間違いなくぶらつきました。

UIの端にいる場合、2つのレベルがあります。1つは、QAがアプリケーションの実用的な知識を必要としない単純な機能テスト(およびおそらくすべてを自動化する必要がある)です。アプリが本来行うべきことを行うかどうか。第2の種類では、QAチームがその仕組みを知っていると本当に役立ちます。愚かなバグを最初から拒否する時間を大幅に節約できますが、さらに重要なことは、ユーザーのように振る舞い、より複雑なオーバーレイシナリオを試すエンドツーエンドのユースケースが必要になることです。このようなテストを設計するには、アプリケーションについて十分な知識が必要です。

テスターがソフトウェアの実装についてできる限り詳しく知ることは絶対に理にかなっています。これにより、テストの改善に役立ちます。

ブラックボックステストは便利で必要な手法ですが、内部で何が起こっているかを少し知っておけば、本当に興味深いテストケースを簡単に定義できます。

ホワイトボックステストのすべてのニーズを開発者の単体テストに依存することの問題は、開発者は概して、特に彼らが書いたコードに関してはあまり徹底的なテスターではないことです。

私が携わったプロジェクトでは、QAはユーザーの観点からテストされ、それらのテストは要件を満たすという観点から行われました。彼らのテストはブラックボックステストでした。ホワイトボックステストは開発者によって行われました。 QA担当者がDBクエリツールを開いて、手動で値を変更することを期待していませんでした。これは、開発者の単体テストの責任でした。

QAチームが特定のプロジェクトで果たす役割に依存すると思います。データベースに存在する特定の値から生じる状況はテストケースで表されるべきであり、そのように表すことができる場合、開発者はそれらの状況の単体テストを書く(書かれるべきである)べきだと主張できると思います。

コードの検査を使用して欠陥を特定および修正した場合、QAを背後で何かにさらす必要はないかもしれません。ユーザーエクスペリエンス以外のコードをテストすると役立つプロジェクトがあると思いますが、ホワイトボックスまたはクリアボックステストではなく、ブラックボックステストにQAチームを使用することになるでしょう。

ハイブリッドアプローチはうまく機能すると思います。ホワイトボックス テスト (単体テスト) とブラックボックス テストを組み合わせて使用​​すると、より良い範囲をカバーできるようになります。それぞれに長所と短所がありますが、もう一方の弱点を部分的にカバーします。

コードの内部動作を理解すると、特定の方法でテストすることになりますが、それが特定の問題を発見するのに必ずしも最適な方法であるとは限りません。

QA担当者がアプリケーションがどのように機能するかについての詳細な内部知識を持たない理由はすべてあると思います。 QAスタッフは、対象読者とほぼ同じレベルのコンピューター能力を持っている必要があります。

この理由は簡単です。QA担当者がアプリケーションの構築方法を熟知すればするほど、通常のユーザーが遭遇する通常のユーザビリティの問題を回避できる可能性が高くなります。

QAは、アプリケーションが機能するかどうかをテストするだけではありません。また、平均的なユーザーが理解できるため、実際に使用できるかどうかをテストする必要があります。

更新
これは長すぎてコメントボックスに収まりませんでした。

@testerabの質問について。

QAは、1。ビジネス要件が満たされていることを確認する責任がある個人またはグループとして定義します。そして、2.これらの要件に関するアプリケーションの機能にはエラーがありません。したがって、「品質保証」というモニカです。 QAに属する3番目の項目は、使いやすさです。

ビジネス要件を理解している必要があります。つまり、ビジネスアナリストやエンドユーザー(存在する場合)と協力して作業する必要があります。私が一緒に働いた最高のQAメンバーは、それらの分野から採用されました。私が見た中で最悪のQAメンバーは開発者であったか、そのように訓練されていました。テクニカルサポートから引っ越した人も、エンドユーザーが試行するごみの種類を正確に把握しているため、優れたQAメンバーを作成する傾向があります。

アプリケーションには多くの異なるクラスがあります。最も一般的なものは、栄光あるデータ入力です。情報を入力してボタンを押す画面がいくつかあります。その後、情報は保存され、必要な場所にルーティングされます。 MS WordからCRMまで、すべてがこのカテゴリに分類されます。

したがって、QA担当者の仕事は、最初にアプリが目的の入力を受け入れ、目的の機能を実行することを確認することです。 2番目の手順は、不適切な入力を送信し、アプリが望ましい方法で応答することを確認することです。例えば爆破したり、悪い情報を通過させたりすることはありません。これらの場合、自動テストツールは非常に効果的です。最後の部分は、その機能を3つのメニューレベルの深さまで埋めるか、それとも簡単にアクセスできるものかを決定することです。

上記のいずれでもない場合、QA担当者はコードを読んだり、ビットをいじったりする必要があります。

一部のシステムにはUIコンポーネントがありません。これらの場合、QAチームがデータを送信して結果を確認できるテストハーネスを提供するのは開発者の責任です。これには、Webサービスと、想像できるあらゆるタイプのEDIが含まれます。

他のシステムはそれ自体がAPIです。これらは、そのようなAPIコールを実装するために十分な知識を持つQA担当者、または開発者がそれらを簡単にコールして結果を記録する方法を提供するために必要です。この場合、QAチームは独自のプログラミングを行うことができますが、基本的なコードにはアクセスできません。

実際のコードをレビューする際の問題は、見ているものだけに集中する傾向があることです。これは悪いです。代わりに、「ABC」をやみくもに入力できるように、これらの人為的な制限から精神的に解放されるべきです。数値入力が必要なテキストボックスに入力します。


「見る」限りテスト対象を知るためのコード。これはまったく別の問題であり、コードレビューの設定で訓練された開発者がよりよく解決するものです。ここでの目的は、起こりうるエラー、ベストプラクティス、セキュリティ障害などを特定することです。QAの人は、誰かがアクティブな開発者である必要があるため、このレベルの分析はほとんどできません。


SDETについて:開発者が他の物を構築するために使用するAPIまたは基盤を製品が持っている、または持っている場合、imp

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top