64

どうやら私たちはスクラム開発方法論を使用しています。一般的には次のようになります。

開発者は、自分のタスクを達成しようと奮闘します。通常、タスクはスプリントのほとんどを完了します。QAはDevにテスト可能なものをリリースするようにせがみ、Devは最終的にスプリントが終了する1〜2日前にバグのあるコードをQAにスローし、残りの時間をQAが見つけたバグの修正に費やします。QAはタスクを時間どおりに完了することはできず、スプリントが時間どおりにリリースされることはめったにありません。また、DevとQAは、スプリントの最後に悲惨な数日を過ごします。

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

議論に参加してくださった皆さん、ありがとうございました。これはかなり自由形式の質問であるため、1つの「答え」があるようには見えません。以下に多くの良い提案があります。私の「持ち帰り」のポイントのいくつかを要約し、いくつかの説明をしようと思います。

(ところで-これはこれを置くのに最適な場所ですか、それとも「答え」に入れるべきでしたか?)

熟考/行動するためのポイント:

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

13 に答える 13

40

私の意見では、あなたには見積もりの​​問題があります。各機能をテストする時間が不足しているようで、スプリントを計画する際には建物の部分のみが考慮されています。

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

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

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

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

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

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

于 2008-09-30T21:59:37.717 に答える
35

ここでのパーティーには少し遅れましたが、あなたが書いたことに基づいた私の見解です.

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

私はテストファーストの男です。私の開発プロセスでは、最初にテストを作成して、要件と設計上の決定を実施します。あなたのチームはそれらをどのように実施していますか? 私がここで言いたいのは、単純に「フェンス越しに物を投げる」ことはできず、失敗以外は何も期待できないということです。その失敗は、テスト チーム (十分にテストを行わず、問題を見逃してしまう) によるものか、開発者 (問題を解決する製品を構築しないことによる) によるものです。最初にテストを書かなければならないと言っているのではありません。反復の終わりに到達します。

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

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

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

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

あなたの経営陣は参加しなければなりません。そうでない場合は、問題が発生します。QA はショーを実行できず、開発グループもショーを完全に実行できません。すべてのグループ (グループが 1 つのグループに 1 人だけである場合や複数の帽子をかぶっている人物であっても) は同じページにある必要があります: 顧客、テスト チーム、開発者、管理者、および他のすべての人。通常、戦いの半分以上はコミュニケーションです。

おそらく、あなたはスプリント中に達成できる以上のものを噛み砕いています. そうかもしれません。どうしてそんなことをするのか?スケジュールを合わせるには?もしそうなら、それは経営陣が介入して問題を解決する必要があるところです. QAにバグのあるコードを提供している場合は、彼らがそれを投げ返すことを期待してください. 未完成の 8 つのものよりも、機能する 3 つのものを与える方がよいでしょう。目標は、イテレーションごとに完全に実装される一連の機能を作成することであり、中途半端なものをまとめることではありません。

これが意図されたとおりに受け取られることを願っています-暴言ではなく励ましとして。私が言ったように、私はあなたがいる場所にいましたが、楽しくありません。しかし、希望はあります。スプリントで物事を好転させることができます。おそらく、次のスプリントでは新しい機能を追加せず、単に壊れているものを修正するだけです。それはチームで決めなければなりません。

テスト コードを書くためのもう 1 つの小さなプラグイン: 「最初にテストを書く」アプローチを採用して以来、私は自分の製品に対してはるかにリラックスし、自信を持っていることに気付きました。すべてのテストに合格すると、テストなしでは絶対に持てないレベルの自信が持てます。

頑張ってください!

于 2008-09-30T23:05:14.157 に答える
15

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

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

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

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

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

于 2008-11-07T18:23:40.573 に答える
12

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

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

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

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

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

  2. 動作するソフトウェアが重要です。つまり、開発者が噛み付いた各部分は、動作するリリースにつながる必要があります。QAが取り組むバグ修正のセットではなく、動作するソフトウェアです。

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

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

顧客が運転する場合、期限は人為的な「プロジェクトのマイルストーン」ではなくなり、「最初にX、次にYが必要になります。これは、セクションZで必要になります。これで、W、Zは冗長です。」

于 2008-09-30T21:56:22.777 に答える
9

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

