テストを書くことは余分な作業であり、実際のコードを書くときに人々に松葉杖を与えるようで、あまり効果的ではないかもしれません。
単体テストは松葉杖として価値があります。開発作業をサポートし、アプリケーションが必要に応じて動作しなくなることを恐れずに実装を変更できます。ユニットテストは、実装が要件を満たしていることを検証できるツールを提供するため、松葉杖以上のものです。
単体テスト、受け入れテスト、統合テストなど、すべてのテストは、それらを使用する人と同じくらい効果的です。作業にだらしなく近づくと、テストが粗雑になり、実装に問題が生じます。なぜわざわざ?あなたは、あなたのソフトウェアが機能することを自分自身とあなたの顧客に証明する必要があり、ソフトウェアの使用を妨げる可能性のある問題がないため、テストを煩わせます。はい、テストは間違いなく余分な作業ですが、テストの進め方によって、リリース後にバグを修正するために必要な労力と、コードの変更と保守に必要な労力が決まります。
ユニットテストがどのように機能し、どのように記述するかを理解していますが、それは本当に良いアイデアであり、努力と時間の価値があると主張することができますか?
TDD、および実際にコードを作成する前にテストを記述する必要がある方法は、将来の技術的負債の頭金として早期に努力するアプローチを取ります。プロジェクトを進めていくと、見逃したり、うまく実装されていないものはすべて、メンテナンスの難しさが増すという形でより多くの技術的負債を被り、将来のコストとリソース要件に直接影響します。前もってテストすることで、将来の技術的負債に対処する努力をするだけでなく、コードを実行するだけで要件を検証できるように要件をエンコードすることができます。また、最初にテストを行うと、コードで問題を解決する前に、問題の領域に対する理解を検証する機会が得られ、実装の取り組みが検証されます。
コードのビジネス価値を最大化しようとすることになります。ほとんどテストされておらず、維持が難しいコードは、一般に安価で作成が速く、リリース後の製品の寿命にわたって維持するのに非常にコストがかかります。ユニットレベルで徹底的にテストされたコードは、一般に作成するのに費用がかかりますが、リリース後の製品の寿命にわたって維持するのに比較的費用はかかりません。
また、TDDをSCRUMに特に適したものにしているものはありますか?
TDDは特定の方法論には特に適していません。これは単なるツールです。特定の成果を達成するために、開発プロセスに統合できるプラクティス。したがって、質問に答えるために、TDDは、SCRUMであろうと他のアプローチであろうと、あなたの方法を補完します。