この記事は「Reqnroll × Playwrightで始めるE2Eテスト入門」シリーズの一部です。
Reqnrollとは?SpecFlowとの違いと特徴を解説
.NET環境でBDD(Behavior Driven Development)によるテストを書く場合、
これまでは SpecFlow が広く利用されてきました。
しかし最近では、SpecFlowの後継的な存在として Reqnroll が登場し、
.NETのBDDテストツールとして注目されています。
本記事では次の内容を解説します。
- Reqnrollとは
- BDDとは何か
- SpecFlowとの違い
- Reqnrollの特徴
- どのようなプロジェクトで使うべきか
Reqnrollとは
Reqnrollは .NET向けのBDDテストフレームワークです。
BDD(Behavior Driven Development)に基づき、
自然言語に近い形式でテストを書くことができます。
Reqnrollでは Gherkin構文を使用してテストシナリオを記述します。
例
Feature: Login
Scenario: ログイン成功
Given ログインページを開く
When ユーザー名とパスワードを入力
And ログインボタンをクリック
Then マイページが表示されるこのように 仕様書に近い形でテストを書くことができるのが特徴です。
BDD(Behavior Driven Development)とは
BDDとは **Behavior Driven Development(振る舞い駆動開発)**の略です。
システムの振る舞い(Behavior)をベースにして
テストや仕様を記述する開発手法です。
BDDでは次のような特徴があります。
- 仕様を自然言語に近い形で記述できる
- 開発者と非エンジニアが理解しやすい
- テストと仕様を統一できる
そのため、BDDは次のような場面でよく利用されます。
- E2Eテスト
- 受け入れテスト
- UIテスト
Reqnrollの基本構成
Reqnrollでは主に次の3つの要素を使用します。
| 要素 | 役割 |
|---|---|
| Featureファイル | テストシナリオを書く |
| StepDefinition | テスト処理を書く |
| テストコード | 実際の処理 |
構成イメージ
Featureファイル
↓
StepDefinition
↓
テストコード(C#)Featureファイルの内容を
StepDefinitionのC#コードで実装する仕組みです。
SpecFlowとは
SpecFlowは .NET向けBDDフレームワークとして長く使われてきたツールです。
Gherkin構文を使い、
自然言語でテストを書くことができます。
多くの.NETプロジェクトで利用されてきました。
しかし最近は SpecFlowの開発状況が変化し、
その後継として Reqnroll が登場しました。
ReqnrollとSpecFlowの違い
ReqnrollとSpecFlowの主な違いをまとめると以下の通りです。
| 項目 | Reqnroll | SpecFlow |
|---|---|---|
| ライセンス | オープンソース | 一部機能が商用 |
| 開発状況 | 活発 | 縮小傾向 |
| コミュニティ | 拡大中 | 既存ユーザー多数 |
| 互換性 | SpecFlowと互換あり | ー |
Reqnrollは SpecFlowと高い互換性があるため移行が比較的簡単です。
Reqnrollの特徴
Reqnrollには次の特徴があります。
SpecFlowとの互換性が高い
Reqnrollは SpecFlowと互換性がある設計になっています。
そのため
- Featureファイル
- StepDefinition
などを大きく変更せずに移行できる場合が多いです。
完全オープンソース
Reqnrollは 完全オープンソースとして開発されています。
そのため
- 商用利用可能
- 制限が少ない
というメリットがあります。
.NETとの相性が良い
Reqnrollは.NET向けに設計されているため
- Visual Studio
- .NET
- C#
などと簡単に統合できます。
Playwrightと組み合わせたE2Eテスト
Reqnrollは E2Eテストツールと組み合わせて使用することが多いです。
例えば Playwright と組み合わせると、
ブラウザ操作を自動化したテストを作ることができます。
構成イメージ
Featureファイル(Reqnroll)
↓
StepDefinition(C#)
↓
Playwright
↓
ブラウザ操作この構成により 読みやすく保守しやすいE2Eテストを作ることができます。
Playwrightについては以下の記事で解説しています。
→ Playwrightとは?Seleniumとの違いをわかりやすく解説
Reqnrollはどんなプロジェクトに向いている?
Reqnrollは次のようなプロジェクトで利用されることが多いです。
- .NETアプリケーションのテスト
- E2Eテスト
- UIテスト
- 受け入れテスト
特に Playwrightなどのブラウザ自動化ツールと組み合わせたE2Eテストでよく利用されます。
まとめ
本記事では ReqnrollとSpecFlowの違いについて解説しました。
ポイント
- Reqnrollは.NET向けBDDテストフレームワーク
- Gherkin構文でテストを書くことができる
- SpecFlowと高い互換性がある
- 完全オープンソース
.NET環境でBDDテストを導入する場合、
Reqnrollは有力な選択肢の1つです。
