辞書: 振る舞い駆動開発(BDD)

投稿日:

振る舞い駆動開発(BDD)とは

開発手法の1つです。

個人的には好きじゃない

自分がこの単語を知ったのはRubyのRSpecですが、 個人的にはあまり好きじゃないです。 正直なところ、最初の方はむしろ「嫌い」でした。 少なくとも確認できるのは2015-02-11のこのツイートです1

Gradleのしっくりこない感って何かと思ったら、RSpecと同じだった。当時はスルーしてたけどはっきり言ってあの書き方は生理的に受け付けない。

端的に言うと「気持ち悪い」からです。 「自然言語(英語)っぽい」のが利点らしいですが、 これを読みやすいとは思わないんですよね。 英語ネイティブじゃないし、ただ文法で遊んでるだけにしか見えません。

文法が生理的に嫌いというのもありますが、 あと「黒魔術」になりがちなのも嫌いな原因です。 次に書きますが、InSpecの実装を検索しようとして、 どこを探せばいいか分かりませんでした。

InSpecで見直したが・・・

ただ、今はそれほど嫌いじゃないです。 なぜかというと、InSpecを使うようになってからです。 InSpecが影響を受けたServerspecも、RSpecを使っていますが、 こちらは十分読みやすいです。

こちらが読みやすいと思う理由は2つあります。 1つ目は、文法が分かりやすいことです。 基本的な使い方ならdescribe, it/its, shouldくらいで書けます。 今のRSpecは2英語でもプログラムでもない「何か」でしかなく、 やっぱり気持ち悪いです。

もう1つは、対象がサーバの状態という抽象化されたものだからです。 逆に言えば、単体テストでBDDは無駄だという結論です。 最近はBDDではなくATDD(受け入れテスト駆動開発)という言葉も出ていますが、 こちらの方がすんなり受け入れられそうです。


  1. https://twitter.com/ikemo/status/565435609918226432 より。鍵垢なので見れないです。 [return]
  2. RSpec 2の頃の文法の方が(欠点があるのは分かりますが)、まだマシです。 [return]