スクラムで QA がどのように機能するかを理解するのに役立ちます [終了]

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

  •  03-07-2019
  •  | 
  •  

質問

どうやら私たちはスクラム開発手法を使用しているようです。一般的な流れは次のとおりです。

開発者はタスクを達成しようとバタバタと忙しくしています。一般に、タスクが完了するまでにスプリントの大部分がかかります。QA は Dev にテストできるものをリリースするよう懇願し、Dev はスプリントが終了する 1 ~ 2 日前に最終的にバグのあるコードを QA に投げ、残りの時間を QA が見つけたバグの修正に費やします。QA が時間通りにタスクを完了することは決してできず、スプリントが時間通りにリリースできることはほとんどなく、開発と QA はスプリントの終わりに悲惨な数日間を過ごすことになります。

リリース可能な開発タスクがスプリントの大部分を占める場合、スクラムはどのように機能するのでしょうか?

ディスカッションにご参加いただきました皆様、ありがとうございました。これはかなり自由な質問であるため、「答え」は 1 つではないようです。以下に多くの良い提案があります。私の「持ち帰り」のポイントのいくつかを要約し、いくつかの説明を加えてみたいと思います。

(ところで、これを置くのに最適な場所はありますか、それとも「回答」に置くべきでしょうか?)

熟考/行動すべきポイント:

  • 開発者のタスクが可能な限り小さい (粒度が細かい) ことを確認する必要があります。
  • スプリントの長さは、平均的なタスクの長さに基づいて適切に設定する必要があります(例:1 週間のタスクを含むスプリントは少なくとも 4 週間の長さである必要があります)
  • チーム (QA を含む) は、見積もりをより正確にするために取り組む必要があります。
  • それがチームにとって最適である場合は、別の QA スプリントを並行して実行することを検討してください。ただし、それがチームにとって最適である場合は、オフセットしてください。
  • ユニットテスト!
役に立ちましたか?

解決

私の意見では、推定に問題があると思います。各機能をテストする時間がないため、スプリントを計画する際に建物部分のみが考慮されているようです。

それは何よりも一般的であるため、簡単に解決できる問題だとは言いません。しかし、役立つものは次のとおりです。

  • QAを開発チームのメンバーとして検討し、スプリントの計画と見積りにそれらをより密接に含めます。

  • 「リリース可能な開発タスク」は、スプリントの大部分を占めるべきではありません。完全な作業機能が必要です。各種タスクの開発時間とQA時間に関するメトリックを収集し、将来のスプリントを推定するときにそれらのメトリックを使用してみてください。

  • バックログを確認して、非常に粗い機能があるかどうかを確認する必要がある場合があります。簡単に推定およびテストできる小さなタスクに分割してみてください。

要約すると、スプリントの推定と計画を行う際に考慮されていないタスクがあるため、チームは実際の速度が何であるかを見つけていないようです。

しかし、結局のところ、推定の不正確さは、アジャイルベースまたはウォーターフォールベースのプロジェクトで見られる難しいプロジェクト管理の問題です。幸運を祈ります。

他のヒント

ここでのパーティーに少し遅れましたが、あなたが書いたことに基づいた私の見解を以下に示します。

現在、スクラムはプロジェクト管理手法であり、開発手法ではありません。しかし、私の意見では、開発プロセスを整えることが重要です。それなしでは、構築するのではなく、反応する時間の大半を費やします。

私はテストファーストです。開発プロセスでは、最初にテストを作成して、要件と設計決定を実施します。 あなたのチームはそれらをどのように実施していますか?私がここでやろうとしているのは、「フェンスの上に物を投げる」ことができず、失敗以外の何かを期待できないということです。その失敗は、テストチーム(非常にうまくテストしていないために問題をすり抜けることによる)または開発者(問題を解決する製品を構築しないこと)によるものです。私はあなたが最初にテストを書く必要があると言っているのではありません-私は過激派またはテストファーストの伝道者ではありません-しかし、私はあなたが必要があるに適切なプロセスを持っていると言っています反復の終わりに達したときに、品質の高いテスト済みのすぐに使用できるコードを生成します。

死のスパイラル法と呼ぶこの開発方法論では、今いる場所にいます。私はそのようなモデルで長年政府(米国)向けのソフトウェアを構築しました。それはうまく機能せず、多くのお金がかかり、遅れたコード、貧弱なコードを生成し、士気のために何もしません。そもそも作るのを避けたかもしれないバグを修正するためにすべての時間を費やすとき、あなたは前進することができません。私はこの事件に絶対に打ちのめされました。

