フロントエンド エンジニアは、エンド ツー エンドのテストでは自信が持てないと思うかもしれません。Pactflow のチームも、この点については他人事ではなく、過去に悲惨な出来事を目にしてきました。
このブログでは、エンド ツー エンドの UI テストでコントラクト テストを使用する新しい方法を紹介します。これにより、自信を持って展開できるようになり、テスト スイートの保守にかかる時間や未知のエラーの発見に頭を悩ませる時間が減ります。
Pactflow は、テストをより簡単にする方法を常に模索しています。2020 年には、Cypress でコントラクト テストを開始できるホスト スタブを発表しました。現在、Pact Cypress Adapter では、Cypress で作成した既存のモックを使用して、簡単に追加レイヤーを取得できます。
現状: 最も一般的な UI のテスト方法は?
UI をテストする最も一般的な方法の 1 つは、エンド ツー エンド テストを使用することです。エンド ツー エンドの UI テストは、エンド ツー エンドのユーザー操作を通してアプリケーションの機能とパフォーマンスをテストし、ユーザー インターフェイスが期待通りに動作することを確認します。
しかし、皆さんは、次のような経験をしたことはありませんか?
- 現在のテスト プロセスを信頼できないため、自信を持って新機能を展開できない
- 信頼性の低いエンド ツー エンド テストで時間を無駄にしているように見える
- 自分 (またはビジネス) が望むほど迅速に行動できない
- 重複したテストを作成してしまった
- 失敗したエンド ツー エンド テストのデバッグに苦労している
考えられる解決策: コントラクト テストを UI テストで使用できるか?
コントラクト テストを UI テストで使用できるかどうかについては、これまで多くの議論が重ねられてきました。Pact OSS コミュニティでは、フロントエンド開発者と QA がこの質問を幾度となく繰り返してきました。苦労して学んだ教訓として、現在、Pact を使用したコントラクト テストは UI テストには推奨しません。
関連情報: 従来の コンシューマー主導のコントラクト テストが UI テストに適していない理由
UI のコントラクト テストの再考 — Cypress など、既存ツールを使用する方法
コントラクト テストを UI に使用する際の主な障壁は、ブラウザー環境の脆弱性と、保守、デバッグ、および実行のコストが高いことです。
Pactflow の画期的な新機能である双方向コントラクト テストは、これを克服し、開発者や QA が Pact のみでコンシューマー コントラクトを生成せず、Cypress などの既存のツールをコントラクト テストに使用できるようにします。
Cypress は、ブラウザー環境でエンド ツー エンドの UI テストを実行できる、私のお気に入りの UI テスト ライブラリの 1 つです。便利な機能と API が提供されているため、開発者や QA は展開について心配することなく、テストを作成して UI をデバッグできます。
「Cypress のセットアップの容易さと、信頼性が高く、強力なコントラクト テストを組み合わせることができたら素晴らしい」と皆さんも思っておられるでしょう。
Pactflow はコミュニティの声に耳を傾け、Pact コントラクト テスト用の Cypress Adapter を開発しました。これを使用することで、開発者や QA は、エンド ツー エンドのユーザー エクスペリエンスをテストしながら、コンシューマーとプロバイダー間の互換性をテストできます。そして、テストの重複を減らし、テスト スタックの効率と開発者エクスペリエンスを向上できます。
Pact Cypress Adapter の使用方法
新しい Pact Cypress Adapter を使用すると、すでに作成した Cypress ネットワーク スタブをオン ザ フライで Pact ファイルに変換できます。これはすべて、Pactflow 独自の双方向コントラクト テスト機能によって可能になります。したがって、Pact テストをゼロから作成する必要はありません。アダプターを使用して既存の Cypress テストを再利用するだけで、コントラクト テストを開始して実行したり、プロジェクトのスケールアップにかかる時間を最小限に抑えることができます。
Cypress テストから生成されたコンシューマー Pact ファイルを使用して、Pactflow はプロバイダーの OpenAPI 仕様を介してクロスコントラクトの検証を完了し、展開前に重大な変更を防ぐことができます。
Cypress テストでコントラクト テストを開始することに関心がある場合は、Pactflow のドキュメントと Cypress コンシューマー サンプル プロジェクトにアクセスして詳細を確認してください。
コントラクト テストを行うその他の方法
Pactflow は、コントラクト テスト向けの追加の API 仕様とアダプターを検討しています。
Pactflow のロードマップから追加してほしいアダプターに賛成票を投じるか、Pact Slack ワークスペースの #pactflow チャネルに投稿してディスカッションを開始してください。
Pactflow 製品に関するお問い合わせは、こちら。
この資料は、Pactflow の Web サイトで公開されている「New Adapter: Use Cypress in Contract Testing」の日本語参考訳です。