Slide 1

Slide 1 text

ソフトウェアテスト自動化カンファレンス2024 株式会社hacomono 森島 諒  MagicPodでモバイルアプリの”自動テスト”を 最速で立ち上げよう

Slide 2

Slide 2 text

2 Copyright hacomono Inc. All Rights Reserved.   森島 諒 / Ryo Morishima 株式会社hacomono CTO室QA部 ワークスアプリケーションズにて製品開発やチームマネジメントに従事したのち、開発チームの開発生産性向上をミッションに 自動テストなどに取り組む。テストを通した品質への興味が強くなり、その後MIXIにてQAエンジニアやスクラムマスターとして 幅広く品質向上活動を経験し、2023年11月にhacomonoにSETエンジニアとしてjoin。E2E自動テストを中心とした品質向上 活動に従事。 コミュニティ「Scrum Masters Night!」の運営に参加中。 自己紹介

Slide 3

Slide 3 text

hacomonoについて

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Confidential About 5 会員管理・予約・振替・キャンセル・決済・請求管理・売上管理・債権管理 入退館・EC・POS・本人認証カメラ・QRリーダー ・総合フィットネスクラブ ・ヨガ・ピラティス ・パーソナルジム ・24時間ジム フィットネスクラブ ・屋外運動場 ・屋内運動場 ・体育館 ・水泳プール ・学校 ・レジャー施設 公共運動施設 ・Jリーグ(サッカー) ・Bリーグ(バスケットボール) ・野球チーム・サッカーチーム etc スポーツチーム ・スイミングスクール ・ダンス・バレエスクール ・ゴルフスクール ・テニススクール ・カルチャースクール ・空手・体操スクール ・サッカースクール 運動スクール ウェルネス施設の手続きをすべてデジタル化

Slide 6

Slide 6 text

6 Copyright hacomono Inc. All Rights Reserved. 目次 1. この発表について 2. MagicPodについて 3. 自動テストを最速で立ち上げるフロー 4. 立ち上げのつまずき事例 5. フローに込めた学び 6. 自動テスト運用の工夫について

Slide 7

Slide 7 text

1. この発表について

Slide 8

Slide 8 text

8 Copyright hacomono Inc. All Rights Reserved. hacomonoのiPad向けモバイルアプリの自動テストに MagicPodを導入した経験をもとに 自動テストの立ち上げ・運用開始までをお話しします 今回はQAチーム主体でiOSアプリの 自動テストの導入を想定しています ※本発表では自動テストと記載ある箇所は E2Eテストとしてお話しします この発表について

Slide 9

Slide 9 text

9 Copyright hacomono Inc. All Rights Reserved. この発表から得られるアウトカム 想定している読者 ● これから自動テストをはじめようとしている方 この発表にマッチしない方 ● 手動テストの自動化を考えている方 自動テストを始めようと思ったときに つまずかないためのポイントがわかる

Slide 10

Slide 10 text

10 Copyright hacomono Inc. All Rights Reserved. テスト自動化と言わない理由 手動テストの自動化によるコスト削減はターゲットにしません 自動テストに求めたい要件 ● 高頻度に実行される ● 結果に信頼性があること ● 冪等性(べきとうせい)があること ● いろんな役割を詰め過ぎないこと ○ パターン網羅しないこと ○ テストが長すぎないこと

Slide 11

Slide 11 text

2. MagicPodについて

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

3. 自動テストを最速で立ち上げるフロー

Slide 14

Slide 14 text

14 Copyright hacomono Inc. All Rights Reserved. 自動テスト立ち上げのフェーズ 1. 自動テストをはじめるまで 2. 自動テストのスケジュール実行まで 3. 自動テストのCI/CD連携まで

Slide 15

Slide 15 text

15 Copyright hacomono Inc. All Rights Reserved. フェーズ1. 自動テストをはじめるまで

Slide 16

Slide 16 text

16 Copyright hacomono Inc. All Rights Reserved. フェーズ2. 自動テストのスケジュール実行まで

Slide 17

Slide 17 text

17 Copyright hacomono Inc. All Rights Reserved. フェーズ3. CI/CD(Bitrise)連携まで

Slide 18

Slide 18 text

4. 立ち上げのつまずき事例

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

20 Copyright hacomono Inc. All Rights Reserved. つまずき1. 予算が足りない ● MagicPod年間利用の予算が足りなかった ● 日次実行するためのBitrise クレジットが足りなかった ➔ MagicPodが月額からはじめられたので月額で回避 Bitriseの実行頻度を落とす(火曜・木曜の2回) 課題 解決

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

24 Copyright hacomono Inc. All Rights Reserved. つまずき3. テスタビリティが低い ● テキストやロール指定で取得できない要素がある ● 指定しようとするとXPathが複雑になる ● 複雑になると直しづらく壊れやすい 課題 ダイアログ起動中に ボタン名が重複してたり… 金額が複数箇所で表示される テキストがないボタンがある ➔ 開発者と連携して プロダクトにaccessibilityIdentifierをセットして 要素を簡単に特定できるようにした 解決

Slide 25

Slide 25 text

5. フローに込めた学び

Slide 26

Slide 26 text

26 Copyright hacomono Inc. All Rights Reserved. フェーズ1. 自動テストをはじめるまで

Slide 27

Slide 27 text

