Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MagicPodでモバイルアプリの”自動テスト”を最速で立ち上げよう

 MagicPodでモバイルアプリの”自動テスト”を最速で立ち上げよう

ソフトウェアテスト自動化カンファレンス2024 at 2024-12-07
株式会社hacomono CTO室QA部
森島 諒

概要
テスト自動化で終わらずにできるだけ早く自動テストとして活躍させよう! iPadアプリの自動テストとしてMagicPodの導入した事例と、自動テストを軌道に乗せるために必要な要素を紹介します。

hacomono Inc.

December 08, 2024
Tweet

More Decks by hacomono Inc.

Other Decks in Technology

Transcript

  1. 2 Copyright hacomono Inc. All Rights Reserved.   森島 諒

    / Ryo Morishima 株式会社hacomono CTO室QA部 ワークスアプリケーションズにて製品開発やチームマネジメントに従事したのち、開発チームの開発生産性向上をミッションに 自動テストなどに取り組む。テストを通した品質への興味が強くなり、その後MIXIにてQAエンジニアやスクラムマスターとして 幅広く品質向上活動を経験し、2023年11月にhacomonoにSETエンジニアとしてjoin。E2E自動テストを中心とした品質向上 活動に従事。 コミュニティ「Scrum Masters Night!」の運営に参加中。 自己紹介
  2. Confidential About 5 会員管理・予約・振替・キャンセル・決済・請求管理・売上管理・債権管理 入退館・EC・POS・本人認証カメラ・QRリーダー ・総合フィットネスクラブ ・ヨガ・ピラティス ・パーソナルジム ・24時間ジム フィットネスクラブ

    ・屋外運動場 ・屋内運動場 ・体育館 ・水泳プール ・学校 ・レジャー施設 公共運動施設 ・Jリーグ(サッカー) ・Bリーグ(バスケットボール) ・野球チーム・サッカーチーム etc スポーツチーム ・スイミングスクール ・ダンス・バレエスクール ・ゴルフスクール ・テニススクール ・カルチャースクール ・空手・体操スクール ・サッカースクール 運動スクール ウェルネス施設の手続きをすべてデジタル化
  3. 6 Copyright hacomono Inc. All Rights Reserved. 目次 1. この発表について

    2. MagicPodについて 3. 自動テストを最速で立ち上げるフロー 4. 立ち上げのつまずき事例 5. フローに込めた学び 6. 自動テスト運用の工夫について
  4. 8 Copyright hacomono Inc. All Rights Reserved. hacomonoのiPad向けモバイルアプリの自動テストに MagicPodを導入した経験をもとに 自動テストの立ち上げ・運用開始までをお話しします

    今回はQAチーム主体でiOSアプリの 自動テストの導入を想定しています ※本発表では自動テストと記載ある箇所は E2Eテストとしてお話しします この発表について
  5. 9 Copyright hacomono Inc. All Rights Reserved. この発表から得られるアウトカム 想定している読者 •

    これから自動テストをはじめようとしている方 この発表にマッチしない方 • 手動テストの自動化を考えている方 自動テストを始めようと思ったときに つまずかないためのポイントがわかる
  6. 10 Copyright hacomono Inc. All Rights Reserved. テスト自動化と言わない理由 手動テストの自動化によるコスト削減はターゲットにしません 自動テストに求めたい要件

    • 高頻度に実行される • 結果に信頼性があること • 冪等性(べきとうせい)があること • いろんな役割を詰め過ぎないこと ◦ パターン網羅しないこと ◦ テストが長すぎないこと
  7. 12 Copyright hacomono Inc. All Rights Reserved. MagicPodについて AIテスト自動化プラットフォーム 手軽に自動テストの立ち上げ・運用ができる

    • テスト実行回数が無制限のため 高頻度のフィードバックを実現可能 • ヘルススコアの自動測定・提案により 自動テストをサポート • 月額利用からはじめられる料金体系 • AIによる自動修復で壊れやすさを軽減 https://magicpod.com/
  8. 14 Copyright hacomono Inc. All Rights Reserved. 自動テスト立ち上げのフェーズ 1. 自動テストをはじめるまで

    2. 自動テストのスケジュール実行まで 3. 自動テストのCI/CD連携まで
  9. 19 Copyright hacomono Inc. All Rights Reserved. つまずき1. 予算が足りない •

    MagicPod年間利用の予算が足りなかった • 日次実行するためのBitrise クレジットが足りなかった 課題
  10. 20 Copyright hacomono Inc. All Rights Reserved. つまずき1. 予算が足りない •

    MagicPod年間利用の予算が足りなかった • 日次実行するためのBitrise クレジットが足りなかった ➔ MagicPodが月額からはじめられたので月額で回避 Bitriseの実行頻度を落とす(火曜・木曜の2回) 課題 解決
  11. 21 Copyright hacomono Inc. All Rights Reserved. つまずき2. シミュレーター向けアプリが作れない •

    ローカルでシミュレーター向けアプリをビルドしたらエラー • Bitriseでシミュレーター向けアプリをビルドしたらエラー (実機のみで開発していたのでシミュレーターを利用してなかった) 課題
  12. 22 Copyright hacomono Inc. All Rights Reserved. つまずき2. シミュレーター向けアプリが作れない ➔

    開発者と連携して Bitriseでビルドできるように最低限修正してもらう (ローカルの修正は工数上あと回しにした) • ローカルでシミュレーター向けアプリをビルドしたらエラー • Bitriseでシミュレーター向けアプリをビルドしたらエラー (実機のみで開発していたのでシミュレーターを利用してなかった) 課題 解決
  13. 23 Copyright hacomono Inc. All Rights Reserved. つまずき3. テスタビリティが低い •

    テキストやロール指定で取得できない要素がある • 指定しようとするとXPathが複雑になる • 複雑になると直しづらく壊れやすい 課題 ダイアログ起動中に ボタン名が重複してたり… 金額が複数箇所で表示される テキストがないボタンがある
  14. 24 Copyright hacomono Inc. All Rights Reserved. つまずき3. テスタビリティが低い •

    テキストやロール指定で取得できない要素がある • 指定しようとするとXPathが複雑になる • 複雑になると直しづらく壊れやすい 課題 ダイアログ起動中に ボタン名が重複してたり… 金額が複数箇所で表示される テキストがないボタンがある ➔ 開発者と連携して プロダクトにaccessibilityIdentifierをセットして 要素を簡単に特定できるようにした 解決
  15. 27 Copyright hacomono Inc. All Rights Reserved. 計画・準備しましょう! いざ自動テスト!…の前に •

    予算はあるか? • どんな体制か? • 自動テストツールはなにか? • 連携する周辺ツールはなにか? • 実行する環境はどこか? • テストの端末はなにか? ヒト・モノ 運用・フロー • ツール利用に社内申請は必要か? • いつからはじめるか? • テスト実行頻度はどのくらいか? • テスト結果はどこに通知するか?
  16. 29 Copyright hacomono Inc. All Rights Reserved. 開発チームと協力できる体制を検討・相談 開発チームの協力を得られると進行がスムーズ •

    シミュレーター用のアプリの準備 • CI/CDのワークフロー準備・連携 • サーバサイドテスト環境の準備 • Apple Developer Program の Teamに追加してもらう • プロダクトのテスタビリティを上げる 協力が必要になる例 自動テストの体制の検討
  17. 32 Copyright hacomono Inc. All Rights Reserved. 一番簡単なテストを作成 最初に作るテストは、とても簡単なアプリの基本操作程度 それ以上はテストを増やしすぎない

    • 簡単なテストを作って成功体験を積む • 始めにテストを作りすぎるとメンテナンス不全に陥りやすい • 基本操作でも自動テストは動くことを保証し続けてくれる • 増やすタイミングは自動テストとして機能したあと 理由
  18. 34 Copyright hacomono Inc. All Rights Reserved. スケジュール設定 実行頻度を毎日以上にしてFlakyなテストを炙り出し テストの信頼性を高める

    • 毎日実行され、結果が届く状況を早期に作れる • 変更がない状態のためテスト実装由来の失敗とわかる • テスタビリティを向上すべき部分も早期にわかる メリット XPathを駆使していたら 要注意かも…
  19. 37 Copyright hacomono Inc. All Rights Reserved. ワークフローにMagicPodステップを追加 MagicPodのステップが用意されていて簡単に連携できる •

    MagicPod API token • Organization name • Project name • Test settings number • WaitForResult • DeleteAppAfterTest 設定項目 ➔ APIトークンをコピーしてセット ➔ MagicPodの組織名を入力 ➔ MagicPodのプロジェクト名を入力 ➔ テスト一括実行の番号を入力 ➔ テスト完了まで待機するか ➔ アップロードしたファイルを削除するか スケジュール実行のため 「false」に設定 削除の必要がなかったので 「Not delete」に設定 組織名もプロジェクト名も URLに使われている名前
  20. 41 Copyright hacomono Inc. All Rights Reserved. 立ち上げから運用へ まだテスト数件が自動的に実行されている状況になったのみ 運用を続けるためにも工夫が必要

    • 高速なフィードバックサイクルを習慣化する • 自動テストを健全に保つ • 過度にテストを増やさない・過度にテストしない 継続の工夫
  21. 42 Copyright hacomono Inc. All Rights Reserved. 習慣化する テストから信頼性の高い高速なフィードバックを得たら フィードバックを元に行動する習慣をつける

    ➔ 毎日届くテスト実行結果の通知を確認する ➔ 失敗の場合は原因の切り分けをする テストが原因の場合は修正して再実行する
  22. 43 Copyright hacomono Inc. All Rights Reserved. 習慣化する テストから信頼性の高い高速なフィードバックを得たら フィードバックを元に行動する習慣をつける

    ➔ 毎日届くテスト実行結果の通知を確認する ➔ 失敗の場合は原因の切り分けをする テストが原因の場合は修正して再実行する 成功していたら リアクションするなど 見てることを知らせる
  23. 44 Copyright hacomono Inc. All Rights Reserved. 習慣化する テストから信頼性の高い高速なフィードバックを得たら フィードバックを元に行動する習慣をつける

    ➔ 毎日届くテスト実行結果の通知を確認する ➔ 失敗の場合は原因の切り分けをする テストが原因の場合は修正して再実行する 失敗したら確認することを 宣言したり 失敗原因と修正内容を 同じチャンネルに投稿する
  24. 45 Copyright hacomono Inc. All Rights Reserved. 朝会などの日次定例でテスト結果をチームで確認するだけ 失敗は一緒に直したりしてその場で解消したり、課題を積んだりする 習慣化する

    テストからの信頼できる高速なフィードバックを得たら フィードバックを元に行動する習慣をつける 習慣化実践例:今日の実行結果確認タイムの導入 ➔ 朝会に自分が参加できないときも他の人が修正してくれるようになった
  25. 46 Copyright hacomono Inc. All Rights Reserved. 健全に保つ MagicPodのヘルススコアを参考にアクションする •

    自動テストプロジェクトの健全性を独自のロジックに元に表示 • 改善すべきアクションを表示してくれる 伊藤望「MagicPodのヘルススコアはどのように決まるのか」 P4, P11