QAが問題を見つけたくない。本当に彼らを失業させたいのです。私の目標は、すべてが正常に機能するため、QAを驚かせることです。確かに、それが目標です。実際には、彼らは何かを見つけます。私は超人間的ではありません。間違いを犯します。

スケジュールに戻る...

現在の仕事では、スクラムをやっています。ここではラベルには興味がありませんが、時間通りに高品質のコードを作成することに取り組んでいます。全員が乗船しています。 QAに、いつテストする準備ができているかを伝えます。彼らはそれのために2週間早くノックして来た場合、彼らは手に話すことができます。誰もがスケジュールを知っており、誰もがリリースの内容を知っており、誰もが製品がQAに進む前に宣伝どおりに機能しなければならないことを知っています。それはどういう意味ですか? QAに「XYZのテストを気にしないでください-壊れており、リリースCまで修正されない」と伝えます。そして、もし彼らがそれをテストするなら、あなたは彼らにその声明を振り返り、あなたの時間を無駄にしないように彼らに言う。おそらく厳しいですが、時には必要です。私は失礼なことではありませんが、誰もが「ルール」を知っている必要があります。そして、何をテストすべきか、「既知の問題」は何か。

経営陣が乗船する必要があります。そうでない場合は、トラブルが発生します。 QAはショーを実行できず、devグループも完全に実行できません。すべてのグループ(それらのグループがグループごとに1人だけである場合や、複数の帽子をかぶっている男性である場合でも)は、顧客、テストチーム、開発者、管理者など、同じページに存在する必要があります。通常、戦いの半分以上はコミュニケーションです。

おそらく、あなたはスプリント中に達成できる以上のものを噛みしめているでしょう。そうかもしれません。どうしてそんなことをするのか?スケジュールを満たすために?もしそうなら、それは管理者が介入して問題を解決する必要がある場所です。 QAのバグのあるコードを提供している場合は、投げ返すことを期待してください。未完成の8つのものよりも、機能する3つのものを与える方が良い。目標は、一連の半分の処理をまとめて行うのではなく、各反復で完全に実装される機能セットを作成することです。

これが意図されたとおりに受け取られることを願っています-暴言ではなく励ましとして。私が言ったように、私はあなたがいる場所であり、それは楽しいものではありません。しかし、希望はあります。あなたは物事を好転させることができます

スプリント内で特定の機能を「実行」するために QA 機能テストが必要なシナリオには、リソース割り当ての問題があるように思えます。私がこれまでに見つけた QA 関連のスクラム ディスカッションでは誰もこれに言及していないようで、ここでの元の質問はほぼ同じ (少なくとも関連している) ため、部分的な回答を提供し、質問を少し拡張したいと思いました。

フルスプリントに取り組む開発タスクに関する最初の具体的な質問については、QA による機能テストが「完了」の定義の一部である場合、これらのタスクを緩和するという一般的なアドバイスは理にかなっているようです。たとえば 4 週間のスプリントを考えると、複数の開発者による複数の機能をテストするのに約 1 週間かかる場合、開発タスクに約 3 週間かかり、その後にテスト タスクのラグ ウィークが約 1 週間かかるのが答えのように思えます。もちろん、最後に提供された機能セットからは約 1 週間の遅れが生じることが認識されているため、QA はできるだけ早く開始されます。スプリントでこのようなウォーターフォールのようなシナリオが発生しないように、機能をできるだけ早く QA に提供したいと考えていることは理解していますが、現実には、通常、開発が開始してから 1 ~ 3 週間かかるまでは、実際の価値のある機能を QA に提供することはできません。スプリント。確かにあちこちに細かい部分はありますが、作業の大部分は 2 ~ 3 週間の開発で、その後に約 1 週間のテストが残ります。

ここでリソース割り当ての問題と、質問に対する私の拡張です。上記のシナリオでは、QA はスプリントの計画された機能をテストする時間があります (3 週間分の開発タスク。最後の 1 週間は最後に提供された機能のテストに当てます)。また、QA が開発の 1 週間後にいくつかのテスト可能な機能を取得し始めると仮定します。しかし、QA の第 1 週目はどうなるでしょうか。開発の第 4 週目はどうでしょうか?

