Slide 1

Slide 1 text

MagicPodで始める がんばらない回帰試験の⾃動化 MagicPodユーザーLT会 2023/07/14(⾦) サイボウズOfficeモバイルチーム ⽟⽊ 岳爾 Automated Regression Testing Journey with MagicPod

Slide 2

Slide 2 text

自己紹介 2 § ۄ໦ַ࣐ / Gakuji Tamaki § αΠϘ΢ζגࣜձࣾ QAΤϯδχΞ § αΠϘ΢ζ Office ϞόΠϧͷQAۀ຿ § MagicPodを使ったE2E自動テストの設計と運用 § Twitter: @gkzvoice § झຯ: ଍Λ͖ͭͳ͕Β ࣗసंͰࢁΛొΔ͜ͱ

Slide 3

Slide 3 text

チームワークあふれる 社会を創る サイボウズの理念は「チームワークあふれる社会を創る」こと。 私たちはその理念に沿ってチームワークを⽀えるソフトウェアを 開発し続けてきました。 サイボウズについて

Slide 4

Slide 4 text

開発の知識がなくても 業務に合わせたシステムを かんたんに作成できる クラウドサービス 主⼒製品 参考: https://cybozu.co.jp/logotypes

Slide 5

Slide 5 text

主⼒製品 スケジュール共有 ワークフローなど 中⼩企業の情報共有を ⽀援するサービス 参考: https://cybozu.co.jp/logotypes

Slide 6

Slide 6 text

§ 1.前提 § 2.MagicPodの導⼊経緯 § 3.MagicPodをこんなふうに使っています § 4.MagicPodで回帰試験の⾃動化をやってみてよかったこと § 5.MagicPodで回帰試験の⾃動化の失敗談と学び § 6.MagicPodではじめるがんばらない回帰試験の⾃動化の⼀例 § 7.MagicPodで回帰試験の⾃動化、その先に⾒据えること § 8.このLTで⼀番お伝えしたいこと 6 ⽬次

Slide 7

Slide 7 text

§ 1.前提 § 2.MagicPodの導⼊経緯 § 3.MagicPodをこんなふうに使っています § 4.MagicPodで回帰試験の自動化をやってみてよかったこと § 5.MagicPodで回帰試験の⾃動化の失敗談と学び § 6.MagicPodではじめるがんばらない回帰試験の⾃動化の⼀例 § 7.MagicPodで回帰試験の⾃動化、その先に⾒据えること § 8.このLTで⼀番お伝えしたいこと 7 ⽬次

Slide 8

Slide 8 text

8 1.前提 § MagicPod導⼊からクラウド端末と実機端末が軌道にのるまでは専任 § 軌道にのるまでは専任じゃないとしんどい § MagicPodで自動試験したいアプリケーションは「サイボウズ Office」の 公式モバイル版アプリ § iOS/Android それぞれ提供している § 開発プロセスとQAの業務(次のスライド)

Slide 9

Slide 9 text

9 開発プロセスとQAの業務 1.前提

Slide 10

Slide 10 text

§ 1.前提 § 2.MagicPodの導入経緯 § 3.MagicPodをこんなふうに使っています § 4.MagicPodで回帰試験の自動化をやってみてよかったこと § 5.MagicPodで回帰試験の⾃動化の失敗談と学び § 6.MagicPodではじめるがんばらない回帰試験の自動化の一例 § 7.MagicPodで回帰試験の自動化、その先に見据えること § 8.このLTで一番お伝えしたいこと 10 目次

Slide 11

Slide 11 text

11 2.MagicPod の導入経緯 § 2-1.なぜ⾃動テストを導⼊したのか? § 2-2.なぜ⾃動テストの導⼊のための⼿段として、 MagicPodを採⽤したのか?

Slide 12

Slide 12 text

12 2.MagicPod の導入経緯 § 2-1.なぜ⾃動テストを導⼊したのか? § 2-2.なぜ⾃動テストの導⼊のための⼿段として、 MagicPodを採⽤したのか?

Slide 13

Slide 13 text

???「リリースを早くしたいんだ。 さあ、馬車馬のように働けー。」 13 ※これはフィクションです。 参考: https://www.irasutoya.com/2014/10/blog-post_89.html

Slide 14

