モバイルデバイスは、今や人々の生活の中心にある持ち歩けるコンピュータとしての地位を確立していると言っても過言ではありません。筆者が住む日本では、モバイルデバイス全体で97.5%、そのうち90.1%が1台以上スマートフォンを所有しています。USでスマートフォンを所有している人の割合は85%です。
昨今のモバイルアプリは、デスクトップアプリケーションと比較して、一貫した、あるいはそれ以上の優れたユーザー体験を提供することがますます期待されています。Slackを例に挙げると、スマートフォンで記述した文章の下書きを、そのままパソコンに引き継いで書き進めることができます。ユーザーの多くは、このようなシームレスな体験を標準と考え、いつでもどこでもスマートフォンから情報にアクセスできる利便性を享受しています。モバイルデバイスのユビキタスな性質は、私たちの生活とデジタルの世界の架け橋となり、モバイルアプリはそのつながりの一部となるために、常に良い体験を提供する必要があります。
一方で、モバイルデバイスで得られる体験や品質に問題があると、触れているデバイスを問わずにサービスそのものから離脱するリスクが大幅に増大します。サービス提供事業者は、これだけ多くの人が当たり前に使っているモバイルデバイスで得られる体験や品質を損なうことなく、他のデバイスと同等以上の開発スピードを保ち、競争力を維持する必要があることは言うまでもありません。
しかしながら、モバイルアプリ開発の世界は、デプロイ頻度を低下させかねない課題が山積しています。例えば開発者は、定期的なOSのバージョンアップ、アプリストアの頻繁なポリシー変更、OSデザインの大幅な変更、増え続けるデバイスなど、コントロール不可能な要因に対処しなければなりません。とりわけ最近は、ディスプレイに影響を与えるホールパンチカメラや縦にも横にも折りたたみ可能なデバイスなど、ハードウェアの進化も見逃せません。これらはいずれも開発環境に独特な複雑さをもたらします。
サイドローディングが数年前から広く議論されていますが、(執筆時点で) モバイルアプリ開発チームは、アプリケーションの審査プロセスとそれに伴う遅延に対処しなければなりません。この精査をパスするために、開発チームは数日待つ他に手段がなく、祈るしかありません。モバイルアプリ開発チームは、アプリのアップデートを効率化し、品質をより効果的に高めるために、更なる戦略的なアプローチを必要としています。
ユーザーの離脱を防ぐには、リグレッションテストを含め、モバイルアプリの品質を継続的に向上させる戦略が必要です。しかし、上記のような克服すべき課題が数多あります。mablがヒアリングしたアンケート結果によると、自動テストを実現しているモバイルアプリ開発チームはわずか36%に留まっています。この課題は、消費者向けのモバイルアプリで特に顕著であり、ほとんどの組織がiOSとAndroidの両方のアプリ開発を必要としていることも多いでしょう。
当然ながらAppleやGoogleなどのプラットフォーマーは、開発者に統合開発環境(IDE)を提供しており、その中に自動化まで可能なテストツールが存在します。iOSならXCTestやXCUITest、AndroidならRobolectricやEspresso、UI Automatorが各公式ドキュメントでも紹介されています。いずれもユニットテストやAPIテスト、UIテストなど、さまざまなテストをカバーしており、”適切に管理運用ができれば”公式のツールのみで完結させることも不可能ではなさそうです。公式以外のモバイルアプリ開発のUIテストツールではAppiumやMaestroも有名です。しかし、いずれもモバイルアプリの自動テストを普及させるまでには至っていません。
テストの自動化により、(特にアジャイル開発において)モバイルアプリ開発チームは様々な恩恵を受けられます。
もはや取り組まない理由はないのですが、何が自動化を難しくしているのでしょうか。
mablが従来から提供しているウェブアプリケーションのテストなどでも散々言われていることですが、1つはメンテナンス性の担保が難しいことにあります。これらは仕組みでなく運用による対応で回避されがちですが、無尽蔵に拡大していくテストを管理し続けることは非常に難易度が高く、破綻リスクを内包し続けます。実際に開発をする皆さまはコードによる管理に抵抗がなく、学習コストを払ってテストコードを書く傾向が強いですが、適切に管理しないとサイロ化につながります。またコードベースではテストに携われる人員が限られるため、リソースのひっ迫リスクが高まります。その上、ウォーターフォール開発に慣れているチームは、そもそもテスト設計が後回しになりがちで、明らかに継続性のない方法を開発チーム自ら選択しています。競争力がありスピード感のある開発を続けるためには、早期にテスト計画を立てて、ソリューションを活用し、負担の少ない管理の仕組みを構築する必要があります。
また、モバイルアプリ開発においては、テスト計画をよりシビアに構築しなければなりません。前述の通り、モバイルデバイスやOSの多様性に対応していく必要があるためです。市場に出回るデバイスを全て実機でテストすることは現実的ではありませんが、ではどのようにして実デバイスや仮想デバイスでテストするデバイスを決定すれば、適切なカバレッジを確保できるのでしょうか。
より迅速に、サイロ化させることなく、管理が容易で、多くの関係者を巻き込むためには、ローコード/ノーコードによるテストソリューションが最適です。AIを用いた自動修復などの機能を活用すると、更なるメンテナンス性の向上が期待できるだけでなく、クラウドベースで拡張性が高く、並列実行も容易です。UIテストにAPIテストをマージして実行することもできます。
かつては岩を削って文字を掘り、文明の進歩と共にそれが紙と筆記具に置き換わり、今ではデジタルデバイスに置き換わって、キーボードだけでなく指やデジタルペンで文字を残せるように進化してきたことと同じように、スクリプトベースで管理や運用が煩雑なテストコードを隅々まで書くより、ボタンクリックで便利に使用できるローコード/ノーコードツールを効果的に使用してテストを作成することは、先人より受け紡いできた便利を散々享受してきた我々にとって合理的と言えます。
テスト対象デバイスの選定については、まず各プラットフォーマーが販売するiPhoneやPixelなどのリファレンスフォンから始めるのが最適です。それ以外は第三者調査企業が提供しているデバイス毎のアクセスリストを入手するなどして、より影響度が高いと見込まれるデバイスを優先してテストすることでカバレッジの拡大に貢献できます。アクセス上位のデバイスは実機テストまで実施し、それ以外は仮想デバイスでテストをするなど取捨選択の基準を明確にし、テストをするデバイスとしないデバイスを決定しましょう。その後は社内でデータを分析したり、顧客からのフィードバックを参考にするなどをして、実態に見合った優先度を定め、継続してメンテナンスしていくことが求められます。
現時点でmablをご利用いただいていなくとも、プライベートベータでモバイルアプリ開発チームが高品質なアプリを開発できるよう設計された、拡張性やメンテナンス性が高いローコード/ノーコードテストソリューションを、早期アクセスプログラムで限定提供しています。モバイルアプリ開発におけるペイントポイントの解消を目指し、皆さまから頂戴したフィードバックをmablの製品開発に活かしていきます。リクエストはこちらから。