QA 機能テストがスプリントの機能の「完了」の定義の一部である場合、この非効率性は避けられないようです。QA は第 1 週にはほとんどアイドル状態になり、開発は第 4 週にほぼアイドル状態になります。もちろん、バグ修正や検証、設計/計画など、この時間に自然に埋められるものもいくつかありますが、基本的にリソースを 75% のキャパシティーでスケジュールしています。

現実には、QA は常に開発よりある程度遅れているため、明白な答えは、開発と QA のスプリントを重複させることであるように見えます。機能を表示する前にテストする必要があるため、製品所有者などに対するデモンストレーションは QA スプリントの後に行われます。これにより、無駄な時間が減り、開発と QA の両方をより効率的に使用できるようになります。開発者が開発を続け、テスターがテストすることを継続したいと仮定すると、これ以上に実用的な解決策は見つかりません。おそらく私は何かを見逃しているので、誰かがこれについて私に光を当ててくれることを願っています。そうでなければ、スクラムに対するこの厳格なアプローチには欠陥があるようです。ありがとう。

うまくいけば、各スプリントでより少ない開発タスクに取り組むことでこれを修正します。どちらが質問につながります:誰が設定開発者の目標ですか?開発者が一貫してこれらの目標を達成できないのはなぜですか?

devが独自の目標を設定していない場合、常に遅れる理由です。そして、それはスクラムを実践する理想的な方法ではありません。これは、期限に基づいた大きな成果物を使用した単なる増分開発であり、開発者側には実際の利害関係者の責任はありません。

十分な知識がないためにdevが独自の目標を設定できない場合、前もって関与する必要があります。

スクラムは、アジャイルマニフェストで概説されている4つの基本原則に依存しています。

  1. 相互作用は重要です。つまり、開発者、QA、プロジェクト管理、およびエンドユーザーは、より多くのことを話し合い、互いに話し合う必要があります。ソフトウェアは、コンピューターの不可解な言語で知識をエンコードするプロセスです。知識をエンコードするには、開発者が知識を持っている必要があります。 [なぜ「コード」と呼ぶのですか?]スクラムは「書き込み仕様-トランサムを投げる」ではありません。方法論。 ANTI-" write spec-throw over transom"

  2. ワーキングソフトウェアが重要です。つまり、開発者が噛み砕く各作品は、ワーキングリリースにつながる必要があります。 QAが取り組むべきバグ修正のセットではなく、動作するソフトウェアです。

  3. カスタマーコラボレーション-開発者は、ビジネスアナリスト、エンドユーザー、ビジネスオーナー、彼らが構築しているものを理解するのを助けることができるすべての人と協力する必要があることを意味します。締め切りは、顧客に次に渡されるものほど重要ではありません。顧客がXを必要とする場合、それは誰にとっても最優先事項です。プロジェクト計画でビルドYが示されている場合、それはmalarkeyの負荷です。

  4. 変更への対応-これは、顧客が次のスプリントの優先順位を再配置できることを意味します。彼らは進行中のスプリントを再配置することはできません(それはクレイジーです)が、以下のスプリントはすべて優先順位を変更する候補です。

顧客が運転すると、締め切りは人為的な「プロジェクトのマイルストーン」になります。さらに"最初にXが必要で、次にYが必要です。セクションZのこのことは、もう必要ありません。 Wができたので、Zは冗長です。

スクラムルールでは、すべてのスプリントアイテムは「完全にテストされ、実装可能な機能である可能性がある」必要があります。スプリントの終わりに完了したと見なされます。スプリントは常に時間通りに終了し、チームはクレジットを得られず、スプリントレビューで完了していないもの(QAを含む)を提示することはできません。

技術的には、必要なのはそれだけです。チームは一定量の作業をコミットし、最終的にスプリント終了の2日前にQAに送りますが、QAは間に合いません。そのため、スプリントからの出力はゼロであり、顧客の前に行き、1か月の仕事の間何も見せないことを認めなければなりません。

次のラウンドでは、彼らはより少ない作業を選び、時間通りに完了するためにQAに到達する方法を見つけます。

2.5年間アジャイルプロジェクトに携わったQAとして話すことは、非常に難しい問題であり、まだすべての答えがありません。