Slide 14 text

早くリリースしたいサイ ボウズOfficeモバイル チームの前に立ちは だかる高いハード ル!! 14 参考: https://www.irasutoya.com/2019/01/blog-post_52.html

Slide 15

Slide 15 text

サイボウズOfficeモバイルチームの 前に立ちはだかるハードル。 その正体の手がかりは開発プロセス とQAの業務フローにあります。 もういちど見てみましょう。 15 参考: https://www.irasutoya.com/2019/01/blog-post_52.html

Slide 16

Slide 16 text

16 開発プロセスとQAの業務(再掲) 2-1.なぜ自動テストを導入したのか? ???

Slide 17

Slide 17 text

17 開発プロセスとQAの業務(再掲) 2-1.なぜ自動テストを導入したのか?

Slide 18

Slide 18 text

早くリリースしたい、サイ ボウズOfficeモバイル チームの前に立ちはだ かる高いハードル! それは試験だった!! 18 参考: https://www.irasutoya.com/2019/01/blog-post_52.html

Slide 19

Slide 19 text

19 2-1.なぜ自動テストを導入したのか? 機能A 機能B 機能C 機能A 機能B 機能A 参考: https://icooon-mono.com/11324-サラリーマン/ , https://www.browserstack.com/guide/regression-testing を参考に筆者作成 スプリント 試験のボリューム/スプリント スプリントを重ねるごとに 試験は増えるばかり。

Slide 20

Slide 20 text

20 2-1.なぜ自動テストを導入したのか? 機能A 機能B 機能C 機能A 機能B 機能A 参考: https://icooon-mono.com/11324-サラリーマン/ , https://www.browserstack.com/guide/regression-testing を参考に筆者作成 スプリント 試験のボリューム/スプリント スプリントを重ねるごとに試験は 増えるばかり。 一方でQAの人手は増えません、、。

Slide 21

Slide 21 text

21 2-1.なぜ自動テストを導入したのか? 機能A 機能B 機能C 機能A 機能B 機能A 参考: https://icooon-mono.com/11324-サラリーマン/ , https://www.browserstack.com/guide/regression-testing を参考に筆者作成 スプリント 試験のボリューム/スプリント ところで、 増え続ける試験には ある特徴がありました、、!

Slide 22

Slide 22 text

22 2-1.なぜ自動テストを導入したのか? 機能A 機能B 機能C 機能A 機能B 機能A 参考: https://icooon-mono.com/11324-サラリーマン/ , https://www.browserstack.com/guide/regression-testing を参考に筆者作成 スプリント 試験のボリューム/スプリント 増え続けるのは 回帰試験だけ! 新機能分の試験は毎回同じくらい

Slide 23

Slide 23 text

23 2-1.なぜ自動テストを導入したのか? 機能A 機能B 機能C 機能A 機能B 機能A 参考: https://icooon-mono.com/11324-サラリーマン/ , https://icooon-mono.com/16067-ロボットアイコン1/ https://www.browserstack.com/guide/regression-testing を参考に筆者作成 スプリント 試験のボリューム/スプリント 増え続ける 回帰試験を 自動化しよう!

Slide 24

Slide 24 text

24 2.MagicPod の導入経緯 §2-1.なぜ⾃動テストを導⼊したのか? §2-2.なぜ⾃動テストの導⼊のための⼿段として、 MagicPodを採⽤したのか?

Slide 25

Slide 25 text

自動試験と手動試験 のある勘違い 25 参考: https://www.irasutoya.com/2016/11/blog-post_652.html

Slide 26

Slide 26 text

26 2-2.なぜ自動テストの導入のための手段として、 MagicPodを採用したのか? ※上記のグラフはあくまで筆者のイメージです。 手動試験 スプリント 自動試験 ⾃動試験のコストを⼿動試験と⽐較 するときによくみるこのグラフ。 実際は、、? 試験実施の手間/スプリント

Slide 27

Slide 27 text

27 2-2.なぜ自動テストの導入のための手段として、 MagicPodを採用したのか? スプリント 自動試験 ⾃動試験のコストを⼿動試験と⽐較 するときによくみるこのグラフ。 実際は、導⼊コスト分 が⾒積もられていない のでは? ※上記のグラフはあくまで筆者のイメージです。 試験実施の手間/スプリント

