Swiftで書いて覚えるTDDを一読した
Swiftで書いて覚えるTDDを一読してコードで写経しながら試してみました。
テスト駆動型開発(TDD)ですが、名前だけは聞いたことがあったのですが、一体どんな開発手法なのか全く理解できていなかったのですがTDDを大まかに知ることができた気がします。
TDDとは
TDDがどんなものなのかというと、実装の前に絶対に失敗するテストを書いてテストをいち早く成功させることを目標に開発を進めていく手法です。
読んでいて驚いたのは、どんな形であれテストを成功させるというスタンスをとることでした。
例
こんなテストがあるとします。MyDataの値が10であるかどうかというものです。
func testCheckValue(){
var data = MyData(10)
XCTAssertEqual(data.equalValue(10))
}
テストを書いた時点ではMyDataは存在しませんので当然エラーになります。
struct MyData {
let value: Int
init(value: Int){
self.value = value
}
func equalValue(secoundvalue: Int){
return true
}
}
TDDで1番に考えるのはテストをグリーンにすることなのでこんな実装をしちゃうそうです、equalValueの戻り値がtrueなので絶対成功します。
テストが通ったらXCTAssertFalseのテストを流してみて、失敗したら直すという流れです。
私は複数のことを一気にやろうとしてしまう癖があるので、一歩一歩確実にゴールに向かうTDDの開発スタイルいいなーって思いました。
リファクタリング
コードを書いたらリファクタリングをするわけですが、TDDではテストもリファクタリングの対象になるようです。
インスタンス変数を共通化したり、すでに他のテストで成功が保証されているテストを削除するなどで、テストしっぱなしにせずに両方をメンテナンスしていくという開発手法はびっくりしました!
おわりに
書籍自体は薄いのでサクッと写経できちゃうと思います。 私は紙の書籍版を書いましたが電子書籍だとめっちゃ安買ったです!
2章でポーカーをTDDで途中まで実装しているのですが、個人的にはすごくわかりやすかったです。XCTestについても事前知識が全くなかったですが、特に問題なく読み進めることができました。
大まかにTDDの流れがわかったので、まずは自分のアプリでTDDでの開発を試してみようと思います。
ではでは。