Gunosy Tech Blog

Gunosy Tech Blogは株式会社Gunosyのエンジニアが知見を共有する技術ブログです。

Gunosyでテスト自動化ツール「MagicPod」を活用している話

こんにちは。QAチームのmiyagiです。
今回はQAチームで導入しているテスト自動化ツール「MagicPod」でどのようなテストを行っているかご紹介します。

MagicPodについて

GunosyのQAチームでは、テスト自動化ツールとして「MagicPod」を導入しています。
MagicPodはプログラミング知識がなくても簡単に自動テストのスクリプトを作成することができる便利なツールです。
ブラウザのテストの他にiOS・Androidのモバイルアプリのテストにも対応しているため、Gunosyが開発している各アプリのテストでも活用できています。

実際にテストケースを作る際は以下のような手順で行います。

  1. エミュレータでテスト対象のアプリを起動して画面キャプチャを取得する
  2. キャプチャからテストしたい画面の要素をスクリプト上にドラッグ&ドロップする
  3. タップやスクロールなど画面操作のコマンドを選択する

MagicPodのテストケース作成画面

コマンドの選択

MagicPodを使ってやっていること

回帰テストの自動化

QAチームでは各プロダクトのリリース毎に次の2つのテストを実施しています。
1つは新規に追加や改善された機能に対するテストです。こちらはマニュアルテストで実行します。
2つ目は、既存の機能に対して行う回帰テストです。MagicPodで自動化しているのはこの回帰テストの一部となります。

MagicPodはiOS・Anddroidのエミュレータを使用してテストを実行することができますが、外部ツールと連携してのテスト実行も可能です。
回帰テスト実行時にはクラウド上でiOS・Androidの実機が利用できるSauceLabsというサービスと連携しています。SauceLabsと連携することで、OSバージョンと機種名を指定して該当する実機でテストを行うことができます。

MagicPodのテスト実行結果の履歴は一覧で見ることができ、
実行結果の詳細ページではテストのステップ毎にスクリーンショットが保存されているため、テスト失敗時にはどこで失敗しているのか把握しやすくなっています。

テスト実行結果の一覧

相互運用性テスト

MagicPodを活用して行っているもう1つのテストが、相互運用性テスト(Interoperability Test)です。
Gunosyではアプリの定期的なリリース以外に、サーバーサイドのリリースも日々行われています。
サーバーサイドの変更がリリース済みのアプリの挙動に影響していないか確認するためのテストが相互運用性テストの役割となります。
このテストは夜間に定期実行しており、Slackのチャンネルに通知されたテスト結果を翌朝に確認する運用をしています。
テストが失敗していた場合には、MagicPod側のテストの問題なのかGunosyのサーバー側で問題が起きているのか切り分けを行い、必要に応じてテストスクリプトの修正またはバグの報告を行っています。

テスト結果のSlack通知

MagicPodによる自動テストを導入して良かったこと

MagicPodで定期的にテスト実行していることによるメリットは以下の3点です。

  • 回帰テストの負担の軽減
    アプリの機能追加や変更が大きくなると回帰テストで実施するテストケースも増加します。サポートしているOSバージョンすべてでテストする場合、さらに負荷がかかります。
    自動テストを導入するとメンテナンス等の工数が新たに発生することはありますが、回帰テストが一部分でも自動化されていることで、体感的には負担は減らせていると感じます。

  • 主要機能が正常動作していることが分かる
    アプリの全ての機能が自動化できるわけではありませんが、メインの機能については自動テストで確認できているため、MagicPodの定期実行のテストが全て成功していると安心感が得られます。

  • バグが検知できる
    MagicPodの自動テストでこれまでに以下のようなバグを見つけることができています。
    ・クラッシュ
    ・表示されるべきコンテンツが表示されない
    ・タップしても画面遷移できない

現状の課題と今後について

メリットがある一方で以下のような課題もあります。

  • 一部プロダクトのみでの運用になっている
    各プロダクトでそれぞれ自動テストの実装上の課題があり、現状1つのプロダクトでの運用のみに留まっています。

  • 一部のテストケースの実行が不安定
    以下のような要因で実行が不安定なテストケースが一部あります。
    ・アプリの仕様で表示が不規則になる箇所があり失敗することがある
    ・MagicPodのエミュレータとSauceLabsで実行環境の違いによる失敗

今後は各プロダクトへのMagicPod利用の拡大と、安定したテスト実行ができるようテストの改善を行っていく予定です。