Slide 28

Slide 28 text

28 2-2.なぜ自動テストの導入のための手段として、 MagicPodを採用したのか? MagicPod スプリント 試験実施の手間/スプリント 自動試験 ⾃動試験の⼿間、特に 導⼊コストを抑えたい ※上記のグラフはあくまで筆者のイメージです。

Slide 29

Slide 29 text

29 2-2.なぜ自動テストの導入のための手段として、 MagicPodを採用したのか? 他にも理由があります! § 誰でも自動テストが書ける。 § モバイルの自動テストのツールのなかで 安定していそう。(導入検討時) 参考: https://www.irasutoya.com/2020/03/blog-post_74.html

Slide 30

Slide 30 text

30 2.MagicPod の導入経緯(まとめ?) リリースを早くしたい。 そのために、 増え続ける回帰試験を自動化したい。

Slide 31

Slide 31 text

リリースを早くしたいか ら、試験はテキトーでい いなんてことはない! 31 参考: https://www.irasutoya.com/2014/10/blog-post_35.html

Slide 32

Slide 32 text

32 Ø チーム全体でのアプローチとは、チームメンバー全員が プロダクトの品質に責任を持つことを意味します。 Ø その責任の一端には、テスト以外の開発タスクと並行し て、テストタスクを完了させることも含まれています。 Ø 速く提供することよりも、可能な限り最高の品質 を提供 することが目標である場合、チームはプラクティスの強 固な基盤を構築します。 参考: Janet Gregory, Lisa Crispin,『Agile Testing Condensed Japanese Edition』, 2019, p7 "Agile Testing Condensed Japanese Edition"

Slide 33

Slide 33 text

33 参考: Janet Gregory, Lisa Crispin,『Agile Testing Condensed Japanese Edition』, 2019, p7 "Agile Testing Condensed Japanese Edition" 私の理解 § リリースを早くする ≠ 品質を蔑ろにす る § 「最後にテストするのでははく、ずっと テストする」ようにチーム一丸で、かつ 常に品質保証と向き合うべき

Slide 34

Slide 34 text

34 2.MagicPod の導入経緯(まとめ) 品質を意識した上で、 リリースを早くしたい。 そのために、 増え続ける回帰試験を自動化したい。

Slide 35

Slide 35 text

§ 1.前提 § 2.MagicPodの導入経緯 § 3.MagicPodをこんなふうに使っています § 4.MagicPodで回帰試験の自動化をやってみてよかったこと § 5.MagicPodで回帰試験の自動化の失敗談と学び § 6.MagicPodではじめるがんばらない回帰試験の自動化の一例 § 7.MagicPodで回帰試験の自動化、その先に見据えること § 8.このLTで一番お伝えしたいこと 35 目次

Slide 36

Slide 36 text

36 ☆ アーカイブ NO.(^1) - iOS/Android ☆ GitHub Actions - GitHub Hosted Runner - Self Hosted Runner on Macbook @弊社オフィス ☆ iOS/Android 端末の試験環境 - MagicPod クラウド端末 - 弊社オフィスに置いてある実機端末 Schedule? ^1: アーカイブとは、それぞれ以下を指す。 試験環境が iOSシミュレータの場合は Appファイル、iOS 実機端末の場合は ipaファイル、Androidエミュレータ/実機端末の場合は apkファイル。 参考: https://support.magic-pod.com/hc/ja/articles/4408836787609 , https://github.com/logos , https://github.com/actions , https://magicpod.com/resources/brand ☆ MagicPodの定期実行の結果の記録 - 弊社のサービスのKintone 3.MagicPod をこんなふうに使っています

Slide 37

Slide 37 text

§ 1.前提 § 2.MagicPodの導入経緯 § 3.MagicPodをこんなふうに使っています § 4.MagicPodで回帰試験の自動化をやってみてよかったこと § 5.MagicPodで回帰試験の自動化の失敗談と学び § 6.MagicPodではじめるがんばらない回帰試験の自動化の一例 § 7.MagicPodで回帰試験の自動化、その先に見据えること § 8.このLTで一番お伝えしたいこと 37 目次

Slide 38

Slide 38 text

