Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

第1回のIs TDD Dead? 討論動画に関して情報を漁った

概要

第1回のIs TDD Dead? 討論動画に関して情報を漁った

詳細

2014/05/09のDHH氏、Kent Beck氏、Martin Fowler氏の公開討論の
動画は見たのですが、英語力不足で聞き取りできずまとめ情報を漁りました。

Is TDD Dead?
http://www.youtube.com/watch?v=z9quxZsLcfo

ThoughtWorksのFabio Pereica氏のまとめ

http://www.thoughtworks.com/insights/blog/mockists-are-dead-long-live-classicists
・討論では多すぎるmockやstubに関する話題が中心となっていた
・3名ともmockはほとんど使わない
・Kent氏曰く、
「その日の夜に(安心して)寝るために、テストによって新たなコードが既存のコードを壊していないことを保証する」
そして、多すぎるmockはそれを保証しない。
・外部システムとの結合部など、本当に必要な箇所にmockを使うのは問題ない
・自身のコードに対してmockを使うのが問題
ホワイトボックスで内部構造に依存した自身の処理に対するモックを多用することはリファクタリングの弊害となる。
TDDをするなら、リファクタリングをする。そのため、この点は重要である。
・mock自体が悪いのではなくmockの使い方が悪い

Martin Fowler氏のUnitTestに関するエントリ

http://martinfowler.com/bliki/UnitTest.html

Fabio Pereica氏の記事から引用されている。
定義が曖昧になりがちな「UnitTest」について。

何がUnitなのか?
・システムの小さな部分に焦点をあて、低レベルである
・標準的なツールによってプログラマ自身で書かれる
・他のテストより大幅に高速
オブジェクト指向ならClassが対象
・手続き型や関数型ならfunctionが対象
・時々現れる密に関わった複数のクラスがある場合はひとまとめでUnitと考える

Mockの利用
・外部システムが十分に安定していて、早いならmockを使う必要もない

なぜUnitTestは小さく・プログラマ自身で書き・早くなければいけないのか
・分単位で作りながら何度も確認するため=>リファクタリング
・問題特定が容易