Gauge E2Eテストにおける setup
はじめに
E2Eテストのsetup方法について考える
※今回利用する環境はgague
です
setupの方法
大きく分けると今の所2つ
-
tag
による運用 - stepによる運用
tagによる運用
gauge
ではtag
を設定できるため、tag
を付与しテストに必要なデータをsetupする
specのイメージ
# Search Specification
The admin user must be able to search for available
products on the search page.
+ Tags: setup
* User must be logged in as "admin"
* Open the product search page
今回はsetup
というタグで進めていきます。
実際にこのタグをどう運用するかは様々なやり方があるため
ここではタグ情報を取得して、path
として利用する方法を記載していきます。
setup
先はwiremock
です。
実装イメージ
class SetupTest {
@BeforeScenario(tags = ["setup"])
fun setupMock(context: ExecutionContext) {
// 導出したファイル群をWireMockに登録する
ProductApiMock().reset()
ProductApiMock().setup(setupPath)
}
}
シナリオが実行される前にsetup
というタグが付与されていると実行されるSetupTest
関数
要するに、setup
タグを付与すれば、テストに必要なセットアップをするタグです。
Stepによる運用
gauge
にはStep
があるため、Step
でsetup
する方法
specのイメージ
# Search Specification
The admin user must be able to search for available
products on the search page.
+ * Hoge DB setup
* User must be logged in as "admin"
* Open the product search page
実装イメージ
@Step("Hoge DB setup")
fun setupDB(path: String) {
// 対象のデータを登録する実装
HogeDB.insert(setupPath)
}
所感
それぞれの運用をしてみた所感について
Tag運用の所感
前提として、タグによるsetup
がチームとして浸透していれば特段困らない
一方でStep
と違い、どこで何しているか探しにいくのが面倒な所ではある印象
Step運用の所感
Step
で表現することで、簡単にsetup
内容を確認しにいくことができる
tag
とは違いStep
で表現をする必要があり、tag
よりパッとみた時わかりにくい感がある
個人的にはtag
よりもStep
による運用が現状好みではある所
Step
の表現の仕方は工夫が必要ではあるが
やはりStep
でどこで何しているかすぐに追うことができる点で
認知不可も低く何をするStep
なのかわかりやすい。
Cucumber
などはGiven
,When
,Then
と表現して仕様を落とし込めるため
今回のような悩みは起きづらいかもなと
Feature: Guess the word
# The first example has two steps
Scenario: Maker starts a game
When the Maker starts a game
Then the Maker waits for a Breaker to join
# The second example has three steps
Scenario: Breaker joins a game
Given the Maker has started a game with the word "silky"
When the Breaker joins the Maker's game
Then the Breaker must guess a word with 5 characters
ここは好みの部分もあると思うので
仕様書としてシンプルで自由度高めに書きたい場合はgauge
を利用することはオススメ
setupまとめ
今の所それぞれ所感をまとめると
- 基本的には認知不可という観点以外は大きくメリデメは感じない
-
tag
運用をする場合は、認知不可を下げるためにもチームでtag
によるsetup
を前提とする運用にした方が良い -
Step
運用をする場合は、setup
の表現を工夫して運用をすべし
Discussion