The mabl blog: Testing in DevOps

モバイルアプリテストを合理化する:mablでAppiumの設定や実行を比較

作成者: Shiho Miyazaki|2024/07/23 13:18:37

目まぐるしく変化するモバイルアプリ開発の現場では、シームレスなユーザー体験を提供することが最も重要です。増え続けるデバイス、オペレーティングシステム、そしてユーザーの期待に応えて、アプリが全体的に完璧に機能することを保証することは、決して簡単なことではありません。モバイルテストの自動化は、スピードと品質を両立しようと努力するチームにとって不可欠なツールとなっており、無料のオープンソースソリューションであるAppiumは、そのクロスプラットフォームのサポートにより、よく利用されるようになりました。


しかし、Appiumは強力な機能を提供する一方で、課題がないわけではありません。Appiumをベースとした強力な自社フレームワークの設定とメンテナンスは、専門的なスキルと専用リソースを必要とするため、時間がかかり、複雑になる可能性があります。さらに、テストスクリプトを書くための学習コストが高く、特に幅広いコーディング経験を持たないチームメンバーにとっては大きな負担となります。

mablは、モバイルアプリの品質に対するモダンなアプローチを提供します。これにより、Appiumの機能を拡張し、技術的なハードルを低減します。AIを搭載したクラウドネイティブなプラットフォームは、モバイルテストの自動化を簡素化し、チーム全体が品質に貢献できるようにし、リリースサイクルを加速します。

Appiumを理解する:コンポーネント、メリット、課題に関する包括的なガイド

Appiumはオープンソースのフレームワークであり、AndroidやiOSを含むプラットフォーム上で、あらゆるデバイスタイプのWeb、ネイティブ、ハイブリッドアプリケーションの自動アプリテストを実施できるようにチームを支援します。SafariやChromeのようなブラウザからアクセスするモバイルWebアプリケーションであろうと、Webビューの周りにネイティブラッパーを持つハイブリッドアプリケーションであろうと、Appiumはあらゆるタイプのモバイルアプリケーションのテストを自動化する柔軟性を備えています。

Appiumが人気である理由の一つに、「クロスプラットフォームのテストフレームワークとしての汎用性」が挙げられます。開発者が既存の知識とスキルを利用して使い慣れたツールやテクノロジーを使ってテストスクリプトを書くことができるのです。また、Java、JavaScript、PHP、Ruby、Python、C#など好みのプログラミング言語と単一のフレームワークを活用できることから、テストの構築やメンテナンスに必要な時間と労力を大幅に削減することができます。この柔軟性と使いやすさから、モバイルテストを自動化するプロセスを合理化したいと考える多くの組織にとって、Appiumが最適な選択肢となっているのです。

Appiumはクライアントサーバーアーキテクチャを採用しており、それによってテスト実行とテスト対象アプリケーションが区別されます。テストスクリプトは、Appiumサーバーにコマンドを送信するクライアントとして機能し、サーバーは、コマンドをプラットフォーム固有のアクションに変換する仲介役としてドライバーを使用しています。変換されたアクションは対象のデバイス上で実行されます。下図でこのプロセスを説明しています。

Appiumを使う:ステップバイステップガイド(mablで簡素化される機能の説明を添えて)

では、Appiumの使い方をステップごとに追いながら、一見複雑なプロセスがmabによってどう簡素化されるのか探っていきましょう。

システム設定

Appiumを使用する際にまず必要なのが「システムの準備」です。モバイルテストプランを作成し実行する前に、まず開発環境がAppiumの要件を満足しているかどうか確認しましょう。
  1. オペレーティング・システム(OS):Appiumテストは、Windows、macOS、Linuxのいずれかにおいて実行可能です。ただし、iOSアプリケーションのテストのみ、Xcodeが必須であるため、macOS搭載マシンが必要です。
  2. Java開発キット(JDK):JDKは、Javaベースの開発に必要なツールやライブラリを提供するため、Androidアプリケーションのテストに不可欠です。
  3. Node.js:AppiumはNode.jsの上に構築されているので、Appiumサーバーの実行とテスト実行にはNode.jsをインストールする必要があります。
  4. Androidソフトウェア開発キット(SDK):Androidアプリを自動化するには、Androidソフトウェア開発キット(SDK)が必要です。このSDKには、デバイスやエミュレーターと通信するためのAndroid Debug Bridge(ADB)などの必須ツールが含まれています。SDKはAndroid Studioと一緒にダウンロードすると便利です。
  5. Xcode(iOS用):iOSアプリのテストには、Xcodeが必須です。iOSアプリケーションのビルドとテストに必要な開発環境、シミュレーター、ツールを提供します。

