以前からBDD(振る舞い駆動開発、Behavior Driven Development)について、以前から興味がありました。*1
今回、参考になりそうな資料を見つけました*2。なので、その本を紹介したいと思います。
ただし、私も実際に手を動かして触ってみたわけではありません。ここでは情報へのパスを提供するだけでふ。ここで話をすることにより、自分にプレッシャーをかけつつ*3、世の中にこれらの情報や事例が増えていくことを期待しています*4。
で、今回見つけた情報を見つけたのはこの書籍の中にあります。
実は私は「ロバストなPythonコードを書きたい!」とか「クリーンで保守しやすいコードを書きたい!」というモチベーションはそこまで高くありません*5。保守しやすいコードを書きたいとは思いますが、今はそれ以上にソフトウェアでまず価値を提供したい気持ちが強いのはあります。
この本は、仕事をしている中でこの本の話が流れてきて出会いました。出会ったし、なんとなく気になったので、とりあえず読んでみることにしました*6。
私は本を読んで知ったのですが、BDDに関するものとして、振る舞いの仕様を定義する言語があるらしいですね。その一つがGherkin言語であり、GWT(Given-When-Then)形式と呼ばれる形式です。
Gherkin言語とはなんだろう。という事で調べてみました。
- Gherkin言語は、Cucumberのために開発された。Cucumberは、BDDのためのテストツール。 参考: Wikipedia Cucumber (software)
- Cucumberは、Rubyで始まったOSSであり、RSpecの一部から始まった。現在では、Ruby以外の言語でも互換性のあるテストツールがある。Cucumber · GitHub
- Pythonの場合はbehaveか、pytest-bddが使える。
ここまでわかればあとは実践するだけです。
普段、pytestを使ってるのでpytestにインテグレーションされてるならだいぶ使いやすそうですね。
やってみたいところ。
本日は以上です。
*1:ただ、私は「実際に参考になる情報がないかなあ」と思っている段階で止まっていた。積極的に資料を探していたわけではない。というか、最後に探したのが数年前なので知識が古い。
*2:色々な本を眺めている中で見つけて「おっ、これは」と思った
*3:ここに書いたのに半年や1年経って、そのまま放置してたら、いつまで放置してるんだ、という気持ちになってくる
*4:あと、案件があれば、当然優先的に勉強するので、関連する課題に取り組んでいるサービスがあれば、ぜひお声掛けいただきたい。
*5:絶望的に保守しにくいコードを保守しなければならない環境にいた経験がないからかもしれない。また、リーダブルなコードがあって、それがGitHub上でPRを作りつつ開発されていて、ユニットテストがあるならなんとかなるのではないか、と思っている節もある。また、テストがそんなに重厚じゃなくてもコードに一貫性があれば読めば良いと思っている。超大規模な案件でPythonコードを書いた経験もないので、今まで関わってきた案件でそのようなことを思わなかった可能性はある。
*6:「知らないし、やってない」と「知っているけど、やってない」は別の段階であるし、「開発コストが変わらないなら、保守しやすいコードを書きたい」という気持ちはある。なので、とりあえず知っている状態に移動したかった。