見出し画像

アプリのテスト効率化と品質向上を実現するテスト自動化ツール「Maestro」の導入手順

現代のデジタル環境において、アプリは日常生活の不可欠な一部となっています。SNS、エンターテイメント、ショッピング、銀行取引など、様々な目的でアプリを使用しています。

異なるデバイス、異なるOS、そして異なるユーザーシナリオにおいて、アプリがスムーズに動作することをテストする際に問題が生じます。

アプリが円滑に動作することを確認するには時間がかかります。開発サイクルが短縮される中で、手動テストだけでアプリの品質を維持することは困難になっています。そのため、信頼性の高いテスト手法の必要性は高まり、自動化ツールは、高品質のアプリを提供するために、開発チームやQAチームにとって非常に重要なツールになり得ます。

現在、いくつかの自動化ツールが利用可能ですが、Maestro はその1つです。経験豊富な開発者やQA担当者、あるいは初心者であっても、Maestro は高品質なアプリを提供するための、シンプルで使いやすいテスト手法を提供します。

この記事では、プログラミングの深い知識や複雑なセットアップを必要としない Maestro の簡単な世界を探索します。
まず、Maestro とは何でしょうか?簡単に言えば、アプリのエンドツーエンド自動化テストのためのモバイルUIテストフレームワークです。Maestro を使用することで、開発者やQAエンジニアは、モバイルアプリケーションとのユーザーインタラクションをシミュレートするテストスクリプトを作成し、実行することができます。以下に、マエストロの主な特徴をいくつか紹介します。

  1. クロスプラットフォーム:Android と iOS の両方のアプリケーションをサポートしており、最小限の調整で両プラットフォームで実行できるテストを作成することができます。

  2. 可読性と保守性:テストはYAMLで記述されます。これにより、プログラミングの深い知識がなくてもテストステップを定義しやすくなります。人間が読みやすい形式であるため、新しいチームメンバーが既存のテストを理解し、保守することが容易になります。

  3. 組み込みの遅延耐性:テストに余分なsleep()やwait()の呼び出しを追加する必要がありません。コンテンツの読み込みに時間がかかる場合があることを認識し、自動的に待機するほど賢いのです。

  4. シンプルなセットアップ:セットアップが非常に簡単です。数分以内にテストの作成と実行を開始できます。

Maestroを使ってみましょう

Maestro の使用を開始するには、以下の手順に従ってください:
インストール:マエストロをインストールする前に、Command Line ToolsとAndroid Studioがインストールされていることを確認してください。その後、次のコマンドを実行します:

curl -Ls "https://get.maestro.mobile.dev" | bash

デバイスの接続:インストール後、Androidデバイスを接続するか、エミュレータ/シミュレータを実行します。現在、マエストロはAndroidデバイスの実機のみをサポートしています。iOSアプリケーションの場合は、シミュレータを使用する必要があります。その後、テストアプリケーションをテストデバイスにインストールします。

テストの作成:前述の通り、すべてのテストはYAMLファイルで記述されます。プラットフォームを識別することで、AndroidとiOS両方のテストを同じファイルに記述できます。

# flow.yaml

- runFlow:
    when:
        platform: Android
    commands:
        - runScript:
            file: android_elements/login.js
        - tapOn: "Text on the screen"
- runFlow:
    when:
       platform: iOS
    commands:
        - runScript:
           file: iOS_elements/login.js
        - tapOn: "Text on the screen"

テスト中に操作する要素の識別子が必要であることはよく知られています。そのために、Maestro は Maestro Flows の作成を支援するパーソナルアシスタント、Maestro Studio も提供しています。Maestro Studio を使用すると、各要素の識別子やアプリケーションとの対話に必要な正確なコマンドを取得できます。Maestro Studio は Maestro CLI に組み込まれているため、次のコマンドで Maestro Studio を起動できます:

maestro studio

デフォルトのブラウザで開いた後の様子は次のようになります:

