ウェブとモバイルのテスト自動化ドライバーの比較と組み合わせ

最終更新日 2019年2月12日 — Continuous Testing 上級

ウェブとモバイルのテスト自動化ドライバーの類似点と相違点に焦点を当てます。 アピウムとセレン詳しくは続きをお読みください。

Webおよびモバイルテストの自動化に使用されるツールは数多くあります。機能、サポート対象プラットフォーム、利用規約はそれぞれ異なります。ここでは、AppiumとSeleniumの2つに絞って説明します。

開発者とテスターは、Web、ネイティブ、ハイブリッドモバイルアプリケーションの自動化にAppiumフレームワークを使用しています。Webアプリケーションの自動化にはSeleniumフレームワークが使用されています。また、SeleniumはJavaで記述されているのに対し、AppiumはJavaScriptで記述されています。一見異なるように見えますが、共通点が1つあります。AppiumとSeleniumは、ターゲットプラットフォームとの通信にwebDriverプロトコルを使用します。つまり、Appiumはモバイルデバイスと、SeleniumはWebブラウザと通信するということです。一般的に、Selenium webDriverスクリプトは、モバイルデバイスのブラウザとデスクトップブラウザの両方で実行でき、同じWebアプリケーションに対して同じアクションを実行できます。

ウェブとモバイルのテスト自動化ドライバーの違い

ウェブとモバイルの違い テスト自動化 ドライバーの決定的な要素は、機能、サポートされるプラットフォーム、そしてテストを実行するためのテストベンチの構成にあります。特にAppiumはHTTPサーバーとして機能し、Java、JavaScript、Python、C#、Rubyなど、複数のクライアントが用意されています。実際、AppiumクライアントはSelenium webDriverクライアントライブラリをラップしたものです。AppiumはSeleniumに加えて、モバイルデバイスとのやり取りに特化したwebDriver APIの拡張セットを使用します。例えば、Appiumには、マルチタッチジェスチャや画面の向きをサポートしたり、位置情報データを管理したり、デバイスログにアクセスしたりするためのコマンドなど、数多くのコマンドが含まれています。

Appiumサーバーは、Appiumユーザーにテスト対象デバイスの機能(テストセッション中のアプリケーションのインストールや削除など)を制御するためのアクセス権を提供します。Seleniumにも同じクライアント実装が存在します。ただし、分散テスト実行にはSeleniumサーバーが必要となるのは、Seleniumグリッドをインストールする必要がある場合のみです。

明確に言えば、Seleniumは主要なデスクトップオペレーティングシステムで実行される主要なブラウザをサポートしています。Appiumは、iOSとAndroidの公式にサポートされているバージョンに対して、さまざまなiOSおよびAndroidデバイスをサポートしています。さらに、AppiumはMS Windowsアプリケーションの自動化を提供できます。一方、AppiumとSeleniumのテスト用インフラストラクチャを構成するために必要な作業には違いがあります。Appiumのテストを実行するには、nodeJSをインストールし、Appiumをインストールし、SDKと特定のデバイスドライバーとフレームワークを構成する必要があります。Seleniumのテストケースでは、Selenium Gridに対してテストを実行するためにSeleniumサーバーをインストールしない限り、テストの開発と実行のための環境を構成する手順はそれほど多くありません。AppiumとSeleniumのスタック図を下の図に示します。

モバイルウェブ自動化に両方のフレームワークを使用する例

両フレームワークは共通の基盤を持っているため、上記のような違いはあるものの、Webテストとモバイルテストの自動化に併用することが可能です。モバイルブラウザでWebアプリケーションをテストする必要がある場合、AppiumとSeleniumの両方のフレームワークを使用でき、1つのテストで相互に補完し合うことができます。以下に、モバイルデバイスのAndroid ChromeブラウザでAmazon.comのサイトページを開く、GIT内の簡単なテストへのリンクを示します。

Android サンプルテスト。

テストコードでは、モバイルデバイス上のブラウザとやり取りするために、SeleniumとAppiumの両方のライブラリを使用しています。Appiumクライアントオブジェクトは、デバイスドライバーの初期化、Android Chromeブラウザの定義と制御に使用されます。Seleniumは「Desired capabilities」オブジェクトを定義するために使用されています。このオブジェクトは、デバイスドライバーとモバイルブラウザを制御し、Seleniumオブジェクト「By」を介してWebアプリケーション(テストではAmazon.comのウェブサイトを使用)とやり取りします。これらのオブジェクトを使用することで、モバイルブラウザのWeb要素にアクセスできます。