「トリプレット」の一部として働いています。 (プログラムとペアのQAをペアにした2人の開発者)と私は、2週間のイテレーションの最初に、ストーリーの作成とミーティングの計画の見積もりに関与しています。前述のadrianhが述べたように、QAが最初のスプリント計画で声を聞くことは不可欠です。これは特にあなたが非常に強い個性を持つ開発者と仕事をしている場合は難しいかもしれませんが、QAは言葉の本当の意味で断定的でなければなりません理解)。テスト主導型のメンタリティを奨励するために、計画中に最初にQAタスクを作成することを推奨します。QAはこれを採用するために文字通り自分自身を出さなければならない場合があります。多くの人がソフトウェア開発が機能していると考えるのと反対ですが、いくつかの理由で配当を支払っています。

  1. QAは聞かれ、尋ねられることに追いやられることはありません。「どうやってそれをテストしますか?」開発者が作品(ウォーターフォールのメンタリティ)を言った後。

  2. QAは、真実/ POが存在している間に受け入れ基準のテスト可能性を同時にチェックするテストのアイデアを提案することができます(計画会議に出席することは不可欠でしたわからない!!)理解のギャップを埋める。

  3. テスト駆動型アプローチの基礎を提供します-テストアプローチが宣言され、タスクが実行された後、開発者は、それらのテストに合格するコードをどのように生成するかを考えることができます。

  4. ステップ1から3が残りの反復で唯一のTDDアクティビティである場合、最初の投稿でSteveが仮定したシナリオよりも何百万倍も優れています。 "開発者は自分のタスクを達成しようとして急いでいます。一般的に、タスクはスプリントのほとんどを完了します。 QAはテストできるものをリリースするように開発者を悩ませ、開発者はスプリントが終了する1〜2日前にバグのあるコードを最終的にQAに投げ出し、残りの時間をQAが発見しているバグの修正に費やします"

言うまでもなく、これにはQAの注意事項がいくつかあります。

  1. 彼らは、開発者と真実/ POがテストの課題に挑戦し、妥協点に達する準備をしなければなりません。 「QA警察」アジャイルチームでは態度は洗われません。

  2. QAタスクは、あまりにも詳細でも一般的でもないように困難なバランスをとる必要があります(タスクをカードに書いて「ラジエーターボード」に移動し、毎日のスタンドアップミーティングで話し合うことができます。反復中に「進行中」から「完了」に移動しました。

  3. QAは、計画/推定会議の準備をする必要があります。目に見えないユーザーストーリーのために、頭に浮かんだテストアプローチを生成するだけでは期待しないでください!多くの場合、開発者はこれを行うことができるようです。 " xコンポーネントをzコンポーネントとのインターフェースに変更する"または「yメソッドのリファクタリング」。 QAとして、計画する前に導入/変更される機能に精通している必要があります。これにより、テストの範囲と適用できるテスト設計手法を把握できます。

  4. テストを自動化し、これらを記述して「失敗」させることはほとんど不可欠です。反復の最初の2、3日以内、または少なくとも開発者がコードの準備が整った時点と一致するため。その後、テストを実行して、期待どおりにパスするかどうかを確認できます(適切なQA TDD)。これは、反復の終わりに小さな滝を避ける方法です。コーディングの開始前または開始時に、開発者にテストを実際にデモして、彼らが何を目指すべきかを知ってもらう必要があります。

  5. 4は「ほぼ必須」だと言います。同じことが時々あるので

QAへのリリース前に、開発チームのように聞こえるのは、自分で十分なテストを行っていない可能性があります。すべてのユニットテストに合格している場合、QAサイクルは比較的スムーズに行われるはずです。彼らはいくつかの統合エラーを見つけますが、それらの多くはないはずですよね?

ここにはいくつかの問題があると思います。まず、開発者のタスクが十分にきめ細かくないか、十分に推定されていないか、あるいはその両方ではないかと思います。スクラムのスプリントの全体的な目的は、スプリントの最後に実行可能なコードを示すことができるようにすることです。私が言及した問題の両方は、バグのあるコードにつながる可能性があります。

開発者がスプリントの終わり頃にバグのあるコードをリリースしている場合は、次のことも確認します。

  • 製品所有者は、実際に開発メンバーにタスクを実行する責任を負わせていますか。それがPOの仕事であり、そうでない場合、開発者は怠けます。
  • 開発者はあらゆる種類のTDDを使用していますか。そうでない場合、それは問題を大いに助けるかもしれません。開発者にコードをテストする習慣を身に付けさせます。私はこの問題を抱えており、チームは重要な分野でTDDを行うことに注力しているので、後で誰かにそれをさせる必要はありません
  • タスク/ユーザーストーリーは一般的すぎますか?タスクの内訳に余裕があると、開発者がだらしないようになります。繰り返しますが、これはPOの問題です。

過去に打たれたと聞いたアイデアの1つは、QAの人をスクラムマスターとして使用することです。彼らは毎日のスタンドアップに出席し、開発者との関係を把握することができます。 POの問題に対処できます(POが適切に業務を遂行できると仮定します)。

QAとスクラムチームの間でより多くの協力が必要だと感じずにはいられません。テストは最後にしか行われないように聞こえますが、これは問題です。 QAをチームの一員とすることで、より早くより良いテストが可能なものを特定するのに役立ちます。

また、製品所有者に問題があるように感じます。全員が正しい方向に向かっていることを確認して、彼らはそこにいなければなりません。 QAと開発者の間だけでなく、開発者自身の間でも良好な協力関係があることを確認する必要があります。

  

"リリース可能な開発時のスクラムの仕組み   タスクはスプリントの大部分を占めますか?"

お気づきのとおり、うまく動作しません:-)あなたが説明しているプロセスは、私にとってスクラムとはあまり似ていません。少なくともスクラムがうまく機能していないようです。