Maestro Studio
Maestro Studio が起動すると、要素を視覚的に選択して、それらの要素の正しいロケータ(id、textなど)を特定できます。要素をクリックすると、Maestro Studioは選択した要素とテストで対話する方法を生成します。例をダブルクリックして直接実行するか、テストスクリプトにコピーすることができます。以下がその様子です:

Maestro Studioと要素のインタラクション
マエストロで使用されるコマンドについて学ぶには、次のリンクを参照してください:https://maestro.mobile.dev/api-reference/commands
フローの実行:テストを作成した後、Maestro CLI を使用してフローを実行し、接続されたデバイスでリアルタイムに結果を観察します。テストを実行するには、次のコマンドを実行します:

maestro test flow.yaml

テスト実行結果のサンプル
テスト中に実行されているステップと、アプリケーションとの実際の対話を確認できます。結果をリアルタイムで確認できますが、マエストロ自体を使用してテスト実行フローのビデオを記録することもできます。テスト実行のビデオを記録するために、他の録画アプリケーションを使用したり、デスクトップ画面をクリーンアップしたり、ウィンドウを整理したりする必要はありません。テスト実行フローを記録するには、次のコマンドを実行します:

maestro record flow.yaml

テスト実行が完了すると、マエストロは60分間有効な署名付きURLのビデオを提供します。生成されたURLをクリックしてビデオをダウンロードできます。

マエストロテスト記録の結果
この録画は、テスト実行の結果を共有したり、テスト実行中に何が間違っていたかを特定したりするのに最適です。ただし、現在のところ、録画の期間に制限があり、最大ビデオ録画時間は2分間です。フローが2分間の制限を超える場合、テスト実行のフローを記録するのはあまり有用ではありません。フローが2分未満または2分以上の場合でも、すべての条件でテスト実行結果が必要です。そのため、フロー実行レポートを生成することができます。
マエストロは、HTMLとXMLの2種類のレポートをサポートしています。HTMLレポートを生成するには、次のコマンドを実行します:

maestro test --format html flow.yaml

XMLレポートを生成するには、次のコマンドを実行します:

maestro test --format junit flow.yaml

デフォルトのファイル名はreport.htmlまたはreport.xmlですが、生成されるレポートの名前を変更することができます。レポートファイル名を変更するには、次のコマンドを実行します:

maestro test --format html flow.yamloutput filename.html

テスト実行レポートのサンプル


この記事が、Maestro の機能とアプリのテスト戦略にどのように適合するかを理解するのに役立つことを願っています。

モバイルアプリテストの品質と効率を向上させたいと考えている場合は、マMaestro を試してみることをお勧めします。コミュニティ主導の改善により進化を続けているため、業界を問わずモバイル自動化のための優れたツールになる可能性があります。
参考:https://maestro.mobile.dev/

読んでいただきありがとうございます。参考になりましたら幸いです。
気になることや質問がありましたら、ぜひコメントください。

この記事が役立つと感じた場合は、スキを押してもらえると嬉しいです!


この記事は、2024年9月に弊社のQAエンジニアである Prahlad Shrestha が執筆した内容を日本語に翻訳したものです。
英語版はこちらからご覧いただけます。
https://articles.wesionary.team/maestro-mobile-ui-testing-framework-8c2a31393f0d


採用情報

私たちはプロダクト共創の仕組み化に取り組んでいます。プロダクト共創をリードするプロダクト・マネージャー、そして、私たちのビジョンを市場に届ける営業メンバーを募集しています!


開発パートナーをお探しの企業様へ

弊社は、グローバル開発のメリットを活かし、高い費用対効果と品質を両立しています。経験豊富で多様性のあるチームが、課題を正しく理解し、最適なシステムと優れた体験を実現します。業務システムの開発、新規事業の開発、業務効率化やDX化に関するお困りごと、ぜひ弊社にご相談ください。