kubell Creator's Note

ビジネスチャット「Chatwork」のエンジニアのブログです。

ビジネスチャット「Chatwork」のエンジニアのブログです。

読者になる

MagicPodはじめました

こんにちは。Androidエンジニアの "いけちょ" こと池田です。

この記事は、kubell Advent Calendar 2024(シリーズ 1)の12日目の記事です。

さて、私の所属するAndroidアプリ開発部では、今年自動テストのクラウドサービスであるMagicPodを導入しましたので、利活用の状況について簡単にご紹介したいと思います。

MagicPodとは

magicpod.com

MagicPodは、モバイルアプリとブラウザテストの両方に対応したテスト自動化のクラウドサービスです。

他にもモバイルアプリの自動テストに対応したサービスはありますが、MagicPodの良いところはなんと言っても定額でテストを何度でも実行可能なところです。

他のサービスでは実行時間や回数で課金されることが多いため、コストが膨らまないよう実行するテストを絞ったり、端末を減らすなど工夫する必要がありますが、 MagicPodでは、同時実行数の制限はありますが何回でもテスト実行できるので、夜間にOS毎のテストや端末サイズ毎のテストを実行しても料金は変わりません。

これまで

これまでUIの自動テストとして、Espressoを使ったローカルでの自動テストや、GitHub ActionsとShiratesを使った自動テストを試してきました。

しかし、学習コストとメンテナンスコストが高く、CIに組み込むには至っていませんでした。

一方、MagicPodはWeb上でノーコードでテストケースが作成できるため、プログラミングの知識がなくても保守運用が可能です。

なんのためにテストを実行している?

私たちのチームでは、主にコードの変更による影響が発生していないかをチェックするためにMagicPodでリグレッションテストを行っています。

特に、ログイン機能やメッセージ送受信のような弊社サービスの主要機能に影響がないかをチェックしています。

これら主要機能の自動テストを行うことで、重大な不具合がないことを担保することができ、開発者は安心して開発を進めることができます。

どんなテストを実行している?

現時点では、

  • ログイン
  • グループチャット作成
  • メッセージ送信
  • 画像アップロード
  • グループチャット削除
  • 別アカウントを追加

といった基本的なテストケースを自動テストで行なっています。

テストケースはまだ十分ではありませんが、今後拡充していきたいと考えています。

また、本番環境ではログイン時にBot扱いされてreCAPTCHAが出て失敗することがあるため、reCAPTCHAを無効にした開発環境で自動テストを行なっています。

本番環境ではないため、真の意味でのE2Eテストにはなりませんが、開発環境の方がテスト用データを用意しやすいため、むしろアプリのリグレッションテストとして適した環境ではないかと考えています。

いつ実行している?

  1. Pull Requestをマージした時

テストで問題が発生した時、影響範囲を絞り込みやすいよう、Pull Requestをマージした時にアプリをMagicPodにアップロードし、1端末でテストを実行しています。

  1. デイリーで定期実行

平日は以下の条件で毎日テストを実行しています。 複数端末でテストを行うことでOSバージョン等に依存する問題が発生していないかをチェックしています。

OS テスト端末 テストケース数
所要時間
iOS iOS 16〜18 x iPhone 12, iPhone SE, iPad mini, iPad Pro 9ケース
約30分/端末
Android Android 10〜15 12ケース
約15分/端末

iOSの定期実行のテスト端末設定

定期実行のスケジュール設定

MagicPodで困ったこと

Android

MagicPodではテスト端末にアプリをインストールした時点で全ての権限が付与された状態になるため、権限確認ダイアログの表示や権限が許可されなかった場合の挙動を確認することができません。

そのため、権限に関するテストを行う際は、Androidのアプリ設定から一度ストレージを消去し、権限をリセットするためのステップを追加し、テストケースの最初に行うという手段をとっています。

ただ、OSバージョン毎にストレージ消去の操作が変わったりするので、テスト実行の設定で権限が付与されていない状態でのテストができるよう要望を出しています

iOS

定期実行の所要時間を比較すると分かるように、Androidに比べて、少しテストの実行に時間がかかる傾向があります。

しかし、まさに今改善に取り組まれているようですので、今後に期待しています。

MagicPodで自動テストしてみてどうだった?

ログインテストの認証情報入力のように、繰り返し手作業で行うのが辛いテストを自動テストで行うことで、普段のアプリ利用では気付きにくい不具合をいち早く検知できるようになりました。

また、画像差分の検査を行うことで、要素の値が期待した値かどうかだけでなく、UI崩れが発生していないかも確認できるようになりました。

テストケースがうまく動かない時の質問や機能の要望などは、フォームから送信するとメールで返信いただいてやりとりできるため、安心して利用することが出来ています。

まとめ

アプリ開発チームではMagicPodでの自動テストを行うようになり、重大な不具合がないかを毎日チェックできるようになったことで、より安心してアプリをリリースできるようになりました。

テスト実行時間の問題があるため、あれもこれもというわけにはいきませんが、今後もテストケースを増やし、MagicPodの活用を進めていきたいと考えています。