技術的には、これで十分です。チームは一定量の作業にコミットし、最終的にスプリント終了の 2 日前に QA に到達しましたが、QA は間に合いませんでした。そのため、スプリントからのアウトプットはゼロです。彼らは顧客の前に出て、1 か月の作業で何も提示できないことを認めなければなりません。

次回は、彼らがより少ない仕事を選び、それを QA に持ち込んで時間通りに終わらせる方法を考え出すことに賭けるでしょう。

于 2008-11-13T04:12:25.220 に答える
7

アジャイル プロジェクトに 2 年半取り組んできた QA として言えば、これは非常に難しい問題であり、私はまだすべての答えを持っているわけではありません。

私は「トリプレット」 (プログラムをペアにする 2 人の開発者 + 1 つの QA) の一員として働いており、2 週間のイテレーションの最初に、ストーリーの作成と会議の計画の見積もりに関与しています。Adrianh が前述したように、QA が最初のスプリント計画で彼らの意見を聞くことが不可欠です。これは特に、非常に強い個性を持つ開発者と一緒に仕事をしている場合は難しいかもしれませんが、QA は言葉の真の意味で断定的でなければなりません (つまり、攻撃的または強引ではありませんが、自分自身を作りながら、真実/PO および開発者/技術専門家を敬意を持って理解しようと努めます)。了解した)。テスト主導の考え方を奨励するために、計画の段階で最初に QA タスクを作成することをお勧めします。QA は、これを採用するために文字通り自らを前に出さなければならない場合があります。

  1. QA は聞かれ、「それをどのようにテストするつもりですか?」と尋ねられることはありません。開発者が自分の作品を言った後 (滝の考え方)。

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

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

  4. ステップ 1 から 3 が残りのイテレーションの唯一の TDD アクティビティである場合でも、最初の投稿で Steve が仮定したシナリオよりも 100 万倍もうまくいっています。「開発者は自分のタスクを達成しようと大騒ぎします。通常、タスクはスプリントのほとんどを完了するのにかかります。QA はテストできるものをリリースするように開発者にせがみます。開発者は最終的にバグのあるコードをスプリントが終了する 1 ~ 2 日前に QA に投げ出します。残りの時間は、QA が見つけたバグを修正します。」

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

  1. 彼らは、開発者と真実/PO によって異議を唱えられたテストのアイデアを持ち、妥協点に到達する準備ができている必要があります。「QA 警察」の態度は、アジャイル チームには通用しません。

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

  3. QA は、計画/見積もり会議の準備をする必要があります。目に見えないユーザー ストーリーに対して、思いつきでテスト アプローチを作成できると期待しないでください。多くの場合、開発者のタスクははるかに明確であるため、開発者はこれを実行できるようです。たとえば、「x モジュールを z コンポーネントとのインターフェイスに変更する」または「y メソッドをリファクタリングする」などです。QA として、計画の前に導入/変更される機能に精通している必要があります。これにより、テストの範囲と、適用する可能性のあるテスト設計手法を知ることができます。

  4. テストを自動化し、イテレーションの最初の 2 ~ 3 日以内にこれらを記述して「失敗」させること、または少なくとも開発者がコードの準備を整えたときに間に合わせることは、ほぼ不可欠です。その後、テストを実行して、期待どおりに合格するかどうかを確認できます (適切な QA TDD)。これは、反復の最後に小さな滝を回避する方法です。開発者がコーディングを開始する前または開始するときに、開発者が何を目指すべきかを理解できるように、実際にテストのデモを行う必要があります。

  5. 私は 4 が「ほぼ必須」であると言います。これは、予想される動作の手動チェックリスト (あえてスクリプトと言います!) を使用して同じことが成功する場合があるためです。重要なのは、これを事前に開発者と共有することです。彼らと話し続けてください!

タスクの主題に関する上記のポイント 2 に関して、私は 1/2 時間から 2 時間のサイズのタスクを作成してみましたが、それぞれが実証可能な作業に対応しています。時間」。これは私の仕事を整理するのに役立ちますが、あまりにも詳細であると他のチームメンバーから批判されており、スタンドアップで前日から完了するために複数のタスクを移動するか、タスクをまったく移動できないという影響があります。私はまだそれらに乗っていません。人々は毎日のスタンドアップで着実な進歩の感覚を見たいので、半日または 1 日ブロックでタスクを作成する方が便利です (ただし、完了に向けて実行する「マイクロタスク」の独自のリストを保持することもできます)。スタンドアップで全体的な進捗状況を伝達するために使用するより大きなタスクのうち)。

