Open3
「Swiftで書いておぼえるTDD」メモ
TDDとは
ある機能に対して期待する結果を、プロダクトコードより先に
失敗するテスト
として書き(テストファースト)、
実装のゴールを設定します。失敗するテストに始まり、ゴールが満たされた成功するテスト
という足場を作ることで、動作するコードを変更することへのハードルを下げられます
開発ステップは以下となる
- レッド:これから作るもののゴールを定める
- グリーン:期待する結果を満たす足場を作る
- リファクタリング:作った足場を保ちながら改良を行う
メリット
- 常にテストがあるのでメンテナンスしやすい
- デバッグにかける時間を減らせる
デメリット
- 銀の弾丸ではない
- 仕様変更が生じた際は、テストのメンテも発生する
- テストが増えてくると、ビルドに時間がかかる
テスト駆動開発を導入するための具体的な論点
- やりたいことを実現するために現在の実装でどういうリスクがあるか
- そのリスクを許容できるか
- リスクを許容できないのであれば、どれくらいテストとリファクタリングにがかかるか
- コストとリスク、天秤にかけたときにどちらを優先するか
- TODOリストを書いて、取り組むべき問題を細分化
- テストの失敗が環境によるものか切り分けるために、テストを始める前に事前にテストを実行する
- テストケースから考えることで、型をうまく利用す(enum)、考慮しなけばいけないテストケースを減らす
- グリーンで終わらず、プロダクトコードとテストコードの双方を見直す