テストは SeeTestプラットフォーム – クラウドベースのプラットフォームは、開発やWebおよびモバイルテストの自動化に使用できる多数のブラウザとモバイルデバイスを提供しています。比較のために、 cloud.seetest.io Macプラットフォーム上のGoogle Chromeブラウザでウェブサイトのページを開き、ページ上のいくつかのリンクを見つけてクリックします。この場合、Seleniumオブジェクトのみが使用され、SeeTestクラウドプラットフォーム上のリモートブラウザを制御し、テストで指定されたアクションを実行します。テストのコードは、以下のリンクからご確認ください。

Chrome サンプルテスト。

2 番目のテストも SeeTest プラットフォーム上で実行され、実行できる状態になっています。 どちらのテストも ダウンロードコンパイルされ、起動されています。「mvn clean install」コマンドを使用してください。 両方のテストは SeeTest プラットフォーム上で実行されることになっているため、テストを起動する前に、SeeTest アカウントのアクセス キーをシステム変数に追加することを忘れないでください。

上記の最初の例は、AppiumとSeleniumの両方のテストを示しており、Webとモバイルのテスト自動化の一例です。これは、Webアプリケーションをデスクトップブラウザとモバイルブラウザの両方で実行する必要がある場合に発生し、これは今日ではよくあることです。

ネイティブモバイルアプリケーションの自動化にAppiumとSeleniumを使用する例

複数のモバイルおよびデスクトッププラットフォームで多様なブラウザをサポートする必要性に加え、現代のアプリケーションは、Web、デスクトップ、モバイルなど、複数の種類のクライアントを持つ場合があり、それらは多様なハードウェアプラットフォーム上の様々なオペレーティングシステム上で実行されます。QAエンジニアにとって、これは何よりも、ハードウェア、OS、ブラウザのあらゆる組み合わせでテストを実施する必要性を意味します。例えば、2つの異なるクライアントを使用する場合のユースケースとしては、モバイルクライアントのユーザーが何らかのアクションを実行し、Webクライアントの別のユーザーがそのアクションの結果を取得する場合、あるいはその逆の場合などが挙げられます。

一例として、異なるクライアントで確認する必要があるソーシャルネットワークの投稿が挙げられます。また、モバイルクライアントのユーザーがメッセージを送信し、Webクライアントのユーザーがそのメッセージを受信する、あるいはその逆のチャットも挙げられます。テストケースの観点からは、モバイルクライアントとWebクライアントという2種類のクライアント間のやり取りを模倣する必要があります。そのため、1つのテストでAppiumフレームワークとSeleniumフレームワークの両方を使用し、このタイプのテストではSeleniumとAppiumの両方のテストを組み合わせます。このテストでは、Appiumオブジェクトを使用してモバイルデバイスを管理し、Seleniumオブジェクトを使用してデスクトッププラットフォーム上のブラウザを管理および操作します。さらに、SeeTestクラウドサービス上でテストを実行することも想定されています。

実装に関しては、これらのクライアントのテストは別々のモジュールとして記述し、対応するインスタンスに対してSeeTestを使用して並列実行することができます。この例では、SeleniumとAppiumが互いに補完し合っています。これは、Webおよびモバイルテストの自動化のもう一つの例です。

Appium フレームワークは Selenium に基づいていますか?

最後に、ネイティブモバイルアプリケーションの自動化について少し触れておきます。ネイティブモバイルアプリケーションのUIテストを作成し、モバイルページ上の要素を操作する際には、org.openqa.selenium.remote.RemoteWebElement から拡張された io.appium.java_client.MobileElement クラスのインスタンスであるオブジェクトを介してアクセスします。つまり、ネイティブモバイルアプリケーションのテストでは、モバイルページ要素にアクセスするために暗黙的に Selenium が使用されます。

結論

まとめると、SeleniumとAppiumはそれぞれWebとモバイルのテスト自動化にのみ使用できる独立したフレームワークではなく、モバイルブラウザでのWebアプリケーションのテストや、Webおよびモバイルクライアントとのやり取りを含む複雑なテストケースの実装など、1つのテストで併用できます。これらのテストケースはすべて、 SeeTestプラットフォームは、テストに使用できる様々なモバイルデバイスとブラウザを提供しています。さらに、SeeTestは、Webおよびモバイルテストの自動化を実施するためのクラウドプラットフォームの中でトップクラスにランクされています。

実際にそれがどのように機能するかを見るために、 無料トライアルはこちらをクリック.

お勧めの関連ガジェット