27 Copyright hacomono Inc. All Rights Reserved. 計画・準備しましょう! いざ自動テスト!…の前に ● 予算はあるか? ● どんな体制か? ● 自動テストツールはなにか? ● 連携する周辺ツールはなにか? ● 実行する環境はどこか? ● テストの端末はなにか? ヒト・モノ 運用・フロー ● ツール利用に社内申請は必要か? ● いつからはじめるか? ● テスト実行頻度はどのくらいか? ● テスト結果はどこに通知するか?

Slide 28

Slide 28 text

28 Copyright hacomono Inc. All Rights Reserved. フェーズ1. 自動テストをはじめるまで

Slide 29

Slide 29 text

29 Copyright hacomono Inc. All Rights Reserved. 開発チームと協力できる体制を検討・相談 開発チームの協力を得られると進行がスムーズ ● シミュレーター用のアプリの準備 ● CI/CDのワークフロー準備・連携 ● サーバサイドテスト環境の準備 ● Apple Developer Program の Teamに追加してもらう ● プロダクトのテスタビリティを上げる 協力が必要になる例 自動テストの体制の検討

Slide 30

Slide 30 text

30 Copyright hacomono Inc. All Rights Reserved. フェーズ2. 自動テストのスケジュール実行まで

Slide 31

Slide 31 text

31 Copyright hacomono Inc. All Rights Reserved. フェーズ2. 自動テストのスケジュール実行まで

Slide 32

Slide 32 text

32 Copyright hacomono Inc. All Rights Reserved. 一番簡単なテストを作成 最初に作るテストは、とても簡単なアプリの基本操作程度 それ以上はテストを増やしすぎない ● 簡単なテストを作って成功体験を積む ● 始めにテストを作りすぎるとメンテナンス不全に陥りやすい ● 基本操作でも自動テストは動くことを保証し続けてくれる ● 増やすタイミングは自動テストとして機能したあと 理由

Slide 33

Slide 33 text

33 Copyright hacomono Inc. All Rights Reserved. フェーズ2. 自動テストのスケジュール実行まで

Slide 34

Slide 34 text

34 Copyright hacomono Inc. All Rights Reserved. スケジュール設定 実行頻度を毎日以上にしてFlakyなテストを炙り出し テストの信頼性を高める ● 毎日実行され、結果が届く状況を早期に作れる ● 変更がない状態のためテスト実装由来の失敗とわかる ● テスタビリティを向上すべき部分も早期にわかる メリット XPathを駆使していたら 要注意かも…

Slide 35

Slide 35 text

35 Copyright hacomono Inc. All Rights Reserved. フェーズ3. CI/CD(Bitrise)連携まで

Slide 36

Slide 36 text

36 Copyright hacomono Inc. All Rights Reserved. フェーズ3. CI/CD(Bitrise)連携まで

Slide 37

Slide 37 text

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に使われている名前

Slide 38

Slide 38 text

38 Copyright hacomono Inc. All Rights Reserved. MagicPodのスタートガイドがおすすめ 困った時は

Slide 39

Slide 39 text

39 Copyright hacomono Inc. All Rights Reserved. 困った時は MagicPodサポートへ問い合わせたり ユーザーコミュニティ(Slack)へ質問しよう MagicPod ユーザーコミュニティ MagicPod 問い合わせ方法

Slide 40

Slide 40 text

6. 自動テスト運用の工夫について

Slide 41

Slide 41 text

41 Copyright hacomono Inc. All Rights Reserved. 立ち上げから運用へ まだテスト数件が自動的に実行されている状況になったのみ 運用を続けるためにも工夫が必要 ● 高速なフィードバックサイクルを習慣化する ● 自動テストを健全に保つ ● 過度にテストを増やさない・過度にテストしない 継続の工夫

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

44 Copyright hacomono Inc. All Rights Reserved. 習慣化する テストから信頼性の高い高速なフィードバックを得たら フィードバックを元に行動する習慣をつける ➔ 毎日届くテスト実行結果の通知を確認する ➔ 失敗の場合は原因の切り分けをする テストが原因の場合は修正して再実行する 失敗したら確認することを 宣言したり 失敗原因と修正内容を 同じチャンネルに投稿する

Slide 45

Slide 45 text

45 Copyright hacomono Inc. All Rights Reserved. 朝会などの日次定例でテスト結果をチームで確認するだけ 失敗は一緒に直したりしてその場で解消したり、課題を積んだりする 習慣化する テストからの信頼できる高速なフィードバックを得たら フィードバックを元に行動する習慣をつける 習慣化実践例:今日の実行結果確認タイムの導入 ➔ 朝会に自分が参加できないときも他の人が修正してくれるようになった

Slide 46

Slide 46 text

46 Copyright hacomono Inc. All Rights Reserved. 健全に保つ MagicPodのヘルススコアを参考にアクションする ● 自動テストプロジェクトの健全性を独自のロジックに元に表示 ● 改善すべきアクションを表示してくれる 伊藤望「MagicPodのヘルススコアはどのように決まるのか」 P4, P11

Slide 47

Slide 47 text

47 Copyright hacomono Inc. All Rights Reserved. 自動テストの増やしすぎ・自動テストに盛り込みすぎに注意しよう テストピラミッドなどを参考にして開発者と対話していこう 健全に保つ https://gihyo.jp/dev/serial/01/savanna-letter/0005

Slide 48

Slide 48 text

楽しい自動テストライフを!

Slide 49

Slide 49 text

We're hiring! 他のポジションも 募集しております 🙏