UZABASE Tech Blog

株式会社ユーザベースの技術チームブログです。 主に週次の持ち回りLTやセミナー・イベント情報について書きます。

GaugeのConceptを用いてテストシナリオをより仕様書のように記述する

こんにちは!
SPEEDA日本事業部でテストエンジニアをやっている工藤です。

前回の記事から、大分時間が経ってしまいましたがGaugeシリーズの第二回目です。
第一回目の記事はこちらから

今回はGaugeの「Concept」について書きます。 Conceptsを利用することで「実行可能なドキュメント(executable documentation)」という考え方をより実現しやすくなります。

Conceptとは

Conceptとは、Gaugeが提供する複数のStepをまとめて1つのStepとして記述することができる機能です。
ビジネス上使用する言語を複数のStepを使用して表現することができます。
例えば「ログイン」と一概に言っても、自動テストのStepで表現しようとすると下記のようになります。

  1. ログインページにアクセスする
  2. ログインIDを入力する
  3. パスワードを入力する
  4. ログインボタンをクリックする

Conceptを利用すると、上記4Stepを下記の1Stepにまとめることができます。
Specファイルの見た目上は1Stepになりますが、裏側では上記の4Stepが実行されます。

  • ログインする

Conceptの使い方

Conceptの定義の仕方ですが、まず .cpt ファイルをspecsディレクトリに作成します。
Conceptの定義に必要な記述は以下の2つになります。

  • Concept header
  • Step

Concept headerは以下のように文頭に # をつけて表現します。
# This is a concept header
Stepの記述方法は通常のテストシナリオと同じです。

以下に具体的な使用例を挙げます。
login.cptにConceptを定義します。

# Login as user A and go to page B // Concept header
* Login as user "user_a" and password "password" // Step1
* Navigate to page "B" // Step2

上記で定義したConceptはどのSpecファイルからでも利用することができ、通常のStepのように利用することができます。Conceptを利用するときは、cptファイルに定義したConcept headerで呼び出すことができます。

pageNaviagetion.spec

# Page Navigation Specification
## users can go to page B
* Login as user A and go to page B // Concept headerで呼び出す

特にStepを再利用可能なように細かい単位で書いている場合、Stepだけだと手順を羅列しているだけになってしまい仕様書のような形にするのが難しいです。
そんなときにConceptを利用することで、Step単体の再利用性を損なわずにSpecファイルの可読性を上げることができます。
例えば、下記のようなStepのみで記述されたシナリオがあったとします
login.spec

## 日本ユーザでログインした場合、TOP画面が日本語で表示される
* ログインIDに"japan_user"を入力する
* パスワードに"password"を入力する
* ログインボタンをクリックする
* TOP画面が表示される
* 言語で日本語が選択されている
* TOP画面の表記が日本語になっている

これだと手順の羅列のようになっていて、仕様書のような記述になっていません。 そこでConceptを下記のように定義します。
loginStep.cpt

# 日本語ユーザでログインすると
* ログインIDに"japan_user"を入力する
* パスワードに"password"を入力する
* ログインボタンをクリックする

# TOP画面が日本語で表示される
* TOP画面が表示される
* 言語で日本語が選択されている
* TOP画面の表記が日本語になっている

上記のConceptを利用すると、Specファイルを下記のように書き換えることができます。 より仕様のようになり、可読性も上がりました。
login.spec

## 日本ユーザでログインした場合、TOP画面が日本語で表示される
* 日本語ユーザでログインすると
* TOP画面が日本語で表示される

以下のようにConceptの中でConceptを使うこともできます。

# 日本語ユーザでログインすると、TOP画面が日本語で表示される
* 日本ユーザでログインすると
* TOP画面が日本語で表示される

HTMLレポート上のConceptの表示のされかた

Conceptを紹介するとよく聞かれるのが、下記のような質問です。

  • HTMLで出力されるレポートにはどう表示されるのか?
  • Conceptの定義(実際に実行しているStep)をHTMLレポート上で見れるのか?

上記のような点もGaugeのHTMLレポートはちゃんと考えられていて、下記画像のようにConceptは展開することができて、どんな手順が実行されているか確認することができます。

HTMLレポ―トの表示(Conceptが閉じた状態) f:id:kudogen:20180605115845p:plain

Conceptを展開したときの表示 f:id:kudogen:20180605115854p:plain

Conceptまとめ

  • 複数のStepをまとめて1つのStepとして扱える
  • Conceptを使用すると、SpecファイルでのStepの記述量が減らせる
  • SPEEDA開発ではテストシナリオの記述をより仕様書のようにし、可読性をあげるためにConceptを利用している

さいごに

SPEEDA開発チームでは現在テストエンジニアを絶賛募集中です。 少しでもご興味のある方は、こちらからご連絡ください。