- モバイルアプリのUIテストを自動化する最も簡単な方法
- UI要素の不安定さに対する組み込みの許容度を持つ
- UI要素が常に想定した位置にあるとは限らないため、画面をタップすることが常に動作するとは限らない
- モバイルアプリケーションとデバイスの不安定さを受け入れ、それに対応しようとしている
- Delayに対する組み込みの許容度を持つ
- テストに
sleep() 呼び出しを入れる必要がない
- コンテンツの読み込み(例: ネットワーク経由)に時間がかかる可能性があることを理解し、自動的に待機するが、必要以上に長く待つことはない
- 非常に高速な反復が可能
- テストはインタープリットされるため、コンパイルする必要がない
- テストファイルを継続的に監視し、変更されたときに再実行できる
- 宣言的でありながら強力な文法を提供する
- 設定が簡単
GN⁺の意見
- Maestroはモバイルアプリのテスト自動化のための新しいツールであり、既存のAppium、Espresso、UIAutomator、XCTestなどの限界を克服しようとしている。特にUI要素の不安定さや遅延に対する組み込みの許容度を備えており、既存ツール使用時に発生していた問題を減らせそうだ。
- YAMLベースの宣言的文法を使うため、開発者ではないQAエンジニアでも簡単にテストケースを書けそうだ。ただしYAML文法に慣れていない場合は学習コストがかかる可能性がある。
- モバイルアプリのテスト自動化ツールとしてはAppiumが広く使われている。Appiumは複数のモバイルプラットフォームと言語をサポートする長所があるが、安定性の問題でテスト失敗率が高いという短所もある。MaestroがこうしたAppiumの問題をどこまで解決できるのか見守る必要がある。
- 現在Maestroはドキュメントが充実しており、Slackコミュニティも運営されているため、導入を検討する価値はありそうだ。ただしまだ初期バージョンなので、本番環境に適用する前に十分な検証が必要だと思われる。
4件のコメント
やってみたところ、すぐにできて(セットアップから最初のテスト用yamlを作るまで1時間前後)、なかなか良かったです
maestro はシンプルで良い点が多いのですが、まだ Android では日本語入力の問題があります。 https://github.com/mobile-dev-inc/maestro/issues/146
また、残念な点として、他のテストツールに比べて高速には実行されません。通常、テストツールは実際のユーザーと違って非常に速く実行されるため、
waitを精密に設計しないと flaky にテストが失敗する問題がありましたが、maestro はただ遅く待つことで解決することにしたのではないかと思うほど遅いです。 ^^;;;一方で、Webフロントエンドのテストではアクセシビリティ要素を活用するアプローチが人気を集めており、モバイルでもそうした流れがあります。( https://blog.banksalad.com/tech/test-in-banksalad-ios-2/ 参照)
Maestroはtextとid中心なので、「商品一覧」というlinkやbutton、headingなどのroleを区別しにくいと感じました。Webでは
aria-checkedやaria-expandedなどで検証できる部分があるのも、物足りなく感じます。私としては、test-idにはidの衝突を防ぐためにprefixなどを付けることになり、結局このように取得した要素が期待するtextをレンダリングしているかをあらためてテストしなければならないのが煩雑でした。
洞察に満ちたコメントをありがとうございます