2012年02月19日(日)
TDD != テストファースト - テスト駆動開発入門を読んだ。
【送料無料】テスト駆動開発入門 |
2010年の初めからテストコードを真面目に書くようになって、「テストコードをはじめに書き、それを満たすために開発する」ことをテスト駆動開発と思っていた。ところが、RSpecの本とかを見たりはしていたけど、BDD*1を知っていることが前提だったりで、いまいちテスト駆動開発というものを明確に理解できていなかった。
ということで、ケント・ベックのテスト駆動開発入門を読みました。
この本によれば、テスト駆動開発とは、
- ソフトウェア開発における不安を緩和することが目的であり、
- そして単なる開発ということだけでなく設計をも含んでいる
開発手法のこと。
1つ目は、今ままでテストコードを回帰テストのために書いたときに常に感じている。
自分が加えた変更が別の機能に影響していないか、そもそも期待している変更になっているのか、をちゃんとテストが教えてくれる。
そして、テストコードの記述は、新しい変更のために何をすればいいのか考える際の動力になる。これが2つ目の設計という言葉に相当するだろう。
本書では、これら基本的なことだけでなく、実際にどのように開発を進めていくのか、 Javaのサンプルコードを実例にあげて説明している。最期に、その実例の中で使ったパターンのまとめが説明されている。Javaの実例では、複数の通貨をとりあつかうクラスが、テストコードによってどのように抽象化され、一般化されていくかが見れて非常にわかりやすい。テストをグリーン*2を維持しつづけながらテストがリファクタリングされていく過程は非常に参考になった。自分の場合、レッドにした状態からグリーンにし、リファクタリングでは最終的にグリーンになればいいとしか思っていなかった。
そこで使われていたパターンについては、Javaに限らずどの言語でもテスト駆動開発一般に使えるものなので、今まで野良TDDやってきた人には考えの整理に役立つのではないでしょうか。
パターンだけ知りたい、という方は、それだけをまとめてくださっている方がいるので、そちらを参考に。
あと、テスト駆動開発をどうやって導入するかについても書かれているので、これから現場で始めたいという方にも役立ちそうです。
個人的には、勝手にテストコード書いてしまえばいい、という考えなのですが、ちゃんと上司などに説明しなければならない人に良さそうです。
参考
- 36 http://sonoko0511.jp/2012/02/21/web-5/
- 8 http://www.google.co.jp/url?sa=t&rct=j&q=nginx ログローテート&source=web&cd=1&sqi=2&ved=0CCQQFjAA&url=http://d.hatena.ne.jp/Umeyashiki/20100508/1273326859&ei=9tRAT4enL5CJmQXM-OziCg&usg=AFQjCNG
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=heroku redmine&source=web&cd=4&ved=0CDsQFjAD&url=http://d.hatena.ne.jp/Umeyashiki/20110103/1294063892&ei=QhFBT5exO8_tmAWLq_zUBw&usg=AFQjCNHkIW_tCTI39RbzjdgtBTGjdi4Y4g&sig2=fjgJqhmFTXzUBCAPLatR3Q
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=nginx log rotate&source=web&cd=1&sqi=2&ved=0CCYQFjAA&url=http://d.hatena.ne.jp/Umeyashiki/20100508/1273326859&ei=U7BET5uVAcvHmQXw1IX8Aw&usg=AFQjCNG2aN6PD800cUYPSojFBVNTGQN5sA&sig2=-jTjL9HUZO19bvMD9x
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=nginx rails&source=web&cd=3&ved=0CDIQFjAC&url=http://d.hatena.ne.jp/Umeyashiki/20100131/1264948069&ei=jN9BT4jXD-WNmQXl-dTUBw&usg=AFQjCNE-ui6AULM_dHHjhu8lHu1Lb-6fKg&sig2=bdQom-SezdbCOXMAx_R4tQ
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=rvm+gemset+default&source=web&cd=1&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/Umeyashiki/20101120/1290265604&ei=YRNBT8mKJqahmQWYrKSpBw&usg=AFQjCNGIhZQGefB99Xn8k10vOlVnmYZuxg&sig2=rVkZa9Fe6H-KmoL28s972A
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=rvmrc&source=web&cd=3&ved=0CDQQFjAC&url=http://d.hatena.ne.jp/Umeyashiki/20101226/1293370406&ei=WlxCT-rXI9GQiQeU2_C8BA&usg=AFQjCNEhqLbAMbO3g-YMOHZLP75H2V0jYw
- 3 http://t.co/Xmg6bPby
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=【超魔界村】ゆっくり村【実況】part5-2&source=web&cd=5&ved=0CEQQFjAE&url=http://d.hatena.ne.jp/Umeyash
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=Disabling+rails.vim:+autoload/rails.vim+is+missing&source=web&cd=1&ved=0CCYQFjAA&url=http://d.hatena.ne.jp/Umeyashiki/20111001/1317488217&ei=xmZET5rQGce4rAfn9oWbDw&usg=AFQjCNHzv1FAnDSDF8D4dO4_bhqZFfXt










