この記事は「Reqnroll × Playwrightで始めるE2Eテスト入門」シリーズの一部です。
ReqnrollのFeatureファイルの書き方(BDD入門)
Reqnrollでは、Featureファイルを使ってテストシナリオを文章形式で記述します。
この書き方は BDD(Behavior Driven Development) と呼ばれ、ユーザーの行動をベースにテストを書く方法です。
この記事では、Reqnrollで使用する Featureファイルの基本的な書き方を解説します。
この記事でわかること
- Featureファイルとは何か
- Given / When / Then の意味
- Featureファイルの基本構文
- 実際のサンプルコード
Featureファイルとは
Featureファイルとは、テストシナリオを文章で書くファイルです。
ファイルの拡張子は次の通りです。
.feature
例
Login.feature
Featureファイルでは Gherkin(ガーキン)構文を使います。
Featureファイルの基本構造
基本構造は次のようになります。
Feature: 機能名
Scenario: テストシナリオ
Given 前提条件
When 操作
Then 結果
この形式で ユーザーの操作と結果を記述します。
BDDの基本キーワード
Featureファイルでは主に次のキーワードを使います。
| キーワード | 意味 |
|---|---|
| Feature | テスト対象の機能 |
| Scenario | テストケース |
| Given | 前提条件 |
| When | ユーザーの操作 |
| Then | 期待される結果 |
| And | 追加の条件 |
簡単なサンプル
ログイン機能のテスト例です。
Feature: Login
Scenario: 正しい情報でログインできる
Given ログイン画面を開く
When メールアドレス "test@example.com" を入力する
And パスワード "password123" を入力する
And ログインボタンをクリックする
Then ダッシュボード画面が表示される
このシナリオでは次の処理を表しています。
- ログイン画面を開く
- メールアドレスを入力
- パスワードを入力
- ログインボタンをクリック
- ダッシュボード画面が表示される
Featureの書き方
Featureでは テスト対象の機能を書きます。
例
Feature: Login
もう少し詳しく書くこともできます。
Feature: ユーザーログイン
ユーザーがアプリにログインできることを確認する
Scenarioの書き方
Scenarioは 1つのテストケースです。
例
Scenario: 正しい情報でログインできる
1つのFeatureには 複数のScenarioを書くことができます。
Scenario: 正しい情報でログインできる
Scenario: パスワードが間違っている
Givenの書き方
Givenでは 前提条件を書きます。
Given ログイン画面を開く
これは「ログインページにアクセスする」という意味になります。
Whenの書き方
Whenでは ユーザーの操作を書きます。
When メールアドレス "test@example.com" を入力する
追加の操作は And を使います。
When メールアドレス "test@example.com" を入力する
And パスワード "password123" を入力する
Thenの書き方
Thenでは 期待される結果を書きます。
Then ダッシュボード画面が表示される
これは ログイン成功を確認するステップです。
パラメータを使う方法
Featureファイルでは パラメータを使うことができます。
When メールアドレス "test@example.com" を入力する
この "test@example.com" は StepDefinitionに渡されます。
StepDefinitionの例
[When(@"メールアドレス ""(.*)"" を入力する")]
public async Task EnterEmail(string email)
{
await _page.Locator("#email").FillAsync(email);
}このように FeatureファイルとC#コードが連携します。
Featureファイルのベストプラクティス
Featureを書くときは、以下のポイントを意識します。
ユーザー目線で書く
悪い例
ボタンをクリックする
良い例
ログインボタンをクリックする
実装の詳細を書かない
Featureファイルは 仕様を書く場所です。
悪い例
CSSセレクタ #login をクリック
良い例
ログインボタンをクリック
シナリオは短くする
1つのScenarioは 1つの目的にします。
例
ログイン成功
ログイン失敗
ReqnrollでFeatureが実行される仕組み
Reqnrollでは、次の流れでテストが実行されます。
Featureファイル
↓
StepDefinition
↓
Playwrightなどのテストコード
Featureファイルの文章と、C#のテストコードが結びつくことでE2Eテストが実行されます。
まとめ
Reqnrollでは、Featureファイルを使って BDD形式のテストシナリオを書くことができます。
Featureファイルの基本構造は次の通りです。
Feature
Scenario
Given
When
Then
この形式を使うことで、読みやすく分かりやすいテストシナリオを書くことができます。
