とある勉強会にて
勉強会で最近気になっていることがあれば教えてください。という優しいお声をいただき「テストコードを書くのって何がメリットですか?」と質問した時のことを書いていきたいと思います。
テストを書くメリット
- 仕様書的な役割
- どういう挙動を期待しているのかテストに書いておくことで、新しくプロジェクトに参加した人も理解しやすい
- 自分を守るため
- 他者に対して、このプログラムはこのようなテストが通ったという証拠を残せる
- 複雑な計算
- テストコードを書いておけば、複雑な計算を検証の度に行う必要がない
- 自動化、効率化
- コードにすることで、自動的にテストをしてくれるので効率的
- 変更に対応しやすい
- 税率変更など、変化があった時にテストを書いていると対応後の検証がしやすい
- 段階を踏んだ機能
- 例えば3段階あるプログラムで1段階目を修正した時に、テストが全て通れば問題ない等
- コードを書き直すタイミング
- テストがエラーになる際にコードを見直すので書き直すきっかけにつながる
- 手戻りを減らす
- この段階まではテストが通ってるから実装できているね、という実証になる
- 不安を無くす
- 開発者の精神安定剤的な感じ
- バージョンアップの時
- 例えばRubyのバージョンを上げて問題なく動くか確かめるとき
- 綺麗なコードを書けているか
- 綺麗なコードの場合はテストも書きやすい。逆にテストに悩むコードは書き方に問題があるのかもしれない
先輩方にこんなにたくさんのメリットを教えてもらいました。テスト書きたくなってきたぞ〜!
TDD(テスト駆動開発)のメリット
TDD(Test-Driven Development: TDD)とは、プログラムを実装する前にテストコードを書き、そのテストが通るように実装・リファクタリングを進める手法です。
- 思考の整理ができる
- 思考を整理し、先にアウトプットとしてテストコードを書いた後、インプットとしてプログラムを書く事で自分の中で理解しながら書ける
- ゲーム感覚
- まずテストを書く→通らない、次にプログラムを書く→通るという流れなのでゲームのように楽しみながら書ける