Rails 勉強会で RSpec on Rails のセッションのとき、舞波さんが「Test::Unit(TDD) と RSpec(BDD) って本質的にどう違うの?」ってひたすら言ってて、恐らく「本質的に差はねぇなー。一緒じゃん。なら変えることないな。」と思ってたんじゃないかと思う。 ズバリ、本質的には一緒です。しかし、言い換えることが大事なのですよ。TDD の本質は、テストでなく設計にある(今は Driven の話は抜き)。TDD という言葉ではその本質を見紛うから、BDD という言い換えが重要なのです。assert_* が should_* になるのもソコ。TDD する時って、テストを書いてるんじゃなくて、仕様を書いているでしょ?。 本質的には一緒。見紛わないための、絶えず意識するための「皮」が大事なのですよ。