web-dev-qa-db-ja.com

TDDとBDDがある場合、なぜQAが必要なのですか?

[〜#〜] tdd [〜#〜][〜#〜] bdd [〜#〜]がある場合、なぜ[〜 #〜] qa [〜#〜] for?バグや失敗したテストを書くのは開発者の仕事ではありませんか?これが当てはまる場合、QAはどのように適合しますか?ありがとう。

7
Labanino

開発者は抽象化が非常に得意です。あなたが私たちに半分の問題を与えれば、私たちは全体の解決策を思いつくでしょう。実際、私たちはこれがとても得意であり、問​​題の半分しか持っていないことに気づくことすらありません。私たちは「解決空間」の人々です。私たちの仕事は問題を解決することです。

一方、テスターは「問題空間」の人々です。彼らは、「Xについてはどうですか?それともYですか?Zについて考えましたか?」と尋ねる人です。彼らは私たちがそれを書く前に私たちのコードを壊す方法を知っています。私たちが本当に彼らに親切であるならば、彼らは私たちに教えてくれます。彼らの仕事は問題を逆に理解することです。

アナリストまたはSMEは、どの問題が解決するのが最も重要であるかを理解するのに優れているかもしれませんが、いったん決定を下すと、テスターは彼らの性質を理解するのと同じくらい優秀です私たちの「ソリューションスペース」の頭が原因で、開発者はこれが得意ではない傾向があり、私たちは自分が知らないことに目をつぶっています。

BDDまたはTDDを実行している環境では、テスターはあなたとビジネスを支援するために非常に貴重です。見逃したテストやシナリオを見つけます。また、探索的テストを実行するのにも優れているため、自動テストでは不可能なことがわかります(たとえば、私のお気に入りのテスターの1人が、SQL呼び出しを間違った場所に配置し、特定の動作が行われていることに気付きました1)を実行するだけでよいDBへの10回の呼び出し。

品質を保証することは確かに、グルンが言ったように、たった1人と少しのプロセスよりも多いので、最近では「QA」ではなく「テスター」と呼ぶ傾向があります。

19
Lunivore

TDDは、開発者が使用するdesignツールであり、テストや検証よりも設計に重点を置いています。

BDDは、開発者、QA、製品所有者、またはビジネスアナリストの間のギャップを埋めるコミュニケーションツールです。 BDDは、抽象的な仕様に依存するのではなく、具体的な例を使用して構築する必要があるものについて同じビジョンを共有することを保証します。

QAは、機能、セキュリティ、パフォーマンス、コンプライアンスなどについての検証テストの責任があるロールです... QAは、テスト自動化ツールの提供も担当できます。

ご覧のとおり、これらは3つの直交するものです(もちろん3次元空間において)。

7
foobarcode

あなたがすることは確かに議論の余地がありますnot「QA」が必要ですが、それは「QA」の意味によって異なります。別のQAチームまたは部門が必要ですか?おそらく違います。訓練を受けたQA専門家が必要ですか?おそらくそうです。

テストはスキルであり、通常、ほとんどの開発者が持っているスキルではありません。すべてのチームは、訓練を受けたプロのテスターが必要です。彼らの仕事は、開発者と協力して開発中に適切なテストを記述し、エンドツーエンドの探索的テストなどの独自のテストを実行することによって、ソフトウェアが十分にテストされていることを確認することです。

類推として、建物の検査官について考えてください。たとえば、大工が彼らが作った屋根が漏れていないことを確認した場合、なぜ建物検査員がいるのですか?あなたは大工の言葉を取るだけですか?彼らはよくある間違いとそれらを見つける方法を知っているので、あなたはまだ建物の検査官が必要です。

したがって、TDD、ATDD、BDD、またはそのバリアントの1つを誠実に実行する開発チームがある場合でも、十分にテストされたソフトウェアを保証するために、訓練を受けたテスターが必要です。

2
Bryan Oakley

自動化されたテストスクリプトは、ロジックとアプリケーションの周りをクリックして、すべてがうまく接続されていることを確認するのに役立ちます。

それが説明しないものは:

作成されたすべての機能について自動スクリプトがチェックされましたか?それはロジックを適切にチェックしますか?

最後に、デザインのレイアウトはここではチェックされません。詳細について鋭い目を持つテスターは、さまざまな画面サイズ、プラットフォーム、デバイス間のUIエクスペリエンスで多くの小さなことを把握するのに非常に役立ちます。また、ソフトウェアのチェックに目が行くほど、ロジックフローが改善され、混乱が少なくなり、UIエクスペリエンスが向上します。

1
user2174484

あなたは「これが本当ならQAはどのように適合するのですか?」と書いた。これは、QAの責任者について話していることを意味します。回答の終わりにそれについては後で説明します。

品質保証品質管理は2つの非常に異なる概念です。私たちが開発者としてQAについて話すとき、私たちはほとんどの場合、テストを作成するか、テストを実行するか、またはその両方を行っている人々を指します。私にとって、品質保証は、品質に関連する活動の体系的な計画と文書化です。ほとんどの場合、全体的な品質システムで文書化されています。これは、私たちが気にかけるある種の「保証」を提供するために行われます(プレーンな英語)。簡単に言うと、品質管理は、計画を遵守していることの検証に関連する活動です。

したがって、この質問をするときは、TDD、BDD(またはその他のプラクティス、方法論、手法など)を適切なカテゴリに分類する必要があります。また、QAの実際の意味を理解する必要があります。

鈍い;誰かがTDDを行っているからといって、品質があるとは限りません。また、TDDが得意な方でも十分対応できるとは限りません。また、品質システムには、どれだけのテストで十分かという基準が含まれ、多くの場合、「テストする必要があるものをテストする」のと同じくらい簡単にすることができます。しかし、実際の品質システムでは、その定義はもちろんそれだけでは成り立ちません。人間的に可能な限り公平な立場からこれを判断できる必要があります。

QA/QCにはドキュメントの要件やテストなどが必要であるという誤解があることが多いと思います。qualityはプロセス自体では作成されません。開発には品質が存在する必要があり、プロセスの役割は、あなたが品質を持っていることを証明する十分な証拠を収集することです。つまり、「計画を立てる」という観点からのQAは、実際には品質管理よりも重要です。そして、TDDとBDDは、私たちの仕事の質の高い出力を保証するために私たちが実践する活動と実践としての役割を果たす場所です。

あなたがそれを書いているときのQAは、あなたが考えている特定の人物のように、おそらく私たちが通常QAE(エンジニアリング)とラベル付けしているものを意味します。それは基本的に、検証のための資料を作成し、コーディングの結果を検証するための技術とビジネスです。そしてそれは本当に芸術です。検証と検証のアクティビティは通常、基本的なBDD/TDDをはるかに超えているため、QAEを行う人/部門は通常、システムを個別にテストするだけではありません。しかし、純粋な「コーダーの観点」から、私はこれを責任と見なす傾向があります。そして、その責任が1つまたは複数の役割に関連付けられているかどうかは、組織の構造、規模、ビジネスなどに大きく依存します。

どのように、何をするかに関係なく、常に必要であり、常にQAを受けていると強く主張します。あなたはいつもQCを持っています。あなたはいつもQAEを持っています。小さなチームでは、これは明示的なリソース、役割、または組織ではない可能性があるというだけです。

では、これらすべてにおけるTDDの役割は何でしょうか?まあ、私にとっては、それはまったく役割を持たないか、すべてを意味する可能性があります。 TDDは、テストを作成するのではなく、コードを作成するためのアプローチです。 「シカゴはロンドンスタイル、さらにはピテオスタイルよりもロンドンスタイルが優れている」などと人々は主張しているようです。 my styleであるため、Piteåスタイルは常に勝つと主張します。そして、Piteåスタイルとは、何か極端なTDDスタイルを書いた後、ほとんどの場合、機能、統合、ユニット、ブラックボックス、ホワイトボックスなどすべてに終わることを意味します。私が確かに言えることは、TDDPiteåスタイルから、私はalways非常に単純で、端的に言えば、よりカバーされ、より良いビルド.. codeになるということです。 Piteåスタイルでは、品質が要求する場合はコードをまったく生成しないことも完全に問題ありませんが義務付けられています。ときどきピテオスタイルではビールが1つかいくつか必要になりますが、これは別の種類の品質保証です。 PiteåQuality Systemでは、TDDは、私が生産するものは十分な品質であり、後でそれを維持できるという私の保証を構築するための基盤です。そして、私のCIサーバーは疲れを知らず、私が滑らないように継続的に制御しています。

しかし、最終的には、実際の品質に関して言えば、私のコードのユーザーだけが目撃することができます。私は自分の能力を最大限に発揮して品質を保証します。最初に、常に、次にTDD。

[ピテオは私の故郷です]

1
gurun