🔗

ディープリンクの遷移テストをMagicPodが公式サポートしている方法に置き換えて自動テストの効率化してみた

2025/01/21に公開

概要

こんにちは!こんばんは!
マラソンを完走することを今年の目標の1つにしている、dely株式会社でiOSエンジニアをしているtakkyです!

今回は弊社でも利用しているAIテスト自動化クラウドサービスのMagicPodで、ディープリンクの遷移テストを自前で作成していた共通ステップから公式サポートされたステップに変更したことについて、執筆しました。

弊社でのMagicPodの運用方針などに関しては、以下の記事を参考にしてください。

https://tech.dely.jp/entry/rewards_qa

現状と課題

弊社では、MagicPodで様々なテストケースを定期実行しており、Active状態やNot Running状態でディープリンクを用いて意図した画面を表示する機能について、デグレが発生していることを検知するためのテストも運用しています。

ただ、以前までディープリンクのテストケースの作成は公式でサポートされておらず、自前でテストケースを組む必要があり、以下のような課題がありました。

  • Not Running状態でディープリンクを検証する際、Appleの公式アプリであるSafariを毎回起動してディープリンクを入力する工程を挟む必要があった点。
  • Active状態でも、アプリの特定の箇所まで遷移してディープリンクを入力し、リンクを作成する工程を挟む必要があった点。
  • 全てのディープリンクで上記のテスト工程を検証する必要があるため、膨大な時間がかかる点。
  • アプリが完全に立ち上がっていない状態とアクティブ状態でのテストがより複雑になり、テストケースの修正が困難である点。
  • その結果、全体的にテストケースの実行が不安定になり、フレーキーなテストとして放置されていた点。

上記のような問題があり、ディープリンクのテストケース自体を一時的に定期実行から外し、最適な方法を模索していました。(フレーキーなテストを運用することで、テスト失敗を許容し、他のテストケースへの関心を下げないようにするため。)

具体的には以下のような共通ステップをActive状態とNot Running状態で利用するよう整備し、テストを実行していました。

既存の自前テスト
アプリActive状態 アプリNot Running状態
ディープリンクテストステップ active test case before not running test case before
テスト開始~終了に要する時間 30秒 37秒
ステップ数 7ステップ 11ステップ

そんな矢先、MagicPodから公式にディープリンクのテストがサポートされることを知り、ミニマムで試してみたところアプリ起動中にディープリンクを利用して特定の画面を開くステップはなんと1ステップで事足ります!!

公式サポートのディープリンクステップ
アプリActive状態 アプリNot Running状態
ディープリンクテストステップ active test case after not running test case after
テスト開始~終了に要する時間 3秒 7秒
ステップ数 1ステップ 2ステップ

クラシルリワードでは45個ほどディープリンクを運用しており、その全てを検証するようにしていたので、それぞれテスト完了に要する時間=ディープリンク数×(アプリActive状態+アプリNot Running状態)の計算で以下の数値になります。

chat gpt caculate
Chat GPTによる概算

ディープリンクの検証箇所のみのテストケースは約42分早く完了し、おおよそ85%のテスト効率化が期待できます!また、自前のテストケースは.accessibilityIdentifierを付与したコンポーネントをロケートに指定していますが、かなり不安定だったのに対し、公式のステップは検証中一度も失敗することがなく、安定性が高く運用しやすいです!!👍

まとめ

公式サポートのディープリンクのテストステップを試してみた結果、自動テストの実行速度と安定性が格段に向上し、再度定期実行でディープリンクのデグレ検知に活用できるようになり、大変助かりそうです!!🙌
早速導入して運用したいです!

参考記事

https://support.magic-pod.com/hc/ja/articles/41262851938585-ディープリンクを開く機能

https://portal.magicpod.com/c/45-

https://tech.dely.jp/entry/rewards_qa

https://magicpod.com/customer-stories/dely/

https://developer.apple.com/documentation/swiftui/view/accessibilityidentifier(_:)

https://support.magic-pod.com/hc/ja/articles/4408904655769-自動テストを簡単にするためのアプリ実装の工夫を知りたい

dely Tech Blog

Discussion