2021年5月に出版された『The BDD Books - Formulation』日本語に翻訳してLeanpubにて出版しました!
表紙はこんな感じ。
書籍紹介および購入はこちらから。
原著はこちら。
なお、本書籍はThe BDD Booksシリーズの2冊目となります。シリーズ1冊目『The BDD Books - Discovery』については日本語版を公開済みです。詳しくはこちらをご覧ください。
本記事では、この本がどんな内容なのかを書きます。
目次
どんな想いで翻訳・出版に至ったか
本書の「Daniel Terhorst-North*1による序文」と「訳者まえがき」に書いた内容を一部抜粋して紹介します。
Daniel Terhorst-North による序文(一部抜粋)
議論の余地はありますが、定式化(Formulation)は BDD の分野の中で最も理解されていません。コラボレーションと共通理解については多くのことが書かれていますし、ほとんどの人が自動化から BDD を始めます。私の考えでは、定式化こそ BDD の真の力と影響を与える場所です。
訳者まえがき(一部抜粋)
本書籍は3冊ある「The BDD Books」シリーズの2冊目です。
(中略)
1冊目では「business」という単語が多く登場しており、ビジネスチームと協調して作り上げていくことの大切さを語っていました。
本書籍でも、引き続き「business」という単語が多く登場しますが、意味合いが少し異なります。ビジネスチームのメンバーも読みやすいシナリオの作成に重点を置いています。「readable」という単語が多く登場しており、「ビジネスチームが読みやすい形にすることが目標」と何度も書いています。つまり、「リーダブルコード」ならぬ「リーダブルシナリオ」を目指しているのです。
本書籍を読み、実践することにより、「書いてあるシナリオが読みにくい」「どうして必要なのか理解できないが、存在しているので一応テストをしている」という漠然とした不満を解消できるかもしれません。
コードの実装に関する書籍は数あれど、実装の前提となるシナリオをどこまで具体化して書くのかについて述べている書籍はあまりありません。
Daniel Terhorst-North による序文および訳者まえがきの補足
BDDに対する誤解
現在、誤解があるまま、BDDという考え方が広がっているように感じています。
Cucumberコミュニティ(Given/When/Thenの記述方式であるGherkin記法をメンテナンスしているコミュニティでもあります)が書いた記事「Behaviour-Driven Development」では、BDDを以下の3つのプロセスに分けて表現しています。
よく「BDD」というと、「Given/When/Then を用いて自動テストを書くこと」とイメージされることが多いです。場合によっては、「BDDで書く」と表現している例も見たことがあります。しかし、それは上の図の「Formulation」の一部と「Automation」を指し示しているに過ぎません。
そうではなく、自動テストを書く以前に行うべきことが多々あることを本書籍およびBDDの推進者たちは訴え続けています。
そんなBDDにおいて一番重要なのが「Discovery」であり、BDDで一番理解されていない部分が「Formulation」です。
Formulationとは何か
Formulation(定式化)とは、Discoveryで示した考えるべき内容を、どのようにテストシナリオに落とし込めば良いかを考えるプロセスです。この時、自動化している形になっていることが必須ではありません。
それでは、具体的にどのようなことをやっていくのでしょうか?
本書籍では、以下のテストシナリオから始まります。
Scenario: 注文テスト Given 時刻は"11:00"です Given お客様は"http://test.wimp.com/"にアクセスします And 彼らは"SearchText"に"マルゲリータ"と入力します When 彼らは"検索"を押します Then "SearchResults"内に"マルゲリータ"が表示されるはずです And 彼らは"サイズ"から"中"を選択します When 彼らは"買い物カゴに追加"を押します Then "BasketItemCount"の中に"1品"と表示されるべきです。 When 彼らは"チェックアウト"をクリックします And 彼らは"DeliveryInstructions"から"店頭受け取り"を選択します And 彼らは"PaymentOption"から"受け取り時の支払い"を選択します And 彼らは"OrderName"に"Marvin"と入力します And 彼らは"ContactPhoneNumber"に"12334456"と入力します When 彼らは"注文を送信"を押します Then "SuccessMessage"が表示されるはずです Then "ErrorMessage"は表示されないはずです And "SuccessMessage"内に"ご注文ありがとうございます! "と表示されるはずです And "CollectionTime"内に"11:20"が表示されるはずです And "TotalAmount"内に"$14"が表示されるはずです
これはどんなテストを意図したものなのでしょうか。そんな疑問を明らかにしていきながら、このテストシナリオを改善していきます。
BDDに限らず、テストシナリオの改善にも役立つ
本書籍は、BDDやATDDを導入していない読者にとっても、テストシナリオの改善に向けて大いに役立つ書籍です。
以前に、「テスト自動化の対象となるテストシナリオの整理に役立つBRIEFの原則」という翻訳記事を公開しました。
本書籍では、このBRIEFの原則を、具体的にどのように適用してテストシナリオを改善していけば良いか、具体的に書かれています。
なので例えば、シナリオテストとなる手動テストでのテスト手順書を書くにあたっても本書籍は大いに役立つでしょう。
謝辞
本書籍の日本語翻訳版を公開するにあたり、今回も下記のたくさんの方々にサポートいただきました。本当にありがとうございました!
- こま(@koma_koma_d)さん
- 伊藤由貴(@yoshikiito)さん
- 浅黄友隆(@tom_asa)さん
- Tomoya Suzuki(@anchor_cable)さん
- てらひで(@terahide27)さん
- 山口鉄平(@teyamagu)さん
さいごに
繰り返しとなりますが、本書籍はテストシナリオの改善にも活用できるおすすめの本です。
内容も一部会話形式になっており、非常に分かりやすいと思いますので、興味のある方はぜひご購入の検討をお願いします!
*1:ちなみにDaniel Terhorst-Northは、BDDという言葉の提唱者です