【QAチーム ブログリレー2日目】
こんにちは。逝去から1年経っての俄かポール・オースター2巡目通読、追憶がちなマルチデバイスチームQA前川です。
チームで開発する複数アプリとサーバサイドのQAでAI活用による効率化が求められる中、Firebase App DistributionのApp Test Agent機能がAndroidでプレビューリリースされた、ということで試してみました。 自然言語テストなので厳密な記述は不要で与しやすいかと思いきや、自然言語ゆえに意外なところでやや手間どった初動という感触でした。
App Test Agentとは
App Test Agentとは
「Gemini in Firebase を活用したテストケースの生成、管理、実行エージェントです。テストの目標を自然言語で定義すると、エージェントは AI を使用してアプリを理解して操作し、ユーザー インタラクションをシミュレートして、詳細なテスト結果を提供します。」 (Firebase公式サイトより)
Firebase App Distributionにアップしたビルドに対して自然言語でE2Eテストを記述して実行できます。
今回はエムスリーのサービスの軸であるポータルアプリ”m3.comアプリ”で必須機能、認証&ユーザー問い合わせ&ログアウトのステップで試してみます。Flux+MVVMアーキテクチャのアプリです。 m3.comアプリの設計について気になる方はこちらをご覧ください。
有効化
FirebaseのApp Distrobutionページを開くと最初にオプトインのバナーが表示されます。


テストケース記述&実行
タイトルに要件、今回は「ログインしてホーム画面に遷移し、問い合わせ送信する」
ステップごとに目標に操作内容、ヒント&成功基準(省略可) を記述し、別のステップを追加でシナリオを作成してきます。

紹介記事などを参考に詳細な指示記載なしに、Geminiへの絶大な信頼をもとに上記のような記述レベルでログイン->問い合わせ->ログアウトというシナリオを一旦作成、実行しました。
テストケース作成後に一覧でテスト実行押下で実行のカスタマイズメニューが表示され、実施するビルドを選択、デバイスとログイン認証ユーザーの情報をセットしてテストを実行押下、で走りはじめます。



そして見事に初手から失敗しました。
「詳細を表示」で実行結果リストの失敗ステップを開き、さらに失敗箇所をタップするとキャプチャつきでエラー状態が目視で確認できます。



まさかのユーザーIDが全角入力でした。なんでやねん。認証情報は当然半角英数でセットして実行していますが、想定外にstrictなAgentでした。
ちなみに実行結果の詳細は「アーティファクトを表示」からGoogleCloudを開き、output > sitemap.pngでも参照可能です。






ユーザーの通常操作では改行が発生しないようコントロールが入っていますが、テストエージェントでは改行可能な実装となっていたため、ユーザーIDで改行できないよう制限を追加することで突破できました。
テストエージェントの性能から発したとはいえ、結果、改善となったわけではあります。

ちなみにログイン後にモーダルダイアログを表示して訴求するケースがあり、そこを閉じてスルーしてホーム画面表示する、という回避のヒント記述を試行中ですが、いまだ成功しておらず模索中です。
所感
公式の既知の問題にも記載されていますが、
- アクションをなるべくステップ細分化し、
- スクリーン内のテスト外の要素をヒントでいかに回避できるか、
がテストケース作成の効率化に重要なポイントとなりそうです。 また、本番環境での通信に限られるため、サーバ応答に準じたケースは難しく、あくまでも汎用的なUIテストベースとなりそうです。
とはいえ初手で若干手間どりはしたものの、自然言語でライトに記述でき、ライトに実行して即修正が回せる自然言語テスト、使いどころは多々ありそうです。
We are hiring!
マルチデバイスチームではOSや採用技術を問わないモバイルアプリ開発&検証、そして運用フェーズにも興味のあるQAエンジニアを絶賛募集しています。 興味がありましたらぜひご応募ください!