QAのメンバーがチームの一員であるのか、それとも別のグループであるのかについて、あなたが説明したことはわかりません。

彼らが別のグループである場合、これはおそらく問題の大きな部分です。チームは、タスクの完了に対するチームのコミットメントや、製品所有者との関連するスコープネゴシエーションには関与しません。アジャイルグループがチームでQAスキルを持たずに成功するのを見たことはありません。開発者に多くのテスト/ QAスキルを持たせるか、組み込みのQA担当者またはチームに3人を配置します。

チームに参加している 場合は、最初のスプリント計画で声をもっと聞く必要があります。今では、製品の所有者とチームには、あなたがオーバーコミットしていることが明確になっているはずです。

私なら、いくつか試してみます:

  • チームにQA /テスト担当者がまだいない場合は取得します
  • プロダクトオーナー&と長々とチャットします。 「完了」と見なされるものについてのチーム。一部の開発者は、「QAへの引き渡し」というスクラム前の考え方にまだ残っているようです。 ==完了。
  • ストーリーを小さなチャンクに分割-推定ミスを見つけやすくなります
  • 短いスプリントを実行することを検討してください-ほとんどの場合、追跡や学習が簡単になるためです。

これらのスクラムのバーンダウンをスムーズにするためのヒントも役立つでしょう。

この問題を次のように解決しました。 -製品バックログのすべてのアイテムには、適合基準または受け入れ基準が必要です。 それらがなければ、スプリントを開始しません -テスターは当社のチームの一員であり、製品のバックログ項目ごとに、テストタスク(受け入れ基準に基づいて1つ以上)を作成し、見積もりとテストする項目へのリンクを作成します。 -毎日のスクラム中、終了したすべてのタスクは「テストする」列に配置されます -16時間以上かかるタスクは実行しません。推定時間が長いタスクは分割されます

タスクを小さなタスクに分割します。

また、QAは開発者がテストするテストケースを作成できます。

検討すべき1つのアイデアは、QAがメイン開発の1回の反復で機能するようにすることです。それは私たちの環境でうまくいきます。

ここでは、1つのサイズがすべてに適合するわけではありません。チームごとにQAの扱いが異なります。それはあなたが取り組んでいるプロジェクトに大きく依存します。それは小さなプロジェクトでも大きなプロジェクトでもあります。広範な回帰、ユーザーの受け入れ、探索的テストが必要ですか、それともテストするシナリオがほとんどありません。 アジャイルでは、ジェネラリストがスペシャリストよりも優先されることを再度述べておきます。それは何ですか?プロジェクト中にテストするものがない時間があるため、その時点で何か他のことをしている可能性があります。また、ハードコアのプログラマーであっても、テストを行っている可能性があります。

どのように処理しますか? 定期的に2週間のスプリントがあります。テストは1週間後に開発者が完了したタスクで1週間後に開始されます。テスターは引き続き課題トラッカーに課題を追加し、スプリントタスクを完了した開発者はこれらのバグの選択を開始します。スプリントの終わりまでに、ほとんどの場合、スプリントタスクとすべての重大な主要なバグが完了します。

では、スプリントの最初の週にテスター2は何をしますか?

さて、テストすることは常にあります。バックログにはテストタスクがあり、これには探索的テストが含まれる場合があります。多くの人々は探索的テストを評価しませんが、それは高品質の製品を構築するために非常に重要です。優秀なテスターは自分でタスクを作成し、問題が発生する可能性を見つけてテストします。

役立つことを願っています!

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