テスト駆動開発を実践する必要があるのはなぜですか?また、どのように始めればよいですか?
質問
コードを書き始める前に、コードのテストの作成について話す人がたくさんいます。この実践は一般に、略してテスト駆動開発 (TDD) として知られています。この方法でソフトウェアを作成することでどのようなメリットが得られますか?この練習を始めるにはどうすればよいですか?
解決
多くの利点があります:
- コードが機能しているかどうかについてのフィードバックがすぐに得られるため、バグをより早く見つけることができます。
- テストが赤から緑に変わることで、機能する回帰テストと機能するコードの両方があることがわかります。
- 自信を持って既存のコードをリファクタリングできるようになります。つまり、コードが壊れる可能性を心配することなくコードをクリーンアップできるようになります。
- 最終的には、自動ビルド中に実行できる一連の回帰テストが得られ、コードベースが安定しているという確信が高まります。
始めるための最良の方法は、とにかく始めることです。素晴らしいものがあります ケント・ベックの本 テスト駆動開発のすべて。古いコードについては気にせず、新しいコードから始めてください...コードをリファクタリングする必要があると感じたときは、既存の機能のテストを作成し、それをリファクタリングして、テストがグリーンなままであることを確認します。また、読んでください この素晴らしい記事.
他のヒント
利点の部分には、 最近カバーされた, どこから始めればよいかというと…未知の部分があまり多くないため、リスクが低い小規模企業のシステムから始めます。テスト フレームワーク (NUnit など) をまだ知らない場合は、まずそれを学習してください。それ以外の場合は、最初のテストを作成することから始めてください:)
利点
- コードを分割する方法を理解した
- コードで何をさせたいのかを正確に理解できる
- それがどのように動作するのか、そして将来的にはリファクタリングによって何かが壊れるかどうかがわかります。
- コードが何をすべきかを常に認識していることを確認する習慣を身につけます
はじめる
やるだけ。実行したいことのテスト ケースを作成し、テストに合格するコードを作成します。テストに合格したら、コードが常に失敗するケースの作成に進むことができます (たとえば、2+2 は 5 に等しくないはずです)。
すべてのテストに合格したら、やりたいことを実行するための実際のビジネス ロジックを作成します。
ゼロから始める場合は、使いやすい適切なテスト スイートを必ず見つけてください。私は PHP が好きなので、PHPUnit や SimpleTest がうまく機能します。ほとんどすべての人気のある言語には、テストの構築と自動化に役立つ xUnit テスト スイートが用意されています。
私の意見では、最大の利点は、コードが意図したとおりに動作しているかどうかを明確に確認できることです。これは明白に思えるかもしれませんが、私が過去に発見したように、本来の目標から外れてしまうのは非常に簡単です:p