振る舞い駆動開発(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(受け入れテスト駆動開発)という言葉も出ていますが、 こちらの方がすんなり受け入れられそうです。
-
https://twitter.com/ikemo/status/565435609918226432 より。鍵垢なので見れないです。 ↩︎
-
RSpec 2の頃の文法の方が(欠点があるのは分かりますが)、まだマシです。 ↩︎