38 4.MagicPodで回帰試験の自動化をやってみてよ かったこと § みなさんがおっしゃるとおり使いやすく、すんなり導入できた ◎ § Se◯enium の初期セットアップが大変だった記憶があるので余計にすごく感じる § サポート力が尋常じゃない ◎ § 謎エラーに対するアドバイスには幾度なく助けられました § MagicPodのデグレが起きることがない ◎ § ツールとしての信頼性が高い

Slide 39

Slide 39 text

§ 1.前提 § 2.MagicPodの導入経緯 § 3.MagicPodをこんなふうに使っています § 4.MagicPodで回帰試験の自動化をやってみてよかったこと § 5.MagicPodで回帰試験の自動化の失敗談と学び § 6.MagicPodではじめるがんばらない回帰試験の自動化の一例 § 7.MagicPodで回帰試験の自動化、その先に見据えること § 8.このLTで一番お伝えしたいこと 39 目次

Slide 40

Slide 40 text

40 5.MagicPodで回帰試験の自動化の失敗談と学び 参考: https://magicpod.com/resources/brand もっとはやく、 MagicPodさんのベス トプラクティスに 乗っかればよかった

Slide 41

Slide 41 text

41 MagicPodさんの ベストプラクティス!!!

Slide 42

Slide 42 text

42 “毎日テストを実行する”ことから始める 参考: https://support.magic-pod.com/hc/ja/articles/7515195778457

Slide 43

Slide 43 text

毎日テストを実行する テストのメンテをする テストを増やす 43 “毎日テストを実行する”ことから始める。 できることを少しずつ増やしていく。 https://support.magic-pod.com/hc/ja/articles/7515195778457 を参考に筆者作成

Slide 44

Slide 44 text

44 5.MagicPodで回帰試験の自動化の失敗談と学び 実機端末を自動テストの試験 環境にしようとがんばってし まった、、。

Slide 45

Slide 45 text

45 実機端末で自動テストする3つの難しさ 参考: https://support.magic-pod.com/hc/ja/articles/6468420020633 ←このような設定 ファイルを用意し さえすればい い、、?

Slide 46

Slide 46 text

46 実機端末で自動テストする3つの難しさ n 実機端末の自動テスト環境の構築そのもの n 1台のMacbookと1台の実機端末の直列は用意できた n 並列複数台はドキュメントが乏しく茨の道 n 例)実機端末ごとにユニークなポートを割り当てても同じ端末でテストが走ってしまう問題 n 実機端末の自動テスト環境のメンテ n 実機端末/Macbook/MagicPodDesktop/Xcodeなどのアップデート n Macbookと実機端末をつなぐケーブルの不調 n実機端末を使ったクリーンな試験環境を維持すること n 直前のテストケースが落ちたことを、後続のテストケースは知る術がない。テストケースの冒頭で落ちた場合のケアをすると実行時間が長く なるので避けたい。。。 n MagicPodDesktopのプロセスがゾンビ化することを防ぐ、、。

Slide 47

Slide 47 text

§ 1.前提 § 2.MagicPodの導入経緯 § 3.MagicPodをこんなふうに使っています § 4.MagicPodで回帰試験の自動化をやってみてよかったこと § 5.MagicPodで回帰試験の自動化の失敗談と学び § 6.MagicPodではじめるがんばらない回帰試験の自動化の一例 § 7.MagicPodで回帰試験の自動化、その先に見据えること § 8.このLTで一番お伝えしたいこと 47 目次

Slide 48

Slide 48 text

6-1.実機端末はできるだけ使わない。 6-2.MagicPodの定期実行の結果はKintoneで管理 48 6.MagicPodではじめるがんばらない回帰試験の 自動化の一例

Slide 49

Slide 49 text

6-1.実機端末はできるだけ使わない 6-2.MagicPodの定期実行の結果はKintoneで管理 49 6.MagicPodではじめるがんばらない回帰試験の 自動化の一例

Slide 50

Slide 50 text

50 6-1.実機端末はできるだけ使わない 参考: https://magicpod.com/resources/brand 実機端末を使わざるを得ないテ ストケースは、試験内容を MagicPodでできる試験内容に変 えることも検討!

Slide 51

Slide 51 text

