Slide 1

Slide 1 text

Kotlinで始めるBDD 2021/09/22 西山浩太郎

Slide 2

Slide 2 text

自己紹介 ● @westmountain37 ● 株式会社ニューズピックス ● Kotlin / Java / Python / インフラ ● 最近の興味はFlutter 西山浩太郎 2

Slide 3

Slide 3 text

Mission & The 7 Values 経済情報で、世界を変える We guide business people to insights that change the world 私たちは、世界中で愛される経済情報インフラをつくります。 あらゆる経済情報を人とテクノロジーの力で整理・分析・創出し、 ビジネスパーソンの生産性を高め、創造性を解放します。 私たちは経済情報を通じて世界中の意思決定を支え、世界を変えます。 Mission 3

Slide 4

Slide 4 text

経済情報プラットフォーム 金融機関、事業会社向けに世界中の企業財務データ、業界レポート、市場データ、 M&A情報 など、企業戦略の分析や策定に必要な情報を提供 経済ニュースメディア(日本市場向け) 国内外100メディアのニュースのほか、 NewsPicks編集部のオリジナル記事・動画コンテン ツを配信し、業界人や専門家のコメントと併せて閲覧可能 B2Bマーケティングプラットフォーム ユーザベースグループの企業データベースと顧客の内部データを統合し、データ 分析に基づいて成約確度の高い企業を特定。 ABM(アカウント・ベースドマーケティング)の実 践を支援 スタートアップ情報プラットフォーム スタートアップの事業概要、資金調達、投資家、提携先、オリジナル記事などをワンストップで提供 コンサルティング事業 法人向けに新規事業開発・次世代 ⼈材育成・組織活性化の推進及びユーザベースグループの SaaSサービスの導入を支援 ベンチャーキャピタル事業 シードからアーリーステージの SaaSとメディア関連のスタートアップに特化して投資 What we do 4

Slide 5

Slide 5 text

はじめに Cucumberについて demo まとめ 01 02 03 04 5 目次

Slide 6

Slide 6 text

01 | はじめに

Slide 7

Slide 7 text

01 | はじめに 7 BDDとは? BDDの流れ 1. まず新機能の具体的な例を話して、その機能で期待していることの詳細を探り、 合意する 2. 次に、それらの例を自動化できる方法で文書化し、一致するか確認する。 3. 最後に、文書化された各例で記載されている動作を実装し、コード開発の指針と なる自動テストから始める。 「 Behavior Driven Development」の略。ソフトウェア開発の手法の一つで、開発者 と開発者以外の間のギャップを埋めるためのもの。 似たようなものにATDDやTDDがある。 はじめに

Slide 8

Slide 8 text

01 | はじめに 8 BDDを導入した背景 はじめに ● 決済機能のマイクロサービス化をするにあたり、テスト方法が課題に ● 決済機能なのでテストケースが膨大で管理もしづらい ● 異動や新入社員が増え、開発方法に工夫が必要に

Slide 9

Slide 9 text

02 | Cucumberについて

Slide 10

Slide 10 text

02 | Cucumberについて 10 概要 ● BDDをサポートするためのツール。 ● Gherkin記法でテストシナリオを記述し、実行できるツール。 ● Java, Ruby など、さまざまな言語をサポート Cucumberとは?

Slide 11

Slide 11 text

02 | Cucumberについて 11 概要 featureファイルにテストシナリオを書き、stepファイルにテストケース実行時に動 くコードを実装する。 Cucumberとは?

Slide 12

Slide 12 text

Cucumberとは? 02 | Cucumberについて Gherkin記法 ● Feature ● Scenario / Scenario Outline ● Given / When / Then / And / But ● Background 12

Slide 13

Slide 13 text

Cucumberとは? 02 | Cucumberについて Gherkin記法 ● Feature ● Scenario / Scenario Outline ● Given / When / Then / And / But ● Background 13

Slide 14

Slide 14 text

Cucumberとは? 02 | Cucumberについて Gherkin記法 ● Feature ● Scenario / Scenario Outline ● Given / When / Then / And / But ● Background 14

Slide 15

Slide 15 text

Cucumberとは? 02 | Cucumberについて Gherkin記法 ● Feature ● Scenario / Scenario Outline ● Given / When / Then / And / But ● Background 15

Slide 16

Slide 16 text

Cucumberとは? 02 | Cucumberについて Stepファイル ● 今回はSpringのmockMvcを使用してAPIのテストを 記述している ● 画面のUIテストに使用する場合、Seleniumを使うこ とが多い 16

Slide 17

Slide 17 text

Cucumberとは? 02 | Cucumberについて 実行結果 ● 設定すると https://reports.cucumber.io/reports/~~ にテスト レポートが公開される ● localにhtmlを出力することも可能 17

Slide 18

Slide 18 text

02 | Cucumberについて 18 BDDの開発の流れ 1. 受け入れ条件を元にfeatureファイルを作成 2. テストを実装(この時点では失敗する) 3. 処理の実装 4. Cucumberのテストが成功することを確認 Cucumberとは?

Slide 19

Slide 19 text

03 | demo

Slide 20

Slide 20 text

04 | まとめ

Slide 21

Slide 21 text

04 | まとめ 21 メリット ● 大胆なリファクタリングをしても仕様が変わらないことを担保できる ● これまでスプレッドシートで管理していたケースが自動化された ● 動作確認する時間が減り、逆に開発スピードが上がった ● local環境で簡単にテストデータを用意できるようになった ● シナリオがまとまっているので、システムの理解がしやすい デメリット ● 慣れるまで多少時間がかかる ○ テストの書き方 ○ 併用するツールの使い方(Seleniumなど) まとめ

Slide 22

Slide 22 text

22 ご静聴ありがとうございました!

Slide 23

Slide 23 text

04 | まとめ 23 参考資料 ● https://cucumber.io/ ● Kent Beck 『テスト駆動開発』. 和田 卓人 まとめ