AppiumとSelenium以外の自動化フレームワーク 

あるチームは、同じスプリントでReact Nativeアプリとマーケティングサイトをリリースした。モバイルスイートはEspressoとXCUITestで動作し、ウェブスイートはPlaywrightで動作する。どちらのチームもAppiumやSeleniumのコードを一行も書かなかった。それはこれらのツールが役に立たなかったからではなく、そもそもどちらのチームもクロスプラットフォームのブリッジを必要としなかったからだ。 

テスト自動化の概念が「モバイルにはAppium、WebにはSelenium」で終わってしまうとしても、それは間違いではありません。ただ、多くのQAチームが現在密かに運用している他のフレームワーク群を見落としているだけです。ここでは、チームのアプリ開発ポートフォリオが基本的な段階を超えた際に、AppiumとSeleniumと並んで登場するフレームワークと、それぞれのフレームワークが実際にどのような場面でその役割を果たすのかを、実践的な視点から解説します。 

2つの枠組みに基づくメンタルモデルが行き詰まる理由 

AppiumとSeleniumが名声を得たのには理由があります。ほぼすべてのモバイルアプリやブラウザを駆動できる単一のWebDriverベースのプロトコルは、特に開発初期段階では非常に有用です。問題は、アプリポートフォリオが成熟するにつれて顕在化します。ネイティブのiOSとAndroidのビルドは乖離し、Webフロントエンドは高速で不安定な自動化を前提としたコンポーネント中心のフレームワークに移行し、テストスイートは「テストの実行」と「テストの整理」が別々の問題となるほど大規模になります。これらの問題は、より優れたWebDriverクライアントを見つけることで解決できるものではありません。フレームワークをレイヤーに合わせて調整することで解決できるのです。 

Playwright:現代のウェブアプリの実際の動作に合わせて設計されています 

Playwrightはブラウザエンジンに対して直接自動化を行う ― Chromium、Firefox、WebKit ― は、すべてのアクションを WebDriver サーバー経由でルーティングするのではなく、シングルページ アプリケーションをテストするチームにとってデフォルトの推奨事項となっている大きな理由の一つです。要素の自動待機、テストごとの分離されたブラウザ コンテキスト、組み込みのネットワーク インターセプトにより、以前は Selenium の上にカスタムの再試行ロジックが必要だった不安定性の問題が解決されます。 Digital.ai テストでは、Playwright プロジェクトが現在のフレームワーク バージョン全体でネイティブに実行されるため、Selenium から移行するチームはプラットフォームを再構築する必要はありません。 劇作家の処刑記録 セットアップ用。 

Cypress:フロントエンド優先の代替案 

CypressはPlaywrightのクロスブラウザ対応範囲の一部を犠牲にして、より緊密な開発者体験を実現している。 リアルタイムリロード、あらゆるステップでDOMを検査できるタイムトラベルデバッガー、そしてフロントエンドエンジニアが従来のWebDriverスクリプトよりも早く習得できるテスト記述モデルを備えています。テストを書く人とテスト対象のReactまたはAngularコンポーネントを書く人が同じチームに最適です。Cypressは、 Digital.ai 他のすべてと同じブラウザ群に対してテストしています。詳細は Cypressのドキュメント. 

WebdriverIO:1つのAPI、2つのプロトコル 

WebdriverIOは、SeleniumやAppiumを完全に置き換えるものではなく、むしろそれらの上に構築されているため、見落とされがちです。 これにより、チームはブラウザに対するSeleniumセッション、またはモバイルアプリに対するAppiumセッションを実行できる、単一の最新のJavaScript APIを利用できるようになります。これは、プロトコルごとに別々のコードベースを維持するのではなく、Webとモバイル全体で単一の言語とテストランナーに標準化しようとしている組織にとって最も重要なことです。 Digital.ai テストは、WebdriverIO の Selenium および Appium 実行パスの両方をサポートしています。 WebdriverIO統合に関するドキュメント それぞれの設定について。 

XCUITestとEspresso:ネイティブがクロスプラットフォームに勝る時 