51 6-1.実機端末はできるだけ使わない 参考: https://github.com/Magic-Pod/japanese-issue-and-doc/issues/516 issue/要望を書こう! issue/要望は通ることもある!

Slide 52

Slide 52 text

52 "クラウドにアップロードしたファイルを選択でき る"と何がうれしいのか? 参考: https://github.com/Magic-Pod/japanese-issue-and-doc/issues/516 予めPCに配置したアーカイブで MagicPodDesktopと端末などを起動 テストケース開始直後にバージョン アップ前のアーカイブをインストール テストケース中にリリース予定の アーカイブをインストール これまではクラウド端末上でテストケース 中にアーカイブをインストールする手段が なかった。 そのため、バージョンアップ試験は実機端 末とTestFlight/Firebase App Testerを使って バージョンアップ後のアーカイブをインス トールすることで自動化していた。

Slide 53

Slide 53 text

53 "クラウドにアップロードしたファイルを選択でき る"と何がうれしいのか? 参考: https://github.com/Magic-Pod/japanese-issue-and-doc/issues/516 ところが、"クラウドにアップロードしたファ イルを選択できる"機能があることで、テス トケース中に「リリース予定のアーカイ ブ」(^1)をインストールすることができるよ うになった。 そのため、バージョンアップ試験の試験環 境は実機端末からMagicPodのクラウド端末 へ移行することができた。 ^1:「リリース予定のアーカイブ」は「MagicPodに最後にアップロードされたアーカイブ」 と いう制約はある。 バージョンアップ前の アーカイブでMagicPod のクラウド端末を起動 テストケース中にリ リース予定のアーカイ ブをインストール

Slide 54

Slide 54 text

6-1.実機端末はできるだけ使わない 6-2.MagicPodの定期実行の結果はKintoneで管理 54 6.MagicPodではじめるがんばらない回帰試験の 自動化の一例

Slide 55

Slide 55 text

55 ☆ アーカイブ NO.(^1) - iOS/Android ☆ GitHub Actions - GitHub Hosted Runner - Self Hosted Runner on Macbook @弊社オフィス ☆ iOS/Android 端末の試験環境 - MagicPod クラウド端末 - 弊社オフィスに置いてある実機端末 Schedule? ^1: アーカイブとは、それぞれ以下を指す。 試験環境が iOSシミュレータの場合は Appファイル、iOS 実機端末の場合は ipaファイル、Androidエミュレータ/実機端末の場合は apkファイル。 参考: https://support.magic-pod.com/hc/ja/articles/4408836787609 , https://github.com/logos , https://github.com/actions , https://magicpod.com/resources/brand ☆ MagicPodの定期実行の結果の記録 - 弊社のサービスのKintone MagicPod をこんなふうに使っています(再掲)

Slide 56

Slide 56 text

56 6-2.MagicPodの定期実行の結果はKintoneで管理 参考: https://jp.cybozu.help/k/ja/user/app_settings/report.html 実行結果を日次で追ったり。(^1) ^1: デモ用に作成したグラフです。実際のものとは異なります。

Slide 57

Slide 57 text

57 6-2.MagicPodの定期実行の結果はKintoneで管理 参考: https://jp.cybozu.help/k/ja/user/app_settings/report.html, https://support.magic-pod.com/hc/ja/articles/20127503942425 実行時間の推移を追うこともでき る。(^1) ^1: デモ用に作成したグラフです。実際のものとは異なります。

Slide 58

Slide 58 text

58 6-2.MagicPodの定期実行の結果はKintoneで管理 参考: https://jp.cybozu.help/k/ja/user/app_settings/report.html, 落ちた原因でチームメンバーに共有したほうがいいものはメンションをつけて共有している。 (^1) ^1: デモ用に作成した画面です。実際のものとは異なります。

Slide 59

Slide 59 text

§ 1.前提 § 2.MagicPodの導入経緯 § 3.MagicPodをこんなふうに使っています § 4.MagicPodで回帰試験の自動化をやってみてよかったこと § 5.MagicPodで回帰試験の自動化の失敗談と学び § 6.MagicPodではじめるがんばらない回帰試験の自動化の一例 § 7.MagicPodで回帰試験の自動化、その先に見据えること § 8.このLTで一番お伝えしたいこと 59 目次

Slide 60

Slide 60 text