mablの強み:mablはクラウドベースのプラットフォームなので、Node.jsやAndroid SDKなど、Appiumの複雑なローカルインストールが不要です。どのオペレーティングシステムからでもクラウドベースのシミュレータに接続できるため、iOSモバイルテストの制限がなくなり、初期設定プロセスが簡素化されます。

環境設定

システム設定の次は、モバイルデバイスやエミュレーターと効果的に通信するための環境設定が必要です。iOSデバイスを扱う場合はとりわけ、このステップが複雑になっています。

Androidの場合、Android SDKをインストールしたら、Android Virtual Device (AVD) Managerを利用して仮想デバイスを設定します。ここでは、好みのOSバージョン、画面サイズ、その他の仕様を選択します。実際のAndroidデバイスでモバイルテストを行う場合は、Appiumとデバイス間の接続を確立するためにUSBデバッグを有効にする必要があります。

iOSの環境設定はより複雑です。例えば、実際のiOSデバイスでテストするには、有効なApple Developerアカウントが必要です。さらに、実際のiOSデバイスにアプリをデプロイしてモバイルテストを行うには、コード署名とプロビジョニング・プロファイルを設定する必要があります。このプロセスは、iOS開発の初心者やAppleエコシステムの未経験者にとっては、特に難しいかもしれません。

デバイスの設定以外にも、Appiumの環境変数を設定する必要があります。JAVA_HOME変数はJDKのインストールディレクトリを指す必要があり、PATH変数にはJDKとAndroid SDKの両方のbinディレクトリを含める必要があります。これらの変数によって、Appiumとその関連ツールにコマンドラインからアクセスして実行できるようになります。

mablの強み:クラウドベースのプラットフォームであるmablがあれば、これらのプロセスも簡素化できます。mablはクラウド上にいつでも利用可能なデバイスを備えているので、ローカルデバイス設定が不要となります。これによって、コード署名やプロファイルのプロビジョニングの複雑さが回避でき、特にiOSのテストが簡単になります。また、mablで、クラウドテストのための環境変数の設定を自動処理することが可能です。mablが主に重点を置いているのはクラウドベースのテストですが、必要であれば、ローカルデバイス(iOSシミュレータ、Androidデバイス、エミュレータ)でのモバイルテストの設定やトレーニングにも柔軟に対応が可能で、あらゆるユーザーにお使いいただけます。

依存関係のインストール

システムと環境の準備ができたら、次は、Appiumとやりとりするために必要なツールを集めて、テストスクリプトを書きましょう。

  1. Appiumコマンドラインツール:このツールはAppiumの核であり、コマンドラインからサーバーの起動と停止、セッションの管理、デバイスとのやり取りを行います。
  2. Appium Doctor:Appiumのヘルスチェックとして機能するこの便利な診断ツールは、必要なコンポーネントがすべて正しくインストールされ、設定されているかを確認します。トラブルシューティングの時間を節約できます。
  3. 言語固有の依存関係:選択したプログラミング言語(Java、Python、JavaScriptなど)に応じて、コードとAppiumサーバー間のギャップを埋めるために追加のライブラリをインストールする必要があります。例えば、Javaを使用している場合、AppiumのJava APIとやり取りするために"java-client"ライブラリのインストールが必要です。

mablの強み:必要なAppiumの依存関係のインストールと設定をmablで自動処理することで、このステップ全体をスキップできます。

Appiumサーバーの起動

システムと環境の設定が終わったら、いよいよ、コマンドラインインターフェイスを介してのAppiumサーバーの起動です。SessionNotCreatedExceptionというエラーがよく発生しますが、これはテストスクリプトを実行しようとした時にAppiumサーバーがデバイスとの新しいセッションを作成できなかった時に見られるエラーです。その原因として考えられるのは、「求める機能が正しくない」「依存関係が見つからない」「接続性に問題がある」などで、デバッグが困難になる可能性があります。

mablの強み:サーバー管理を、mablが行います。mablは、Appiumサーバーの設定や起動、メンテナンスを自動的に実施するので、セッションエラーや設定に関する問題への対応が不要になります。バックグラウンドでサーバーがスムーズに動作するので、テストの作成に集中することができるようになります。

デバイス設定(物理デバイスと仮想デバイス)

Appiumを採用する上で重要なプロセスの一つが、テストに使用するデバイスの設定です。物理デバイスと仮想デバイスのどちらを使うにしても、スムーズなテスト体験を保証するために、このプロセスを慎重に処理することが必要です。

