2011-12-23 4 views
2

私は120人の開発者を持つ開発グループで働いていますが、その中にはより小さな部門があります。私たちのプロセスは、滝とアジャイルの間のどこかにあります。私たちはビルドで単体テストを実行することはありませんし、さまざまなチームでそれらをカジュアルに使用するだけです。 TDDに似たものはここでは起こりません。自動化された単体テストを強調しない開発プロセスは、スクラムで悪化しますか?

私たちは、スクラムの訓練を経てきた、といくつかのプロジェクトのためのアジャイルの方法を使用し、将来的にはアジャイルに向けて他の人を移動しようとしています。

私はかなりしばらくの間、自動化されたユニットテストの私達のデエンファシスを懸念してきました。このScrum/Agileトレーニングプロセスでは、私たちのビルドで自動化された単体テストが不足していることを問題にする可能性があることを強調しました。これに対して、「ムーバーとシェイカー」からの応答は、これがXPの話題であり、私たちはスクラムを実装しているということです。

あなたが私の懸念に同意すると仮定すると、私は良い自動化されたユニット・テスト・インフラストラクチャ(と理解)の開発は高い優先度を持っている必要が手形を支払う人々にどのような引数を提示するだろうか?

答えて

3

私が使用した最も良い議論は、です。早くバグを修正する方が安いです。展開時にテストされていないコードはほぼ確実に失敗する短いイテレーションで特に

、あなたが言うように、。 は、頻繁な高品質リリースの明確なリズムが必要な理想的なスクラムの理想的な理想である理想的な時に、というスケジュールに不確実性を導入しています。

テストされていないコードを大規模なチームに統合することも難しい場合があります。最善の仕様書でもあいまいされている場合が多く、頻繁に悪化します。良いロバストなテストスイートを持つは、コードが実際に行うことのための素晴らしい仕様です

コードが書かれていたら、まともなテストカバレッジを使用すると、コードと、それはそれはまだ定義されてとして働くことを知って変更を取ることができます。特に、回帰テストに関連する努力は大幅に軽減される。

私は経営者がテストがコア開発機能の外に離れスプリントサイクルから行われていることを示唆していることで、このように「手抜きを」しようと見てきました。私の経験では、ソフトウェアが遅れて提供されるのは、バグを早期に見つけて修正するための適切な努力が行われた場合よりも遅れて提供されます。

おそらくそれは文化的な問題ですが、私がスクラムなどで見たベストプラクティスは、プロセスの特定の部分がXP、アジャイル、スクラムなのかどうか、君は。むしろ、というポリシーはを検査して調整することで、チームが特定のポリシーを採用してコードを改善することを決定できることを示唆しています。スパイクが効いた後であれば、ポリシーはより広く採用されます。か否か。

だから、あなたはそれが最良のあなたの次の遡及的にテストカバレッジを向上させることを提案、その後、あなたの時間をBIDEするかもしれません。または、おそらくあなた自身で実装して...あなたの速度が向上するのを見てください!

+0

これはすばらしい答えです。私は単体テストにコードを変更するという自信を持っていると付け加えます。これは大きなプラスです。コードが意図したとおりに動作することを証明する単体テストがない場合は、方法論に関係なく難しいでしょう。テストは、後に返済する先行投資です。コードを記述するのにかかる時間は、そのコードを維持する時間に比べて重要ではありません。 – Andy

+0

良い点。 「テストカバレッジの向上」についてのあなたの言葉を笑います。コードカバレッジは、「私があまりにも長く生きなければならないのか」のトピックの1つです。「自分でやる」というアイデアに関しては、開発者が「自分でやる」とすれば、書かずに基本的に仕事をしている開発者と比べて、仕事を終えるのに時間がかかるようだ単体テスト。 –

+0

@Andy - ほとんどのbeancounters _hate_コードが変更できるという考え!しかし、はい、私は私の答えを更新します。 –

2

私はスクラムに移ることで状況が良くなるか悪くなるとは思わない。コアとなる問題は、どのプロセスを使用するかではなく、自動テストがない場合は、プロセスに関係なくテストはありません。スクラムは問題をより荒々しくするのに役立つかもしれません。通常のコードでテストされていないコードにデプロイすると、バグが早く発見され、バックログには修正が必要な欠陥が埋め尽くされます。その時点で、チームはいつものようにビジネスを続行するか、早期にバグを発見し、テストをプロセスに組み込むことでより高品質の機能を提供する方がよいと判断します。

+0

+1は、自動テストはあなたが従うプロセスとは関係がないことを指摘しています。古典的な滝を作っても、自動化されたテストから大きな利益を得ることができます。 –

1

ジェレミーは非常に確かな答えを提供しましたが、私は滝からアジャイルへの移行の文脈にトピックを載せることでそれを増強しようとしました。私たちは、今や2年間アジャイルを成功させてきました。

Scrumアジャイルの重要な成功要因は、行われていない作業の量を最大限にすることです。手動テスト(単位、機能、負荷、スケーラビリティ、ネガティブ)は、十分に活用されていないエンジニアリング能力です。実際には、すべての新機能が増えると、あるレベルの品質を維持するために必要な手動テストの量は、フィーチャの相互作用によってテストマトリックスが拡張されるため、フィーチャの数が非線形(幾何学的に)に増加するため、 。私の会社では、手動テストの「技術的負債」と呼ばれています。

スクラムでは、すべてのユーザーストーリーが製品所有者が承認する前に合意した定義を満たす必要があるため、テストサイクルが加速します。どのスプリントでも、多くのユーザーストーリーはすべてのスクラムチームによって実行されるべきです。各話が手作業によるテストを必要とする場合、それは国防総省と自動化の欠如によって行うべきであり、多くの時間が浪費されます。

低リスクの静的領域に対処しないように、コードが変更されている場所で、合理的なテスト戦略を検討します。スクラムでは、コードリファクタリングが推奨されています。これは、各ストーリーが非常に薄い機能性のスライスであり、顧客のフィードバックが新しい/変更されたユーザーストーリーの形でバックログに即座に組み込まれるからです。したがって、優れたスクラムプログラムは、滝プログラムよりも「リリース日」に近い「コードフリーズ」を持つことになります。これは、一度テストして完了するのが難しくなります。あなたは何度も技術的な債務利息を支払うことになります。

ジェレミーの最後の考えは、あなたのアイデアをどのように売ったり、変化をもたらしたかに関するものです。私はこれが非常に重要であると思うので、自分の考えをいくつか追加することができます。管理者がアジャイルについて真剣であれば、スクラムチームのフィードバックを真剣に受け止めます。レトロスペクティブでは、チームメイトに単体テストカバレッジのないコードを修正する方法について質問することができます。それはいくつかのフィードバックを引き出すはずです。

もう1つの方法は、プログラムの成果物に障害物の証拠を探すことです。障害を遅らせるものとして定義されている障害。 「回帰」の欠陥が特定されているバグ追跡システムがありますか?あなたのチームは、特定のテストケースが実行される頻度を追跡していますか?適切な単体テストのカバレッジを持つソフトウェアのコンポーネントはありますか?もしそうなら、それに取り組んでいるチームは他のチームよりも少ない問題にぶつかりますか?経営陣はドル/ポンド/ユーロを気にします。自動化された単体テストが不足し、金銭に変換されているために何人の人が無駄になったかを把握する。管理者は、エンジニアの1人が完全にロードされたコストを教えてくれるでしょう。技術的な負債が直面するまで、この廃棄物は永久的であることを彼らに思い出させる。

関連する問題