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

セーフィーにおけるMagicpod活用の歴史と改善の取り組み

森重 丈
March 03, 2025

 セーフィーにおけるMagicpod活用の歴史と改善の取り組み

森重 丈

March 03, 2025
Tweet

Other Decks in Business

Transcript

  1. 2 © Safie Inc.| アジェンダ • ⾃⼰紹介 • 会社紹介 •

    はじめに • MagicPod導⼊経緯/現在の活⽤⽅法 • セーフィーにおけるMagicPod活⽤と改善の歴史
  2. 3 © Safie Inc.| ⾃⼰紹介 • 森重 丈 • 経歴 ・オフィス機器メーカー

    /テストエンジニア ・セーフィー/QAエンジニア ・MagicPodは1年半くらい • 趣味 ◦ バイク ◦ 釣り ◦ お酒
  3. 会社概要 設⽴年⽉ 従業員数 (2025年1⽉)*1 年間売上⾼ (FY2025予想) 課⾦カメラ台数 (2024年12⽉末)*3 At a

    Glance 製品‧サービスの概要 *1 各⽉初の⼈数 *2 ARR Annual Recurring Revenue。各四半期末時点のMRR(Monthly Recurring Revenue)を12倍して算出。 MRRは対象⽉末時点における継続課⾦となる契約に基づく当⽉分の料⾦の合計額(販売代理店経由の売上を含む) *3 各四半期に販売したカメラ台数ではなく、各四半期末時点で稼働‧課⾦しているカメラ台数 2014年10⽉ 480⼈ 18,400百万円 29.3万台 クラウドドリブンなカメラOS 
 強固なセキュリティ 誰もが使える高品質なUI・UX 
 拡張性の高いプラットフォーム
  4. 8 © Safie Inc.| MagicPodの導⼊経緯/現在の活⽤状況 導⼊経緯 • 増え続けるリグレッションテストを楽にしたい • 開発後半での不具合検出を避けたい

    • MagicPodを選んだ理由 ◦ 低コスト ◦ 実⾏回数制限無し ◦ 社内QAエンジニアのスキルセット 活⽤状況 • 毎⽇リグレッションテストの⼀部(7~80ケース)実⾏ • リグレッションテストに掛かる⼯数を30%削減 • QAメンバー全員で実装/メンテナンスは分担
  5. 11 © Safie Inc.| 活⽤状況/困り事 MagicPod活⽤状況 • テストケース:10ケース程度 • 実⾏頻度:⽉1で開発後半に実⾏

    • メンテナンス:実装者 導⼊初期の困り事 • ⽉1実⾏で多くテストケースが失敗 • メンテナンス作業が⼤変で⾃動テストが増やせない 導⼊初期 拡⼤期 安定期
  6. 12 © Safie Inc.| 困り事(詳細) • ⽉1実⾏で多くテストケースが失敗 ◦ ⽉1実⾏では画⾯の変更に追従できない ◦

    不安定なロケータを使っていた • メンテナンスが⼤変で⾃動テストが増やせない ◦ 可読性の悪さ ▪ ロケータ名に領域(n)が多⽤ ▪ コメントや空⾏が適切に⼊れられてない ▪ 200⾏以上のステップ ◦ 保守性の低さ ▪ テスト対象のUIが1部分の変更されると複数の⾃動テストに影響してしまう 導⼊初期 拡⼤期 安定期
  7. 13 © Safie Inc.| 改善施策の検討 • ⽉1実⾏で多くテストケースが失敗 ◦ ⽉1実⾏では画⾯の変更に追従できない → ①⽉1実⾏から毎⽇実⾏へ ◦

    不安定なロケータを使っていた → ②ロケータに対する理解不⾜。勉強会の実施。 • メンテナンスが⼤変で⾃動テストが増やせない ◦ 可読性の悪さ ▪ ロケータ名に領域(n)が多⽤ → ③実装ルールの制定 ▪ コメントや空⾏が適切に⼊れられてない → ③実装ルールの制定 ▪ 200⾏以上のステップ → ③実装ルールの制定 ◦ 保守性の低さ ▪ テスト対象のUIが⼀部分変更されると複数の⾃動テストに影響してしまう → ②共有 ステップする理解不⾜。勉強会の実施。 導⼊初期 拡⼤期 安定期
  8. 14 © Safie Inc.| 改善施策②勉強会の実施 • 対象者 ◦ MagicPodでテストケースを作成したことがあるメンバー ◦

    MagicPodでテストケース作成したことないけど、メンテンスだけできるメンバー ◦ MagicPod触ったことないメンバー • ⽬標 ◦ 可読性/保守性を考慮したテストケースが作成できるようになること • 内容 ◦ MagicPodの基本的な操作の理解 ◦ ロケータの理解 ◦ 変数/条件分岐/共有ステップの活⽤⽅法の理解 • 形式 / 頻度 ◦ 資料精読(基本的にはMagicPodのスタートガイド) ◦ ハンズオン(週1で1時間) 導⼊初期 拡⼤期 安定期
  9. 16 © Safie Inc.| 改善施策②勉強会の実施 ハンズオンの流れ ①お題の説明 ②実装(1回⽬)  普段通りに実装 ③各⾃実装、気づき‧感想の共有(1回⽬)

    ④実装(2回⽬)  共有ステップや条件分岐、変数について  説明したうえで再度実装 ⑤各⾃実装、気付き‧感想の共有(2回⽬) 導⼊初期 拡⼤期 安定期
  10. 17 © Safie Inc.| 改善施策③実装ルールの制定 • テストケースの先頭 ◦ コメント ▪

    テスト名 ▪ テストケースのURL • テストケース中 ◦ ロケータ名 ▪ 領域(0)、ボタン(n)などNG ▪ 適切なロケータ名をつけること ◦ 確認ステップのあとには空⾏ • テストケース数 ◦ 100ステップを⽬安にする ◦ 200ステップ以上は分割する 導⼊初期 拡⼤期 安定期
  11. 18 © Safie Inc.| 改善施策③実装ルールの制定 • テストケースの先頭 ◦ コメント ▪

    テスト名 ▪ テストケースのURL • テストケース中 ◦ ロケータ名 ▪ 領域(0)、ボタン(n)などNG ▪ 適切なロケータ名をつけること ◦ 確認ステップのあとには空⾏ • テストケース数 ◦ 100ステップを⽬安にする ◦ 200ステップ以上は分割する 導⼊初期 拡⼤期 安定期
  12. 19 © Safie Inc.| 改善施策③実装ルールの制定 • テストケースの先頭 ◦ コメント ▪

    テスト名 ▪ テストケースのURL • テストケース中 ◦ ロケータ名 ▪ 領域(0)、ボタン(n)などNG ▪ 適切なロケータ名をつけること ◦ 確認ステップのあとには空⾏ • テストケース数 ◦ 100ステップを⽬安にする ◦ 200ステップ以上は分割する 導⼊初期 拡⼤期 安定期
  13. 20 © Safie Inc.| 改善効果 • ⽉1実⾏で多くテストケースが失敗 ◦ ⽉1実⾏では画⾯の変更に追従できない → ①⽉1実⾏から毎⽇実⾏へ:◎ ◦

    不安定なロケータを使っていた → ②ロケータに対する理解不⾜。勉強会の実施。:△ • メンテナンスが⼤変で⾃動テストが増やせない ◦ 可読性の悪さ ▪ ロケータ名に領域(n)が多⽤ → ③実装ルールの制定:◎ ▪ コメントや空⾏が適切に⼊れられてない → ③実装ルールの制定:◎ ▪ 200⾏以上のステップ → ③実装ルールの制定:◎ ◦ 保守性の低さ ▪ テスト対象のUIが1部分の変更されると複数の⾃動テストに影響してしまう → 共有ス テップする理解不⾜。勉強会の実施。:△ 勉強会だけではスキルが定着せず。追加施策としてペアプロを追加導⼊。 導⼊初期 拡⼤期 安定期
  14. 21 © Safie Inc.| 改善施策③ペアプロ • MagicPod ペアプロで検索して出てきた記事を参考に実施 • ペア

    ◦ 社員メンバー+業務委託メンバーでペア ◦ 基本的には社員がナビゲーター、業務委託メンバーがドライバー • 利⽤したツール ◦ GoogleMeet • 頻度 ◦ 1⽇1時間 • 期間 ◦ 3ヶ⽉~4ヶ⽉程度ペアプロ実施 ◦ その後は各⾃実装しつつ、わからないことがあればペアに相談する形 導⼊初期 拡⼤期 安定期
  15. 22 © Safie Inc.| 改善効果 • ⽉1実⾏で多くテストケースが失敗 ◦ ⽉1実⾏では画⾯の変更に追従できない → ①⽉1実⾏から毎⽇実⾏へ:◎ ◦

    不安定なロケータを使っていた → ②ロケータに対する理解不⾜。勉強会の実施+ペアプ ロ。:◎ • メンテナンスが⼤変で⾃動テストが増やせない ◦ 可読性の悪さ ▪ ロケータ名に領域(n)が多⽤ → ③実装ルールの制定:◎ ▪ コメントや空⾏が適切に⼊れられてない → ③実装ルールの制定:◎ ▪ 200⾏以上のステップ → ③実装ルールの制定:◎ ◦ 保守性の低さ ▪ テスト対象のUIが1部分の変更されると複数の⾃動テストに影響してしまう → 共有ス テップする理解不⾜。勉強会の実施+ペアプロ:◎ 勉強会+ペアプロでメンテナンス性の⾼いテストケースが作れるように。 導⼊初期 拡⼤期 安定期
  16. 24 © Safie Inc.| 活⽤状況/困り事 MagicPod活⽤状況 • テストケース:20~60ケース程度、どんどんテストケースを作成していた • 実⾏頻度:毎⽇実⾏

    • メンテナンス:曜⽇で持ち回りで毎⽇⼀⼈が担当 困り事 • あるテストケースがコケると他のテストケースもコケる • ⾃動テストの実⾏時間が増えた • ⼀⼈でメンテするのやや⾟くなってきた 導⼊初期 拡⼤期 安定期
  17. 25 © Safie Inc.| 困り事(詳細) • あるテストケースがコケると他のテストケースもコケる ◦ 複数テストケースで同じテストデータを使っていた ◦

    どのテストケースが悪かったのか調査に時間が掛かる • ⾃動テストの実⾏時間が増えた ◦ ⼀括実⾏時に単⼀環境で実⾏ ◦ 実⾏上限時間 • ⼀⼈でメンテするのが⾟くなってきた ◦ 可読性/保守性⾼い⾃動テストでも数あると⼀⼈では⼤変 導⼊初期 拡⼤期 安定期
  18. 26 © Safie Inc.| 改善施策の検討 • あるテストケースがコケると他のテストケースもコケる ◦ 複数テストケースで同じテストデータを使っていた  → ①テストデータの分離 ◦

    どのテストケースが悪かったのか調査に時間が掛かる → ①テストデータの分離 • ⾃動テストの実⾏時間が増えた ◦ ⼀括実⾏時に単⼀環境で実⾏ → ②⼀括実⾏の⾒直し ◦ 実⾏上限時間 → ②⼀括実⾏の⾒直し • ⼀⼈でメンテするのが⾟くなってきた ◦ 可読性/保守性⾼い⾃動テストでも数あると⼀⼈では⼤変 → ③メンテナンス運⽤の変更 導⼊初期 拡⼤期 安定期
  19. 28 © Safie Inc.| 改善施策②⼀括実⾏の⾒直し ⼀括実⾏設定のタグで実⾏する機能で並列実⾏しを実⾏時間を削減! • テストケースのタグ⾒直し ◦ ⼤きく機能単位でテストケースにタグ付けする

    • ⼀括実⾏設定の⾒直し ◦ 並列実⾏できる⽤にタグ毎の 実⾏環境を⽤意する ◦ 並列実⾏設定のチェックボックスをONへ 導⼊初期 拡⼤期 安定期
  20. 29 © Safie Inc.| 改善施策③メンテナンス運⽤の⾒直し ⼀⼈ではなく、みんなでメンテナンスする体制の準備 • 分担準備 ◦ 改善施策②の⼀括実⾏の⾒直しですでに完了

    • 担当 ◦ 分担表を作成、リリース毎に担当を⼊れ替える ◦ タグ毎に実⾏しているので担当分もわかりやすい 導⼊初期 拡⼤期 安定期
  21. 30 © Safie Inc.| 改善施策の効果 • あるテストケースがコケると他のテストケースもコケる ◦ 複数テストケースで同じテストデータを使っていた  → ①テストデータの分離:◎ ◦

    どのテストケースが悪かったのか調査に時間が掛かる → ①テストデータの分離:◎ • ⾃動テストの実⾏時間が増えた ◦ ⼀括実⾏時に単⼀環境で実⾏ → ②⼀括実⾏の⾒直し:◎ ◦ 実⾏上限時間 → ②⼀括実⾏の⾒直し:◎ • ⼀⼈でメンテするのが⾟くなってきた ◦ 可読性/保守性⾼い⾃動テストでも数あると⼀⼈では⼤変 → ③メンテナンス運⽤の変更 :◎ 多くのテストケースを安定してメンテナンスできるチーム/運⽤ができた! 導⼊初期 拡⼤期 安定期
  22. 31 © Safie Inc.| 今後の取り組み ‧⾃動化領域の拡⼤(PCブラウザ) ‧多⾔語テストの⾃動化(モバイルアプリ) ‧E2Eの⾃動テスト最適化 セーフィーにおけるMagicPod活⽤と改善の歴史(まとめ) 時期

    困りごと 改善施策 導 ⼊ ‧テストケースの品質:悪 ‧テストケース増やせない ‧実⾏回数を増やす ‧コメント/空⾏ルール ‧勉強会の実施 ‧ペアプロの実施 拡 ⼤ テストケースが増えてきて ‧テストデータの依存 ‧実⾏時間増 ‧メンテナンス負荷の集中 ‧データ利⽤のルール化 ‧並列実⾏環境の整備 ‧メンテ負荷分散体制の構築 安 定 様々な改善施策を通じて安定的 に⾃動テストを運⽤できるよう に。
  23. 33 © Safie Inc.| Appendix . 勉強会の内容(読み物) タイトル リンク MagicPodスタートガイド

    https://support.magic-pod.com/hc/ja/sections/4408515646361-%E3%82%B9%E3%82%BF %E3%83%BC%E3%83%88%E3%82%AC%E3%82%A4%E3%83%89 導⼊初期に役⽴つTips(モバイルアプリ) https://support.magic-pod.com/hc/ja/articles/20621015915929-%E5%B0%8E%E5%85%A5 %E5%88%9D%E6%9C%9F%E3%81%AB%E5%BD%B9%E7%AB%8B%E3%81%A4Tips-%E3 %83%A2%E3%83%90%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%97%E3%83%AA ページオブジェクトモデルの理解 https://qiita.com/RyomaMaeda/items/517cd5008da40b3fbcee https://tech-blog.rakus.co.jp/entry/20230523/e2etest MagicPod機能ガイド(条件分岐の活⽤) https://support.magic-pod.com/hc/ja/articles/4408909934617-%E6%9D%A1%E4%BB%B6 %E5%88%86%E5%B2%90%E3%81%AE%E6%B4%BB%E7%94%A8 MagicPod機能ガイド(変数の活⽤) https://support.magic-pod.com/hc/ja/articles/4408887437337-%E5%A4%89%E6%95%B0% E3%81%AE%E6%B4%BB%E7%94%A8 MagicPod機能ガイド(共有ステップの活⽤) https://support.magic-pod.com/hc/ja/articles/4408910141977-%E5%85%B1%E6%9C%89% E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%AE%E6%B4%BB%E7%94%A8