仮想デバイス:
Appiumは、Androidエミュレータ(Android Virtual Device Managerで設定)とiOSシミュレータ(Xcodeで利用可能)の両方でモバイルテストをサポートしています。物理デバイスを必要としないので、仮想デバイスは、様々な構成において高い利便性と費用対効果でアプリをテストすることができます。特にiOSシミュレータにおいては、Mac OSハードウェア上での動作が不可欠で、ローカルのMac機器、もしくはMacを提供しているクラウドプロバイダーを利用する必要がある。

物理デバイス:
実際のデバイスを使ったテストは、ユーザーのアプリ操作を最も正確に反映することができます。iOSのテストには、有効なApple Developerアカウントと設定済みのプロビジョニング・プロファイルが必要です。物理デバイスを使えばモバイルテストの精度は非常に高くなりますが、多数の異なるデバイスを用意することは簡単ではありません。代替案としてBrowserStack、AWS Device Farm、Sauce Labsのようなデバイスファームを通じて実際のデバイスにアクセスする方法があるものの、別途ライセンスが必要でコストが上がる可能性があります。

mablの強み:mablがあれば、いつでも利用可能なクラウドベースの仮想デバイスにアクセスできるため、デバイス管理が簡素化され、複雑なクラウドインフラの設定やローカルデバイスのメンテナンスが不要になります。mablのデバイスクラウドには、最新のモデルやOSバージョンが備わっており、常に最新の状態でテストを実行することができます。さらに、mablは、デバイスが故障した際のトラブルシューティングも実施するため、時間と労力が節約できます。

モバイルテストスクリプトの作成

Appium環境とデバイスの準備ができたら、次はモバイルアプリのインタラクションを自動化するテストスクリプトの作成です。

言語の選択:
Appiumは、Java、Python、Ruby、C#など、さまざまなプログラミング言語でテストスクリプトを記述できる柔軟性があります。多くの場合、チームのスキルや好みに応じて言語が選択されます。

自動化フレームワークの設定:
言語を選択したら、Appiumと互換性のあるテスト自動化フレームワークを設定することが必要です。このフレームワークは、テスト整理、テストデータ管理、レポート生成に必要な構造を提供します。具体的な設定プロセスは、選択した言語とフレームワークによって異なります。モバイルアプリのテストにおいては、Appiumとシームレスに動作するWebdriverIOが一番選ばれています。

スクリプトを書く:
Appiumスクリプトを書くのに必要なのはコーディングだけではありません。モバイルアプリのエレメントと効果的にやり取りする方法についての知識が求められます。

  • 正しいエレメントを見つける:Appiumには、アプリ内のエレメントを特定するためのさまざまなロケーター戦略(ID、XPath、アクセシビリティID)が備わっています。しかし、正しいエレメントを的確に特定するのは難しく、ロケーターがアプリのUI変更に対応していない場合、テストが脆くなる可能性があります。また、不正なロケーター、タイミングの問題、アプリケーションの更新が原因で、
    NoSuchElementException(エレメントが見つからない)やStaleElementReferenceExceptionなどの一般的なエラーが発生することも考えられます。
  • テストの不安定性を減らす: テストの安定性にとって「タイミング」が重要な役割を担います。アプリのロード時間はさまざまで、テストスクリプトとアプリ状態との間で同期に関する問題が発生する可能性があります。不安定性を軽減するには、明確な待機メカニズムを導入する必要があるかもしれません。

  • テストの依存関係を減らす:テストの並列実行では、テストケース間の依存関係が競合状態や失敗につながることがあります。効率的な並列実行や信頼性の高い結果の抽出には、独立したテストケースの設計が重要です。

mablの強み:mablは、ローコードなアプローチでテスト作成を合理化します。再利用可能なフローを作成し、複雑なシナリオにAppiumコードスニペットを活用することで、データ駆動型テストを簡単に実装できます。mablのAI搭載スマート要素セレクタは、ML(エキスパートシステム)を使用して、アプリのUIの変化にインテリジェントに適応し、テストの不安定性を軽減します。さらに、メールテスト、多要素認証、APIコールなどの手のかかるワークフローを処理するビルトインソリューションによって、より信頼性高くモバイルテストスクリプトのメンテナンスを行うことができます。

テストを実行する

スクリプトの準備ができたら、いよいよテストの実行です。スクリプトを実行すると、セッションが始まり、接続されたデバイスまたはエミュレータ上でモバイルアプリが起動し、Appiumの定義するアクションを実行します。

テスト実行後にテスト結果のログにアクセスすることができるものの、その内容を理解することは簡単ではありません。Appium Inspectorツールをインストールして、エレメントのロケーターとアプリケーションの状態を確認することはできるものの、ログだけを頼りにしたモバイルテストに関する問題のトラブルシューティングはかなり困難です。

