koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

TDDについて勉強しました

はじめに

FJORD BOOT CAMPのRailsプラクティスが終わり(といっても、課題の修正は残っていますが)、テスト駆動開発を学ぶプラクティスに突入しました。

そこで、関連資料を読んで、テスト駆動開発について学んだことを自分なりにまとめたいと思います💪

TDDとは

最初にテストを書く、テストが通るようにコードを書く、テストが通るままでリファクタリングを行うというサイクルを回していく開発手法のことです。

留意すべき点として、テスト駆動開発におけるテストは、品質保証のためのテストではないということです(TDDにより品質は保証されるが、それが主目的ではないということ)。

1番の目的は、開発者が安心して、開発を行えるようにするというものです。

TDDのメリットとは

メリットは以下の3つが挙げられます。

  • ユニットテストが確保される
  • 品質が保証される
  • 自分が書いたコードのフィードバックをすぐに得られる

具体的にどのような手順を踏むのか

テストを設計する

まずは、コードに求められる要件を箇条書きにしていきます。

そして、その中から、一つだけ選んで、テストを書き始めます。この時、選ぶのは優先順位の高いものや、簡単なものなどという基準があります。ただ、簡単なものでも実際に開発してみると考えることは多いので、最初は簡単なものから、選ぶことがおすすめされていました。

テストコードのテストを行う

そして、テストコードのテストを行います。具体的には、何も実装がない状態で、テストコードを実行して、予想通りにテストが失敗することを確認します。

これにより、テストコードのテストを行うことができます。

また、テストは動く仕様書であることを意識すると、読みやすさを確保するためにテストコードは日本語で書くことがおすすめされていました。

テストを通るようにコードを書いていく

テストが通る必要最低限のコードを書いていきます。

テストが通るままで、リファクタリングを行っていく

どこまでリファクタリングをしていくかという問題がありますが、あまり深追いせずに決められた時間内で行っていくのが良いようです。

再び、箇条書きの中から、要件を一つ選び上記の手順を繰り返す

箇条書きの中から、選ぶ要件は一つだけ。各個撃破していくのが、テスト駆動開発の基本のようです。

このようなサイクルをどんどん回していくのがテスト駆動開発という開発手法だと理解しました。

最後に

現場Railsを読み、初めてRspecを知り、Rspecが自動でブラウザを動かしている様子に感動した時から、ずっとテストを勉強したいと思っていたので、ようやく念願が叶ったというところです。

自分が書いたコードが合っているか分からないという不安は常につきまとっているので、このような不安を取り払って、自信を持ってコードを書いていくために、テスト駆動開発は効果的なんだろうなーと思い、実践してみたいと思いました💪

参考にさせていただいたサイト

テスト駆動開発の基礎 | Knowledge Note

第1回 連載を始めるにあたって:[動画で解説]和田卓人の“テスト駆動開発”講座|gihyo.jp … 技術評論社

50 分でわかるテスト駆動開発 | de:code 2017 | Channel 9

テスト駆動開発へようこそ