テストはソフトウェア開発の重要な一部です。意識しているかどうかにかかわらず、私たちは継続的にテストを実施しています。たとえば、PHPでクラスを記述するとき、ステップごとにデバッグしたり、単にecho
またはdie
ステートメントを使用して、実装が当初の計画どおりに動作することを確認したりする場合があります。Webアプリケーションの場合、ページが期待どおりにインタラクトすることを保証するために、フォームにいくつかのテストデータを入力しています。
テストプロセスは自動化できるため、何かを検証する必要があるたびに、それを実行するコードを呼び出すだけで済みます。結果が計画と一致することを確認するコードはテストと呼ばれ、その作成とさらなる実行のプロセスは、自動テストと呼ばれ、このテスト章の主なトピックです。
テスト駆動開発(TDD)とビヘイビア駆動開発(BDD)は、実際のコードを記述する前に、コードの一部または機能全体の動作をシナリオまたはテストのセットとして記述し、これらのテストをパスさせる実装を作成して、意図した動作が達成されたことを確認することによってソフトウェアを開発するアプローチです。
機能を開発するプロセスは次のとおりです。
完了したら、別の機能または改善のためにプロセスを繰り返します。既存の機能を変更する場合は、テストも変更する必要があります。
ヒント: 細かい反復作業を繰り返して時間を浪費していると感じたら、テストシナリオでより多くの範囲をカバーするようにして、テストを再実行する前に多くのことを済ませてみてください。デバッグに時間をかけすぎている場合は、その逆を試してみてください。
実装を行う前にテストを作成する理由は、まず何を達成したいのかに集中し、その後「どのように行うか」を深く掘り下げることができるからです。通常、これにより、機能の調整や結合度の低いコンポーネントの場合に、より優れた抽象化と簡単なテストのメンテナンスにつながります。
つまり、このようなアプローチの利点をまとめると、次のようになります。
長期的には、通常、時間の節約効果が得られます。
上記のテストファーストのアプローチは、長期的で比較的複雑なプロジェクトには理にかなっていますが、より単純なプロジェクトには過剰になる可能性があります。いつそれが適切であるかの指標がいくつかあります。
既存の実装の動作をカバーするテストを作成することに問題はありません。
場合によっては、どのような形の自動テストも過剰になる可能性があります。
それでも、時間があれば、このような場合でもテストを自動化することをお勧めします。
誤字脱字を見つけたり、このページを改善する必要があると思いませんか?
githubで編集する !
コメントするにはサインアップまたはログインしてください。