テスト実行後にテスト結果のログにアクセスすることができるものの、その内容を理解することは簡単ではありません。Appium Inspectorツールをインストールして、エレメントのロケーターとアプリケーションの状態を確認することはできるものの、ログだけを頼りにしたモバイルテストに関する問題のトラブルシューティングはかなり困難です。

根本的な原因分析には、スクリーンショットやその他の成果物などが含まれた包括的なレポートやログが望ましいのですが、テストフレームワークの設定とメンテナンスにはより深い技術的専門知識が求められます。

開発サイクルを加速し、バグを早期に発見するためには、テストを頻繁に実行することが重要です。Appiumでは、テスト実行に時間がかかり、とりわけ連続実行は難しいかもしれません。

mablの強み:mablを使ってモバイルテストの実行とオーケストレーションが簡素化できます。オンデマンド、スケジュール、またはCI/CDパイプラインに統合されたテストを、コードの変更ごとに自動的に実行することができます。mablのクラウドインフラストラクチャによって、無制限の並列化が可能となり、テスト実行時間が劇的に短縮されます。

さらに、mablは、モバイルテストの各ステップにおけるログやスクリーンショットを含む包括的な診断を提供します。これにより、トラブルシューティングや、障害の根本原因を簡単に特定できます。また、mablはJiraのような課題追跡ツールとシームレスに統合できるので、バグの報告と解決プロセスが合理化されます。

使いやすいAppium:mablによるモバイルテストの合理化

Appiumのオープンソースの基盤と高い機能性は、幅広いモバイルアプリケーションの自動化に最適で、弊社でもその機能性を認めていました。しかし同時に、独自のAppiumフレームワークをゼロから構築するためのリソースや専門知識を持っているチームばかりではないことも認識していました。そこで、「どんな規模やスキルレベルのチームでも簡単にAppiumの利点を活用できるようにしたい」と考え、Appiumの利便性と機能性を活かしつつ、そこにモバイルテスト自動化ソリューションを加えました。

あくまでもAppiumの機能性を疑問視している訳ではありません。Appiumの技術的なハードルを取り除き、ユーザーフレンドリーなインターフェースを提供することで、開発チームが高品質なモバイルアプリの作成と優れたユーザーエクスペリエンスの提供に集中できるようにしたいのです。

最後に、Appiumとmablの機能を比較してみましょう。

Item

Appium

mabl

システム設定

特定のオペレーティングシステム上で手動による設定とコンフィグレーションが必要

クラウドベースでどんなOSでも手動設定不要

環境設定

環境変数の設定およびデバイス固有のコンフィグレーションが必要

環境とデバイスを自動設定

依存関係のインストール

言語に基づいた複数の依存関係の手動インストールが必要

依存関係のインストールと管理を自動で処理

デバイス設定(物理デバイスと仮想デバイス))

ローカルデバイスの手動設定、またはクラウドベースのデバイスにおける個別のライセンシングや設定が必要

クラウドベースの物理デバイスと仮想デバイスが利用可能

テストスクリプト作成

プログラミングスキルとAppiumの使用経験を要するコードベース

どんなスキルレベルでも使用可能なローコードビジュアルエディタ

テスト実行

CI/CDおよびテストの自動化設定が必要で、並列実行に制限あり

自動トリガーやスケジュール設定でき、無制限の並列実行が可能

サーバー管理

Appiumサーバーの手動設定、起動、トラブルシューティング、またサードパーティデバイスファームからのライセンシングが必要

Appiumサーバーの自動設定、メンテナンス、トラブルシューティング

デバッグ&診断

技術専門性を持つ人材が必要、複雑なログとAppium Inspectorに依存

スクリーンショットやログ、Jira統合による包括的な診断

 

mabl:信頼性が高くスケーラブルなモバイルテスト自動化のためのプラットフォーム

Appiumとmablのどちらを選ぶかは、チームの優先事項やリソースによって異なるでしょう。複雑なフレームワークの構築やメンテナンスに必要な技術的な専門知識とリソースがあれば、モバイルテストの強力なツールとしてAppiumを選ぶかも知れません。しかし、高速かつユーザーフレンドリー、さらにスケーラブルなモバイルアプリのテストソリューションを求めるチームにとっては、明らかにmablが良い選択肢だと言えます。複雑なAppiumのプロセスを簡素化できるmablがあれば、どんな規模やスキルレベルのチームでも、信頼性が高いモバイルテストを作成、実行、メンテナンスすることができ、確実に優れたユーザー体験を提供できるようになるでしょう。

あなたのチームはどこまでモバイルテストの可能性を引き出すことができるのでしょうか?これからのモバイルテスト自動化はどうなるのでしょうか?テストを簡素化・加速化できるmablをぜひ体験してみてください。今すぐ無料トライアルにご登録を!