Appiumを使用して複数のデバイスで同じスクリプトを実行する方法

モバイルアプリケーションの自動化テストは、しばらく前から存在しています。初期の頃は、自動化テストスイートを持つことは贅沢とされていました。しかし今では、DevOpsの重要な一部となっています。

自動化テストには多くの利点がありますが、以下の三つが最も重要です:

  • テストカバレッジの向上: 自動化テストにより、より短時間で多くの機能をテストすることができます。これにより、テスト予算を増やさずにテストカバレッジを増やすことができます。
  • ヒューマンエラーのリスクの軽減: 自動化テストは、アプリを手動でテストする際に見逃されがちなエッジケースや他のエラーを見逃す可能性が低くなります。
  • フィードバックの迅速化: 自動化テストは手動テストよりもはるかに速く実行できます。これにより、アプリに関するフィードバックをより早く得ることができ、問題が大きくなる前に修正するのに役立ちます。

モバイルアプリケーションの自動化テストは、より高品質のアプリをより短時間でリリースするのに役立つ貴重なプロセスです。

しかし、問題はあなたがアプリケーションをテストするために十分なデバイスをカバーしており、最高の品質を保証しているかどうかにあります。単一デバイスや複数のデバイス上でアプリケーションをテストすると、デバイス固有の問題、異なる解像度でのUI問題、以及び異なるOSバージョン間の機能的問題が発生する可能性があります。

何故複数のデバイス上で同じスクリプトを実行することが重要ですか?

複数のデバイス上でアプリケーションのテストは、品質保証プロセスの重要なステップです。アプリケーションが異なるデバイス、OSのバージョン、画面サイズで動作することを確認する必要があります。

複数のデバイスでアプリケーションをテストする理由はたくさんあります。最も重要な理由の一つは、ユーザーが同じアプリにアクセスするために異なるタイプのデバイスを使用することです。ユーザーがどのデバイスを使用してアプリにアクセスするか予測できないため、それが動作することを確認する必要があります。これにより、複数のデバイス上で自動化スクリプトを簡単に実行できます。

Appiumを使用して複数のデバイスで同じスクリプトを実行する方法は何ですか?

Appiumスクリプトを実行する際には、Appiumの希望的能力を渡す必要があります。これには、platformName、platformVersion、deviceNameが含まれます。

{
"platformName": "iOS",
"platformVersion": "11.0",
"deviceName": "iPhone 9",
"automationName": "XCUITest",
"app": "/path/to/my.app"
}

Copied

他のデバイスでテストスクリプトを実行するには、テストスクリプトの希望機能を変更する必要があり、それが特定のデバイス上でテストスクリプトを実行します。異なるデバイスにテストスクリプトを実行するためには、テストスクリプトを変更する必要はない。しかし、AndroidとiOSデバイス上でのテストスクリプトの実行は、要素の位置を特定するための情報が異なるため、より異なる場合があります。しかし、AndroidやiOSのどちらのデバイスにも書かれたスクリプトは、希望機能を変更することで、同じOSを持つ全てのデバイスに実行できます。

複数のデバイスを管理する課題

テストスクリプトを複数のデバイスで実行することは、自動化テストプロセスにおいて簡単なことですが、これらのデバイスを管理することと、複数のデバイスを所有することは、自動化プロセスにおいて最も困難で、コストのかかる課題です。iPhoneについてだけを考えると、iPhone6からiPhone13までがあり、これらはiOS11からiOS16を使用しているユーザーによって使用されています。また、Androidについては、これらの数は大幅に増えました。あるチームは、市場に出ているすべての人気のあるデバイスを異なるOSバージョンで管理もしくは所有することはできません。

エミュレータ/シミュレータを代替手段として

まず、私たちの頭に浮かぶのは、異なるデバイスにエミュレーターとシミュレーターを使用してこの問題を解決することです。しかし、エミュレーター/シミュレーターでのテストは、実際のデバイスでのテストとは異なります。エミュレーターやシミュレーターは近似するだけであり、実際のデバイスと同じように機能することはできません。なぜなら、エミュレーターは実際のデバイス上で行われるすべての環境的な要因、機能、またはユーザーの行動を考慮することができないからです。実際のデバイスの利点は名前自身にあります。実際の、物理的なデバイスでのテストは、あなたの用户が彼らのデバイスを操作する同様の方法でテストすることを意味します。

実際のデバイスでのテスト:利点

ここで、BrowserStackはデバイスの混乱を解消するために現れます。BrowserStack App Automateは、デバイスのすべての人気のOSバージョンで、Appiumを使用してアプリケーションの自動テストを提供します。BrowserStackを簡単にあなたのフレームワークに統合することで、複数のデバイスにあなたのスクリプトをテストすることができます。

AppiumスクリプトをBrowserStackを使用して複数のデバイス上で実行する

App Automateを使用してBrowserStack上で複数のデバイスにテストスクリプトを実行することは非常に手間のかからない。設定を変更するためのいくつかの手順に従えば、既存のテスト自動化をBrowserStackと統合することができます。

ステップ2: .apkまたは.ipaファイルをBrowserStackにアップロードします。これはダッシュボード上の「アップロード您的App」を使用するか、自動的にアップロードするためにBrowserStack API を使用することで行います。アプリケーションをアップロード後、App URLを取得します。

{
"app_url":"bs://f7c874f21852ba57957a3fdc33f47514288c4ba4"
}

Copied

手順3:テストするアプリケーションをapp機能を使用して指定してください。この機能を設定するには、アプリのアップロード時(手順2)に返されたapp_urlの値を使用してください。

  • テストする真实なAndroidまたはiOSデバイスをdevice機能を使用して指定してください。
  • Appiumドライバーを初期化するために、手順1で提到的BrowserStackのアクセス情報と一緒に、リモートBrowserStack URLを使用して以下のようにしてください:

https://YOUR_USERNAME:[email protected]/wd/hub

これが以下のようになります:

userName = "YOUR_USERNAME"
accessKey = "YOUR_ACCESS_KEY"
desired_caps = { "build": "Android",
"device": "Samsung Galaxy S8 Plus",
platformVersion": "11.0",
"app": "<app_url>"
}
driver = webdriver.Remote("https://" + userName + ":" + accessKey +
"@hub-cloud.browserstack.com/wd/hub", desired_caps)

Copied

これにより、AppiumスクリプトがBrowserStackのクラウド上の真のデバイスで実行を開始します。

デバイスを簡単に変更するには、desired capsでその名前とプラットフォームのバージョンを変更します。BrowserStackでは、並列にテストを実行することもできますので、自動化をより早く完了させることができます。BrowserStackはデバッグのためにビデオ、デバイスログ、ネットワークログ、Appiumログを提供し、テスト実行状況はダッシュボードで確認できます。BrowserStackは複数のデバイスでテストスクリプトを実行することをサポートしており、これらのデバイスを自分で管理する必要はありません。

結論に言って

BrowserStackのApp Automateは、複数の実機でのテストを簡単にします。Desired Capabilitiesを変更するだけで、ユーザーは数千のデバイスで簡単にテストを実行し、アプリケーションのリリース準備が整っているかどうかを体系的に判断できます。QAチームは、結果ダッシュボードを使用して問題を瞬時に見つけてデバッグするのが簡単になります。

Appiumテストを無料で実行

Source:
https://www.browserstack.com/guide/how-to-run-same-script-in-multiple-devices-using-appium