にアジャイルのように開発することが要求される記試験のケースはどうでしょうか。[定休日]
-
10-07-2019 - |
質問
我々のチームでは、タスクシステムがこの小さな増分割れしました。
各タスクが開発した独自の支店及び各支店が試される前に合併し、幹.
私の質問は一度の作業が行われ、誰で定義する テストケース きすることがこのタスク?
理想的だと思い、開発者の作業自身に最適の仕事では、だいた多くの抵抗からは開発者だと思っている廃棄物の時間はいないはそれができていました。
理由のないようで、また頑張ろうという気持っ質保証人がいないというのを創造する。例えばれている、ことなくテストを開発したいと思うかもしれない知の技術の詳細など)の提示が必要です。
もし、下部の開発を行っていテストケースであるとして分離されているものと考えています。(でも無意識のう)
としてのプロジェクトマネージャー、その結にテストを書く場合、各タスクが、私の時間が課税されたい。
う方に。
編集:による試験例Iの意味の説明、個人QAタスクすべき行の支店では統合されるべきであるの幹.(ブラックボックス)
解決
チーム。
欠陥が顧客に届いた場合、それは チームの の欠陥であるため、 チーム は欠陥が顧客に届かないことを保証するためのテストケースの作成。
-
プロジェクトマネージャー(PM)は、チームの誰よりもドメインをよく理解する必要があります。ドメインに関する知識は、ドメインに関して意味のあるテストケースを作成するために不可欠です。入力例を提供し、無効な入力に対する期待についての質問に答える必要があります。少なくとも「ハッピーパス」テストケースを提供する必要があります。
-
開発者はコードを知っています。開発者はタスクに最適かもしれませんが、ブラックボックステストケースを探していることを提案します。開発者が思いつくテストはすべてホワイトボックステストです。これは、開発者にテストケースを作成させる利点です。開発者はコードの継ぎ目がどこにあるかを知っています。
優秀な開発者も、「どういうときに...?」という質問とともにPMに来ます。 –これらはそれぞれテストケースです。答えが複雑な場合" If a then x 、ただし b then y (木曜日を除く)" –複数のテストケースがあります。
-
テスター(QA)は、ソフトウェアのテスト方法を知っています。テスターは、PMと開発者が考えないテストケースを考え出す可能性があります。そのため、テスターがいます。
他のヒント
プロジェクトマネージャーまたはビジネスアナリストがこれらのテストケースを作成する必要があると思います。
その後、QA担当者に引き渡して肉付けしてテストする必要があります。
そのようにして、仕様と実際にテストおよび提供されるものとの間に欠落がないことを確認します。
開発者は、単体テストをテストするので、絶対にしないでください。 だから、時間の無駄です。
さらに、これらのテストでは、仕様の誤解、またはコードの機能やルートが考え抜かれて正しく実装されていないことが原因である可能性があるため、開発者が見つけることのないエラーを検出します。
これに十分な時間がない場合は、優れた製品を提供するための鍵となるため、誰かを雇うか、誰かをこの役割に昇格させます。
開発者とQA担当者を組み合わせて、かなり良い結果を得ることができました。彼らは一般的に「お互いを正直に」保ち、開発者はコードを処理するための単体テストを持っているので、彼/彼女はすでに変更に非常に親密でした。 QA担当者はブラックボックス側からではなく、やって来ました。両方とも完全性について責任を負っていた。進行中のレビュープロセスの一部はユニットテストの欠点を見つけるのに役立ちました。そのため、問題があると判明する可能性があるため、Xテストの作成を意図的に回避している場所を知っているインシデントはあまり多くありませんでした。
場合によってはペアリングのアイデアが好きで、かなりうまくいったと思います。常に機能するとは限りませんが、さまざまな分野のプレイヤーが対話することで、しばしば起こる「壁を越えて投げかける」という考え方を避けることができました。
とにかく、それが何らかの形であなたに役立つことを願っています。
過去の経験から、わずかに異なることをテストするために、さまざまなレベルでテストを定義することができました:
第1層:コード/クラスレベルで、開発者はアトミックユニットテストを作成する必要があります。目的は、個々のクラスとメソッドをできるだけテストすることです。これらのテストは、おそらくソース管理にコードをアーカイブする前に、開発者がコードとして実行し、使用されている場合は継続的統合サーバー(自動)によって実行する必要があります。
第2層:コンポーネント統合レベルで、開発者にユニットテストを作成させますが、コンポーネント間の統合をテストします。目的は、個々のクラスとコンポーネントをテストすることではなく、それらが互いにどのように相互作用するかをテストすることです。これらのテストは、統合エンジニアが手動で実行するか、使用中の場合は継続的統合サーバーによって自動化する必要があります。
第3層:アプリケーションレベルで、QAチームにシステムテストを実行してもらいます。これらのテストケースは、プロダクトマネージャーが提供するビジネス上の前提条件または要件文書に基づいている必要があります。基本的に、ドキュメント化されたint eh要件に従って、エンドユーザーであるかのようにテストし、エンドユーザーが実行できるはずのことを実行します。これらのテストケースは、QAチームと、(おそらく)顧客の要望とアプリケーションの使用方法を(おそらく)知っているプロダクトマネージャーが作成する必要があります。
これはかなり良いレベルのカバレッジを提供すると感じています。もちろん、構築されたアプリケーションをQAチームに送信する前に、上記のティア1および2を実行することが理想的です。 もちろん、これをあなたのビジネスモデルに合うものに適応させることができますが、これは私の最後の仕事でかなりうまくいきました。ビルド/統合プロセス中に単体テストの1つが失敗した場合、継続的統合サーバーは開発チームにメールを送り、誰かがテストを実行するのを忘れて、壊れたコードをソースアーカイブにコミットした場合。
"自分の時間の無駄だと思う開発者、または単にそれをするのが好きではない開発者"その後、それらに報酬を与えます。テストケースを作成するには、どのソーシャルエンジニアリングが必要ですか?
コードとテストケースをQAで調べて、「十分なカバレッジがありません-さらなるケースが必要」と発音することができます。もしそうなら、「十分」を持っているプログラマーはすぐに報道されるのはビッグカフナです。
だから、私の質問は次のとおりです。タスクが完了したら、誰が「十分」の目標を定義する必要がありますか。このタスクのテストケース? 「十分」を知ったら、プログラマに「十分」を記入する責任を負わせることができます。および「十分な」ことを保証する責任があるQAテストが完了しました。
「十分」を定義するのは難しいですか?面白い。おそらくこれがそもそもプログラマとの競合の根本的な原因でしょう。彼らはすでに「十分な」ことをしたので、時間の無駄だと感じるかもしれません。そして今、誰かが「十分ではない」と言っています。
QAの人々は、「顧客」と協力して、各タスクのテストケースを定義する必要があり(ここでは実際に用語を混ぜています)、開発者がそれらを記述する必要があります。最初に!
QAの人にやらせたくないのは、彼らが自分の作品を作成するという考えが嫌いだからです。例えば、彼らは単にテストするには多すぎる仕事を省き、必要な技術的詳細を知らないかもしれません。
そうです、QA部門への信頼を高める必要があります。つまり、「開発者にソフトウェアを開発してもらうのは好きじゃない」と言っていたことを想像してください。私は彼らが自分の作品を作成するというアイデアが好きではありません。"
開発者として、私は自分のテストを書くことにリスクがあることを知っています。それは私がそれをしないと言うことではありません(私は、特にTDDをしている場合はそうします)が、テストカバレッジについては幻想を抱いていません。開発者は、自分のコードが思っているとおりに動作することを示すテストを作成します。実際のビジネスケースに適用されるテストを作成する人はあまり多くありません。
テストはスキルであり、QA部門、または少なくともその部門のリーダーがそのスキルに精通していることを願っています。
を選択なりランダム)-一又は二つのテスターこっていることを確かめたのである.ます。できなければならないときに便利で開発作業タスクのテストケースの課題です。を試験機につながる可能性は、追加試験セットが人を恐れの修正の上司かった。このように感じるかもしれませんが人の良い試験デザイン。
の試験機の技術詳細-皆さんごきチームが読み取りアクセスコードでも、どんな書類が可能です。最試験機んで読み(書き)コードでも簡単試験に有用であっても延長します。を確認し試験デザイナーは有用からの回答の開発も必要であればいい。
品質を確保するためにコードをマージする前に、他の人にテストケースを確認してもらうことをお勧めします。これは、開発者が別の開発者の作業を見下ろしていることを意味する可能性がありますが、2番目の目は、最初は捕捉されなかった何かを捕捉する可能性があります。最初のテストケースは、テスターではなく、開発者、アナリスト、またはマネージャーが実行できます。
期待される結果が定義されていない状況である可能性があるため、QAはテストケースを記述すべきではありません。合っている物。それは私が何度も見たものであり、それがそれほど頻繁に起こらないことを願っています。
テストを大まかに「開発者」に分解します。テストと「顧客」テスト。後者は「受け入れテスト」です。前者は、開発者がコードが正しく実行されていることを確認するために書くテストです。後者は、動作が仕様に一致することを確認するために、開発者以外の誰かが他が作成するテストです。開発者は、テストしているソフトウェアの作成が正しいことを前提としているため、適合性テストを書かないでください 。したがって、彼らの受け入れテストは、おそらく開発者がすでに真実であると知っていたことを断言するでしょう。
受け入れテストは仕様に基づいて行われるべきであり、開発者によって記述された場合、コードによって、したがって望ましい動作ではなく現在の動作によって駆動されます。
アジャイルキヤノンでは、開発者テストと顧客テストの(少なくとも)2つのテスト層が必要です。
開発者テストは、できればテスト駆動開発を使用して、本番コードを作成する同じ人によって作成されます。これらは、十分に分離された設計を考案するのに役立ち、リファクタリング後でも、開発者が考えていることをコードが確実に実行できるようにします。
顧客テストは、顧客または顧客代理人によって指定されます。実際、これらはシステムの仕様であり、実行可能(完全に自動化)であり、ビジネススタッフが 理解できるように記述する必要があります。多くの場合、チームは、QAの人々の助けを借りて、顧客がそれらを書く方法さえ見つけます。これは、機能が開発されている間、またはその前であっても発生するはずです。
理想的には、QAがマージの直前に行う唯一のタスクは、ボタンを押してすべての自動テストを実行し、追加の探索(=スクリプトなし)テストを行うことです。変更を統合しても問題が発生しないことを確認するために、マージ後にこれらのテストを再度実行する必要があります。
試合が始まる最初のカードです。
の目的試験車の欠陥の前のソフトウェア開発プロセスが安価に、より迅速に修正)。
各ストーリーカード受け入れ基準とします。製品のオーナーペアの情報セキュリティーコンアナリストの合否判定基準を定めるために。本基準はされているのかが判断され話カードの目的としています。
のカードの受け入れ基準を自動化ユニット試験が必要なコードの開発者で、それこそが真のグローバル開発の実務経験.また、駆動の自動機能試験を実施してautoamtedテスター(とおそらく開発支援の利用の場合のリーディングプロジェクトす。
てさらに重要なのは、その受入れ基準の自動化性能試験で使用する場合の解析のプロファイリングによってアプリケーションに、開発者向けです。
最後に、ユーザーに受け入れられ試験により決定する基準のカードにビジネスパートナーまたはユーザーこのプロセスできるコーポレートコミュニケーションをゼロにします。
小規模なチームを除き、プロジェクトマネージャーがテストケースを作成することを聞いたことも、見たこともほとんどありません。大規模で複雑なソフトウェアアプリケーションでは、アプリケーションを本当に知っているアナリストが必要です。私は住宅ローン会社でPMとして働いていましたが、サブプライム融資、金利などを理解する必要がありましたか?表面的なレベルかもしれませんが、実際の専門家はそれらが機能することを確認する必要がありました。私の仕事は、チームを健全に保ち、アジャイルな原則を守り、チームの新しい仕事の機会を探すことでした。
システムアナリストは、すべてのテストケースと、ユースケースとの正しい関係を確認する必要があります。 さらに、アナリストはテストケースに基づいた最終的なUATを実行する必要があります。 そのため、アナリストと品質管理者は一種のピアレビューを行っています。
テストケースの作成中に品質がユースケースをレビューし、アナリストがテストケースの作成後およびUATの実行中にテストケースをレビューしています。
もちろんBAは技術的な観点からではなく、ドメインの専門家です。 BAは要件を理解しており、テストケースを要件にマッピングする必要があります。開発者は、コードに対してテストするテストケースを作成する人であってはなりません。 QAは要件ごとに詳細なテストステップを記述できます。ただし、要件を作成する人は、テストする必要があるものを指定する必要があります。実際に誰がテストケースを作成するかは、テストケースが要件にまでさかのぼることができる限り、あまり気にしません。 BAがテストの方向または範囲を導き、QAが詳細なテスト計画を作成することは理にかなっていると思います。
「これがどのように行われたか、またはメンタリティを行うべきか」から進化する必要があります。失敗し続けています。テスト計画/ケース作成の問題を解決する最良の方法は、テストケースをウォーターフォールの要件ドキュメントまたはアジャイルのユーザーストーリーに記述し、それらの要件/ユーザーストーリーを作成することです。このように、何をテストする必要があるかは疑問の余地がなく、QAチームとUATチームはテストケースを実行し、実際のテストと欠陥解決に時間を集中できます。