Appiumの最大の強みである「両方のモバイルプラットフォームで共通のプロトコルを使用する」という点は、スイートが一方のプラットフォームでより詳細な処理を行う必要が生じた場合、最大の制約にもなります。 XCUITest(Apple独自のフレームワークで、Xcodeに組み込まれている)とEspresso(Googleのフレームワークで、Android Studioに組み込まれている)は、自動化ブリッジを完全にスキップし、独自のプロセス内からアプリを駆動します。これにより、Appiumでは回避できない間接的なレイヤーが取り除かれ、クロスプラットフォームドライバではアクセスに手間がかかるプラットフォーム固有のインタラクション(高度なジェスチャー処理、アニメーション、OSレベルの権限ダイアログなど)において、より高速で不安定さの少ない実行が可能になります。成熟したチームのほとんどは、どちらか一方を選択するのではなく、クロスプラットフォームのスモークカバレッジにはAppiumを、より詳細なプラットフォーム固有の回帰テストスイートにはXCUITestまたはEspressoを使用します。 Digital.ai テストは実際のデバイスクラウドの両方で実行されます。 XCUITest (NAIST) と エスプレッソ 実行計画文書。 

Maestro: YAML ファースト方式 

Maestroはコードを一切使用せず、フローはJava、Swift、JavaScriptではなく、プレーンなYAMLで記述されるため、自動化エンジニアではない人でもUIテストを作成できます。 これは、アニメーションや読み込みの遅延に対する耐性を組み込んだオープンソースのフレームワークであり、Appiumスクリプトを脆弱にする手動の待機・再試行ロジックを削減します。 Digital.ai テストでは、Maestro サポートが追加されました。 26.7リリース既存の Maestro フローをクラウド上の実際の Android デバイスとシミュレートされた Android デバイスで変更せずに実行し、Appium、Espresso、および XCUITest スイートと並行して、他のすべての実行タイプと同じデバイス予約、ビデオ録画、およびレポート機能を提供します。 Maestro統合に関するドキュメント バンドル形式と設定について。 

習慣ではなく、アプリのレイヤーごとに選択してください。 

これらはAppiumやSeleniumを廃止すべきだという主張ではありません。どちらも、クロスプラットフォームのモバイルツールやクロスブラウザツールを1つだけ必要とし、それ以上のメンテナンスを必要としないチームにとっては、依然として最適なデフォルトツールです。上記のフレームワークが真価を発揮するのは、それらが解決する特定の問題に直面した場合のみです。例えば、最新のSPAでSeleniumの不安定さがボトルネックになった場合はPlaywrightやCypress、両方のプロトコルで1つのJS APIが必要な場合はWebdriverIO、1つのプラットフォームで詳細なテストスイートが必要な場合はXCUITestやEspresso、YAMLフローによってテスト作成のハードルが下がった場合はMaestroなどが挙げられます。 

チームが複数のフレームワーク(例えば、Web開発にはPlaywright、iOS開発にはXCUITestなど)を導入する場合、それは意図的なインフラストラクチャ上の決定であり、無償アップグレードではありません。5つのフレームワークを導入するということは、5つの構文、5つのCI構成、そしてバージョンアップによってスイートが予期せず壊れてしまう可能性のある箇所が5つ存在することを意味します。プラットフォームが真に乖離している場合にのみ導入する価値はありますが、単に最新版を追いかけるためだけに導入する価値はありません。 

Digital.ai Testing Cloudは上記のすべてのフレームワークをサポートしているため、チームが複数のフレームワークを組み合わせる必要がある場合でも、実行インフラストラクチャが障害となることはありません。 

出典と参考文献 

Digital.ai テスト:劇作家 — https://docs.digital.ai/continuous-testing/docs/te/test-execution-home/web-desktop-browsers/playwright 

Digital.ai テスト:サイプレス — https://docs.digital.ai/continuous-testing/docs/te/test-execution-home/web-desktop-browsers/cypress 

Digital.ai テスト: WebdriverIO — https://docs.digital.ai/continuous-testing/docs/te/test-execution-home/integrations/frameworks/webdriverio 

Digital.ai テスト: XCUITest 実行計画 — https://docs.digital.ai/continuous-testing/docs/te/test-execution-home/mobile-android-and-ios/xcuitest-and-espresso/execution-plan-using-xcuitest 

Digital.ai テスト:エスプレッソ実行計画 — https://docs.digital.ai/continuous-testing/docs/te/test-execution-home/mobile-android-and-ios/xcuitest-and-espresso/execution-plan-using-espresso 

Digital.ai テスト:Maestroとの統合 — https://docs.digital.ai/continuous-testing/docs/te/test-execution-home/integrations/third-party-integrations/maestro-integration

 

 

 

お勧めの関連ガジェット