上記のポイント 4 と 5 に関して。早い段階で準備する自動化されたテストまたは手動のチェックリストは、実際にはハッピー パスまたは主要な受け入れ基準のみをカバーする必要があります。これらがパスしたら、イテレーションの最後に向けて「探索的テスト」の最終ラウンドの追加タスクを計画して、エッジ ケースをチェックできます。その間に開発者が行うことは問題です。なぜなら、開発者に関する限り、バグが見つからない限り、開発者は「コードが完成している」からです。一部のアジャイル実践者は、最初にエッジ ケースに進むことを提唱していますが、これも問題になる可能性があります。時間切れになると、受け入れ基準が満たされていることを保証できなくなる可能性があるからです。これは、ユーザー ストーリーのコンテキストと QA としての経験に応じて、バランスの取れた決定の 1 つです。

最初に言ったように、私はまだすべての答えを持っているわけではありませんが、上記が困難な経験から生まれたいくつかの指針を提供することを願っています!

于 2014-02-18T23:38:50.480 に答える
5

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

于 2009-12-10T23:00:16.183 に答える
4

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

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

  • プロダクト オーナーは、開発メンバーがタスクを完了する責任を本当に負っていますか。それが PO の仕事であり、それが実現しない場合、開発者は手を緩めます。
  • 開発者はあらゆる種類の TDD を使用していますか。そうでない場合、それは問題を大きく助けるかもしれません。開発者にコードをテストする習慣をつけさせます。私が働いている場所ではこの問題が発生しており、私のチームは重要な領域で TDD を実行することに集中しているため、後で誰かに TDD を実行してもらう必要はありません。
  • タスク/ユーザー ストーリーが一般的すぎませんか? タスクの内訳にゆとりがあると、開発者はずさんになります。繰り返しますが、これは多少 PO の問題です。

QA 担当者をスクラムマスターとして使用するというアイデアが、過去に飛び交っていたのを聞いたことがあります。彼らは毎日のスタンドアップに出席し、開発者の状況を把握することができます。彼らは、PO に関する問題に対処できます (PO が適切に仕事を行うことができると仮定して)。

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

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

于 2008-09-30T22:15:56.117 に答える
4

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

あなたが知っているように-それはひどくうまくいきません:-) あなたが説明しているプロセスは私にはスクラムのようには聞こえません-または少なくともスクラムがうまくいったようには思えません.

QA 担当者がチームの一員なのか、それとも別のグループなのか、あなたの説明からはわかりません。

彼らが別のグループである場合、これはおそらく問題の大きな部分です. 彼らは、タスクの完了に対するチームのコミットメント、およびプロダクト所有者との関連するスコープの交渉には関与しません。チーム内に QA スキルがなくても、アジャイル グループが成功するのを見たことがありません。多くのテスト/QA スキルを持つ開発者を配置するか、チームに 1 人または 3 人の QA 担当者を配置するかのいずれかです。

彼らチームに所属している場合は、最初のスプリント計画で彼らの声をもっと聞く必要があります。ここまでで、プロダクト オーナーとチームは、あなたがオーバーコミットしていることを明確にする必要があります。

それが私だったら、私はいくつかのことを試します:

  • まだチームにいない場合は、QA/テスト担当者をチームに追加します
  • 何が「完了」と見なされるかについて、プロダクト オーナーやチームと長い間話し合ってください。一部の開発者は、「QA に引き渡す」== 完了というスクラム前の考え方のままのようです。
  • ストーリーを小さなチャンクに分割する - 見積もりミスを見つけやすくなります
  • より短いスプリントを実行することを検討してください。追跡と学習が容易になるためです。

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

于 2008-10-05T15:14:03.007 に答える
4

QA へのリリース前に、開発チームが独自に十分なテストを行っていないようです。すべての単体テストに合格すれば、QA サイクルは比較的スムーズに進むはずですよね? 彼らはいくつかの統合エラーを見つけるでしょうが、それほど多くはないはずですよね?

于 2008-09-30T22:07:17.853 に答える
3

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

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

于 2008-09-30T21:53:51.677 に答える
2

考慮すべき 1 つのアイデアは、QA をメイン開発の 1 イテレーションの後ろで作業させることです。それは私たちの環境ではうまく機能します。

于 2008-09-30T22:21:37.443 に答える