参加者の持ち寄りお菓子たち。ロールケーキの高級さよ・・・
Microservices Patterns 読書会のログです。
自己紹介のトピック
starwars.disney.co.jp ついにスターウォーズエピソード9が公開 予約サイトが過負荷で大変なことになっていた
hackday.jp 前日から 24 時間で何かをハック、審査会が公開される。 ゲスト審査員にわくわくさん。
対象範囲
10章の "Testing microservices: Part 2" でした。
主なトピックは以下。
- メッセージングでやりとりするサービスのインテグレーションテスト
- コンシューマ契約駆動テスト
- pub/sub
- command/reply
- コンポーネントテスト
- Cucumber/Gherkin
- E2E テスト
- ユーザージャーニーテスト
議論
- 非同期リクエスト・レスポンス形式の説明自体に違和感
- それは pub/sub を 2 組用意してるだけなんじゃないか、という
- 特に答えもなくクローズ
- Gherkin とはなんぞや問題
- Cucumber で使用する DSL です see Gherkin Reference - Cucumber Documentation
- イギリスではきゅうりの酢漬けのことをガーキンと呼ぶらしい。see Pickled cucumber - Wikipedia
- Cucumber といえば Rails しか思いつかない問題
- Cucumber-jvm は盛り上がった記憶がある see GitHub - cucumber/cucumber-jvm: Cucumber for the JVM
Cucumber その後
- Jira とのインテグレーション。シナリオを Jira 課題に書いたり、Git に置いたシナリオファイルとリンクしたり。なんかよさそう。see BDD Tools for JIRA | Cucumber for JIRA
Guage 使ってます、という方もいた
- Open Source Test Automation Framework | Gauge
- Markdown 形式で書くっぽい、よさげ
そもそも契約と仕様をどう使い分けたいのか問題
- 契約:インテグレーションテストに登場したコンシューマー駆動契約テストの中心要素となる入出力の定義
- 仕様:コンポーネントテストに登場した Gherkin 記法で記述するシナリオ
- 契約の定義(ボディとかヘッダーとか)に仕様の内容(パラメータとか)を記述できるし、仕様の内容に契約の内容も記述できそう。
- どういう考え方で分担してるのか腑に落ちない。
- どこかで何かが漏れそう?大丈夫?
- インテグレーションテストはサービスの境界を契約として検証する。それ以上でもそれ以下でもない。
- コンポーネントテストはサービスの振る舞いを仕様として検証する。それ以上でもそれ以下でもない。
- E2E テストの説明に期待しましょう
「したがって、テスト自体の中からスタブを構成するのがより簡単なオプションです。」
- コンテキスト:「Spring Cloud Contract の生成するスタブを利用するよりは」
- 本当に簡単なのか
- そうは思えない
- アーティファクトとして管理されているほうが楽そう。
- (小声で:Mock として使うだけなら難しくはならないと思う。)
E2E テストに対する落胆
- コンテキスト:全部本物をデプロイする
- スタブがないと例外ケースをテストできなさそう
- (小声で:下位のテストで検証しているはずですから)
そもそも E2E テストでスタブを使ってる?問題
言葉の混乱
E2E テストで手法として採用しているユーザージャーニーテストについて
Givenに宣言した状態は信用できるのか- ユーザーストーリーなら
Whenの事後条件として検証している状態 Whenに対するThenを全て保証した状態になっているのか
- ユーザーストーリーなら
- コンポーネントテストで保証されているはず
- 再現性のない特殊な状態はスタブを用いるしかない
そもそもユーザージャーニーとユーザーストーリーの違いがわからん
- ファウラーさんの記事を読みましょう・・・ see Testing Guide