60 7.MagicPodで回帰試験の⾃動化、その先に⾒据 えること § 実行時間の短縮 § ⾃動化できていない回帰試験の⾃動化

Slide 61

Slide 61 text

§ 1.前提 § 2.MagicPodの導入経緯 § 3.MagicPodをこんなふうに使っています § 4.MagicPodで回帰試験の自動化をやってみてよかったこと § 5.MagicPodで回帰試験の自動化の失敗談と学び § 6.MagicPodではじめるがんばらない回帰試験の自動化の一例 § 7.MagicPodで回帰試験の自動化、その先に見据えること § 8.このLTで一番お伝えしたいこと 61 目次

Slide 62

Slide 62 text

62 8.このLTで⼀番お伝えしたいこと MagicPodは目的地に コスパよく向かうため の相乗りタクシー 参考: https://www.irasutoya.com/2018/02/blog-post_209.html

Slide 63

Slide 63 text

63 MagicPodは目的地にコスパよく向かうための相乗 りタクシー MagicPod スプリント 試験実施の手間/スプリント 自動試験 ⾃動試験の⼿間、特に 導⼊コストを抑えるた めに何ができるか? 考えよう! ※上記のグラフはあくまで筆者のイメージです。

Slide 64

Slide 64 text

64 MagicPodは目的地にコスパよく向かうための相 乗りタクシー 自動化そのものを頑張らないという割り切り § 自動化の内製化ではなく、ありもののSaaSの導入に踏み切っ た決め手はなにか? § 自動化の内製化を妥協する代わりに、優先したかったことは なにか?

Slide 65

Slide 65 text

相乗りタクシーであることはわかった けれども、それでも目的地まで行ける なら行きたい 、、。 65

Slide 66

Slide 66 text

66 MagicPodという相乗りタクシーで目的地まで 向かうための思考フレームワーク(案) MagicPodの既存の機能の 延⻑でできそう 無理難題な感 少数のユーザーが抱えているニーズ 多くのユーザーが抱えているニーズ 参考: https://www.irasutoya.com/2018/02/blog-post_209.html

Slide 67

Slide 67 text

もし、MagicPodのユーザーさんや 機能がどんどん増えていくとしたら、、? 67

Slide 68

Slide 68 text

68 MagicPodという相乗りタクシーは より大きく、より快適になるのでは?笑 MagicPodの既存の機能の 延⻑でできそう 無理難題な感 少数のユーザーが抱えているニーズ 多くのユーザーが抱えているニーズ 参考: https://www.irasutoya.com/2018/02/blog-post_209.html

Slide 69

Slide 69 text

MagicPodのユーザーコミュニティーを もっともっと盛り上げましょう!! 69

Slide 70

Slide 70 text

70 参考資料 n Regression Testing : Definition, How it works | BrowserStack, https://www.browserstack.com/guide/regression-testing , 2023/07/14 n Appファイルの作成方法 – MagicPodヘルプセンター, https://support.magic- pod.com/hc/ja/articles/4408836787609 , 2023/07/14 n スタートガイド:5.テスト自動化の習慣を最速で定着させる(モバイルアプリ) – MagicPodヘルプセン ター, https://support.magic-pod.com/hc/ja/articles/7515195778457 , 2023/07/14 n 一括テスト実行・コマンドラインテスト実行(ローカルPCテスト) – MagicPodヘルプセン ター, https://support.magic-pod.com/hc/ja/articles/6468420020633 , 2023/07/14 n クラウドアップロードした任意のAppファイル(アーカイブ)をMagicPodのクラウド環境下でインストールできるよ うにする · Issue #516 · Magic-Pod/japanese-issue-and-doc, https://github.com/Magic-Pod/japanese-issue-and- doc/issues/516 , 2023/07/14 n iOSの実行時間がAndroidよりも遅い – MagicPodヘルプセンター, https://support.magic- pod.com/hc/ja/articles/20127503942425 , 2023/07/14 n グラフ機能の概要 | kintone ヘルプ, https://jp.cybozu.help/k/ja/user/app_settings/report.html , 2023/07/14

Slide 71

Slide 71 text

MagicPodで始める がんばらない回帰試験の⾃動化 ご清聴ありがとうございました! Automated Regression Testing Journey with MagicPod