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

ハイスコアから紐解くチームの自動テスト運用

ct
July 08, 2024

 ハイスコアから紐解くチームの自動テスト運用

2024/07/05 MagicPod Meetupでの発表資料です。

ct

July 08, 2024
Tweet

Other Decks in Technology

Transcript

  1. © LY Corporation Internal Use Only LINEヤフー株式会社 Product QA Dept

    Toda Chiharu ハイスコアから紐解く チームの⾃動テスト運⽤ - 240705 MagicPodミートアップ ヘルススコアNight -
  2. © LY Corporation Internal Use Only Toda Chiharu LINEヤフー株式会社 /

    QAエンジニア • 2014年にLINE Fukuoka株式会社に⼊社 • 会社統合のタイミングでLINEヤフーに転籍 • 2020年より「LIFF」を担当 • 品質保証・向上などの取り組み • E2E⾃動テスト導⼊戦略、運⽤・保守 ⾃⼰紹介
  3. © LY Corporation Internal Use Only お話しする内容 1. LIFFの品質管理体制 •

    LIFFの概要 • QAチーム体制 • ⾃動化状況 2. チームの⾃動テスト運⽤について • 属⼈化解消のための取り組み • 習慣化の⼯夫 • 安定性の⾼いテストケースのための⼯夫 3. まとめ
  4. © LY Corporation Internal Use Only 「LIFF」について • LINE Front-end

    Framework (LIFF)は、LINEヤフー株式会社が提供 するウェブアプリのプラットフォームのことです。 LIFFの概要 LIFFの品質管理体制 テスト対象 • モバイル(iOS/Android) • LINE内で開くLIFFブラウザと外部ブラウザ • PCウェブ • 2週間に⼀度 リリースサイクル
  5. © LY Corporation Internal Use Only QAチームについて LIFFの品質管理体制 品質管理体制について •

    QAエンジニア1名、テスター5名 • 現在は私含め2名で⾃動テストを運⽤中 • (以前はチーム全員がMagicPodを使えていたが、 メンバーの総⼊れ替えに伴い再度教育中…)
  6. © LY Corporation Internal Use Only LIFFの⾃動テスト LIFFの品質管理体制 ⾃動テスト導⼊の⽬的 1.

    テスト活動の効率化 • テスト⾃動化によって⽣み出した余剰⼯数を他活動へ当て、 品質全体への貢献 2. 早期検知による開発⽣産性向上 • ⾼頻度で⾃動テストを回し、バグをより早い段階で検出する ことで機能追加や仕様変更によるデグレードリスクの防⽌に 貢献 3. オペレーションミス防⽌ • テストデータのコピペミスやtypoなどの⼈的ミスを防⽌ • テスト結果の確認ミスや確認深度のブレを防⽌
  7. © LY Corporation Internal Use Only LIFFの⾃動テスト LIFFの品質管理体制 ⾃動化状況について •

    MagicPodでの⾃動テストを導⼊して3年⽬突⼊! • CI環境連携済みでモバイル(iOS/Android)・ブラウザで毎⽇ テスト実⾏中 • 実施される⽉のテストの総件数は1万超え • 隔週リリース毎に⼿動実施していた回帰テストは全て⾃動化 済み • 簡単なテストであれば修正確認も⾃動テストの結果で確認
  8. © LY Corporation Internal Use Only • 機能リリース( 2023年12⽉ 〜

    )以来、毎週確認 • 平均して90点以上を継続 • モバイル(iOS/Android) • ブラウザ • 周りのプロジェクトよりも⽐較 的良いスコアを保てている ヘルススコアについて
  9. © LY Corporation Internal Use Only • 機能リリース( 2023年12⽉ 〜

    )以来、毎週確認 • 平均して90点以上を継続 • モバイル(iOS/Android) • ブラウザ • 周りのプロジェクトよりも⽐較 的良いスコアを保てている ヘルススコアについて ハイスコア継続に繋がったものは何?
  10. © LY Corporation Internal Use Only • 失敗したテストは原因を切り分けて対処が必要(アプリの不具合、⼀時的 なもの、環境要因、テストケース⾃体の不具合) →⼤抵はアプリの不具合以外による失敗(偽陽性)が多い。

    ⾃動テスト運⽤に割く時間も作れず結果確認も後回しに。 →⾃動テストの結果を信頼できていない 12 チームの⾃動テスト運⽤課題 チームの⾃動テスト運⽤について
  11. © LY Corporation Internal Use Only • ⾃動テストの結果を信頼できていない ∟信頼性向上のためのテストケース設計の⾒直しと改善 ∟環境要因で落ちないようにするためのテスト環境の安定化

    などが考えられる。 14 チームの⾃動テスト運⽤課題 →⾃動化対応のためのリソース(⼈や時間)確保が必要 チームの⾃動テスト運⽤について
  12. © LY Corporation Internal Use Only 属⼈化が進むことによって… • カバレッジ拡⼤の動きが鈍化 •

    ノンコードツールなのでテストケース作成のハードルは低い⼀⽅で、 • 動作性・安定性・可読性・効率性・可変性などを考慮しての作成は難易度が上がる • ⽣産性の低下 • 問題が発⽣したときに担当者以外が原因の追及ができない • 改善活動を偏った観点でしか運⽤できない → ⾃動化を運⽤していく上で属⼈化を防ぐことはマスト 15 チームの⾃動テスト運⽤課題 チームの⾃動テスト運⽤について
  13. © LY Corporation Internal Use Only • ⽇々の作業と並⾏して⾃動化対応を取り組める体制を整える • ⾃動化対応が可能なメンバーの確保や能⼒向上

    • 継続してチームで⾃動テストに向き合う習慣 • メンテナンス性・安定性を向上させる • 安定したテストケースを設計する 16 チームの⾃動テスト運⽤課題 チームの⾃動テスト運⽤について
  14. © LY Corporation Internal Use Only Point 2 習慣化 Point

    1 脱属⼈化 Point 3 保守安定化 17 チームの⾃動テスト運⽤課題 チームの⾃動テスト運⽤について
  15. © LY Corporation Internal Use Only Point 2 習慣化 Point

    1 脱属⼈化 Point 3 保守安定化 18 チームの⾃動テスト運⽤課題 チームの⾃動テスト運⽤について
  16. © LY Corporation Internal Use Only • 取り組み:ペアプロ⾵の進⾏でテストケースを作成してみる 19 脱属⼈化のための取り組み

    ドライバー 実際に⼿を動かしてテストケースを作成する⼈ ナビゲーター テストケースを⾒ながらドライバーに指⽰する⼈ チームの⾃動テスト運⽤について
  17. © LY Corporation Internal Use Only Step1. Zoomを繋いでドライバー(教わる側)が画⾯共有 • ⼀台のPCを⼆⼈で利⽤するのが⼀般的な⽅法

    • 「同時に確認する」状態をZoomの画⾯共有機能で再現 Tips: Zoomの書き込み機能を使うことで、操作して欲しい場所をペンで指定しながら指⽰ もできて進めやすい 20 脱属⼈化のための取り組み チームの⾃動テスト運⽤について
  18. © LY Corporation Internal Use Only Step2. 時間を決めて実⾏ 21 時間

    やること 説明 5分 ゴールを決める 計画表に基づき何をどこまで⾃動化するか両者感の認識 を合わせる 1分 役割を決める 新⼈がドライバー(教わる側)固定 60分 テストケース作成 ナビゲーター(教える側)がケースの構成共有→実装→ 実⾏→エラーログを確認→修正を繰り返す 10分 振り返りとネクストアクショ ンの決定 ドライバー(教わる側)から勉強になったことなどの 「気づき」を発信してもらうようにする。ここで出た内 容は後で他のメンバーにも共有する。 脱属⼈化のための取り組み チームの⾃動テスト運⽤について
  19. © LY Corporation Internal Use Only • 会話を重ねて作っていくため⼀緒に考えて 作り上げていくことを実感できて楽しく、 頭に⼊りやすい

    • リアルタイムで進⾏していくので、調べる 時間や返答待ちの時間も削れる • エラーログの確認をナビゲーターと⼀緒に タイムリーに⾏えるので、失敗したテスト の⾒⽅を覚えやすい ドライバー(教わる側)のメリット 22 • レビュー時間の削減 • 判断理由(思考プロセス)を⾔語化して伝 えることでアウトプットになり、⾃分⾃⾝ のスキルの定着と向上になる • シームレスなやりとりにより、個⼈に合わ せた教育をしやすい(調整ができる) ナビゲータ(教える側)のメリット 脱属⼈化のための取り組み チームの⾃動テスト運⽤について
  20. © LY Corporation Internal Use Only • 会話を重ねて作っていくため⼀緒に考えて 作り上げていくことを実感できて楽しく、 頭に⼊りやすい

    • リアルタイムで進⾏していくので、調べる 時間や返答待ちの時間も削れる • エラーログの確認をナビゲーターと⼀緒に タイムリーに⾏えるので、失敗したテスト の⾒⽅を覚えやすい ドライバー(教わる側)のメリット 23 • レビュー時間の削減 • 判断理由(思考プロセス)を⾔語化して伝 えることでアウトプットになり、⾃分⾃⾝ のスキルの定着と向上になる • シームレスなやりとりにより、個⼈に合わ せた教育をしやすい(調整ができる) ナビゲータ(教える側)のメリット 脱属⼈化のための取り組み チームの⾃動テスト運⽤について
  21. © LY Corporation Internal Use Only • チームメンバーレベル感によってペアプロ進⾏の向き不向きはある • レベル1:未経験者

    • レベル2:テストケースを作れる • レベル3:⼈に教えることができる 24 メンバーのレベル ペアプロ進⾏適正 全員レベル1 あまり向かない レベル1とレベル2または3のペア 向いている ※レベル1が⼀気にレベル2まで上がるイメー ジ チーム全員がレベル2または3 教育⾯で考えるとメリットはない ※スキルの相乗効果は期待ができる 脱属⼈化のための取り組み チームの⾃動テスト運⽤について
  22. © LY Corporation Internal Use Only 結果 • ⾃動化対応ができるメンバーを増やすことができた •

    担当者不在時も運⽤が継続可能になった 25 脱属⼈化のための取り組み チームの⾃動テスト運⽤について
  23. © LY Corporation Internal Use Only Point 2 習慣化 Point

    1 脱属⼈化 Point 3 保守安定化 26 ⾃動化対応を習慣化するための⼯夫 チームの⾃動テスト運⽤について
  24. © LY Corporation Internal Use Only 何故、習慣化してないのか • ⾃動化対応以外の業務が忙しく優先度を下げがち •

    「⾃動化するよりも⼿動でやった⽅が早い」という⼼理になりがち → 意識的に優先度を上げて、⽇々の作業プロセスに組み込む 27 ⾃動化対応を習慣化するための⼯夫 チームの⾃動テスト運⽤について
  25. © LY Corporation Internal Use Only • スケジュールを設定して1⽇1時間は⾃動化 対応に時間を割く •

    毎⽇⾃動テストの結果を確認 • 連⽇失敗しているケースから優先してエ ラー原因の特定・修正対応を実施(⼿動で 計測) ヘルススコア機能リリース前 28 • ヘルススコア集計サイクルに合わせて作業 を⾏うようにシフトチェンジ • ⽉曜 1. ヘルススコアの結果確認 2. 改善ポイント確認 3. 平常作業のボリューム確認、⾃動化対応に避ける時間の⾒積もり 4. ⾃動化対応の⽬標決定(⼩さいものでも可) 5. テストケース新規作成・修正を⾏う場合、実装⽅針の認識合わせ • ⾦曜 1. 対応内容共有 2. ナレッジ共有、振り返り ヘルススコア機能リリース後 ⾃動化対応を習慣化するための⼯夫 チームの⾃動テスト運⽤について
  26. © LY Corporation Internal Use Only • スケジュールを設定して1⽇1時間は⾃動化 対応に時間を割く •

    毎⽇⾃動テストの結果を確認 • 連⽇失敗しているケースから優先してエ ラー原因の特定・修正対応を実施(⼿動で 計測) 対応頻度は上がったものの結局忙しいと スケジュールを無視しがちに… ヘルススコア機能リリース前 29 • ヘルススコア集計サイクルに合わせて作業 を⾏うようにシフトチェンジ • ⽉曜 1. ヘルススコアの結果確認 2. 改善ポイント確認 3. 平常作業のボリューム確認、⾃動化対応に避ける時間の⾒積もり 4. ⾃動化対応の⽬標決定(⼩さいものでも可) 5. テストケース新規作成・修正を⾏う場合、実装⽅針の認識合わせ • ⾦曜 1. 対応内容共有 2. ナレッジ共有、振り返り ヘルススコア機能リリース後 ⾃動化対応を習慣化するための⼯夫 チームの⾃動テスト運⽤について
  27. © LY Corporation Internal Use Only • スケジュールを設定して1⽇1時間は⾃動化 対応に時間を割く •

    毎⽇⾃動テストの結果を確認 • 連⽇失敗しているケースから優先してエ ラー原因の特定・修正対応を実施(⼿動で 計測) 対応頻度は上がったものの結局忙しいと スケジュールを無視しがちに… ヘルススコア機能リリース前 30 • ヘルススコア集計サイクルに合わせて作業 を⾏うようにシフトチェンジ • ⽉曜 1. ヘルススコアの結果確認 2. 改善ポイント確認 3. 通常業務のボリューム確認、⾃動化対応に割ける時間の⾒積もり 4. ⾃動化対応の⽬標決定(⼩さいものでも可) 5. テストケース新規作成・修正を⾏う場合、実装⽅針の認識合わせ • ⾦曜 1. 対応内容共有 2. ナレッジ共有、振り返り ヘルススコア機能リリース後 ⾃動化対応を習慣化するための⼯夫 チームの⾃動テスト運⽤について
  28. © LY Corporation Internal Use Only • スケジュールを設定して1⽇1時間は⾃動化 対応に時間を割く •

    毎⽇⾃動テストの結果を確認 • 連⽇失敗しているケースから優先してエ ラー原因の特定・修正対応を実施(⼿動で 計測) 対応頻度は上がったものの結局忙しいと スケジュールを無視しがちに… ヘルススコア機能リリース前 31 • ヘルススコア集計サイクルに合わせて作業 を⾏うようにシフトチェンジ • ⽉曜 1. ヘルススコアの結果確認 2. 改善ポイント確認 3. 通常業務のボリューム確認、⾃動化対応に割ける時間の⾒積もり 4. ⾃動化対応の⽬標決定(⼩さいものでも可) 5. テストケース新規作成・修正を⾏う場合、実装⽅針の認識合わせ • ⾦曜 1. 対応内容共有 2. ナレッジ共有、振り返り ⾃分たちにとって無理のない作業サイクルで ⾃動化対応のルーティン化を実現! ヘルススコア機能リリース後 ⾃動化対応を習慣化するための⼯夫 チームの⾃動テスト運⽤について
  29. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only 運⽤結果 l

    ⾃動化対応がチームの習慣として定着し、継続的な改善が可能に l (健全さの可視化がモチベーション維持に効果⼤!) 32 チームの⾃動テスト運⽤について ⾃動化対応を習慣化するための⼯夫
  30. © LY Corporation Internal Use Only Point 2 習慣化 Point

    1 脱属⼈化 Point 3 保守安定化 33 テストケースのメンテナンス性・安定性向上のためのポイント チームの⾃動テスト運⽤について
  31. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only (例)モバイルで外部ブラウザを開き、ウェブアプリを開く 34

    テストケースのメンテナンス性・安定性向上のためのポイント チームの⾃動テスト運⽤について
  32. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only ‒ 問題点

    • テストケース毎にウェブアプリを新規で開き続けるためタブが無限に増え、 アプリの動作が重くなってしまう ‒ 解決⽅法案 • ??? 35 テストケースのメンテナンス性・安定性向上のためのポイント チームの⾃動テスト運⽤について
  33. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only ‒ 問題点

    • テストケース毎にウェブアプリを新規で開き続けるためタブが無限に増え、 アプリの動作が重くなってしまう ‒ 解決⽅法案 • そもそもタブが毎回新規で開かないようにする • テストケースの最後でタブを閉じるステップを追加する • 「ブラウザタブをすべて閉じる」専⽤のテストケースを作成する etc… 36 テストケースのメンテナンス性・安定性向上のためのポイント チームの⾃動テスト運⽤について
  34. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only ‒ 結論

    • E2Eで考える⽅法は最終⼿段 ‒ 何故なら、以下のリスクに繋がってしまう可能性が増える • テスト実⾏時間増加 • メンテナンス性、安定性の低下 • 仮にChromeの仕様が変われば修正が必要 • 失敗確率増加 • 本来テストしたい場所ではない処理で失敗すると対応時間も取られる 37 テストケースのメンテナンス性・安定性向上のためのポイント チームの⾃動テスト運⽤について
  35. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only ‒ E2E以外での解決⽅法例

    • WEBプロジェクトのモバイルエミュレーションを利⽤ • シークレットモードでテストする • テスト実⾏前にADB(Android Debug Bridge)でChrome Appを初期化する • (adb shell pm clear com.android.chrome コマンドを実⾏) etc.. 38 テストケースのメンテナンス性・安定性向上のためのポイント チームの⾃動テスト運⽤について
  36. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only ‒ E2E以外での解決⽅法例

    • WEBプロジェクトのモバイルエミュレーションを利⽤ • シークレットモードでテストする • テスト実⾏前にADB(Android Debug Bridge)でChrome Appを初期化する<採⽤> • Jenkinsも⽤いて初期化プロセスも⾃動化済み 39 テストケースのメンテナンス性・安定性向上のためのポイント チームの⾃動テスト運⽤について
  37. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only ★E2Eを通さずに効率的に解決できる⽅法がないか 考えてみることも⼤切

    40 テストケースのメンテナンス性・安定性向上のためのポイント チームの⾃動テスト運⽤について
  38. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only ü属⼈化を防ぐ ü⾃動化対応の習慣を定着させる

    ü安定性、メンテナンス性を考慮したテスト設計をする 上記の取り組みが安定したハイスコア継続への効果が⼤きい 42 まとめ
  39. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only ヘルススコア機能から得られたもの •

    ⾃分たちの⾃動化対応のルーティンの変化 • 継続的な改善活動のきっかけ • ⾃信やモチベーションの向上 45 まとめ
  40. 01 発表内容のアジェンダをここに⼊⼒してください © LY Corporation Internal Use Only ヘルススコア機能から得られたもの •

    ⾃分たちの⾃動化対応のルーティンの変化 • 継続的な改善活動のきっかけ • ⾃信やモチベーションの向上 46 まとめ ⾼品質なプロダクトを提供するための 重要な⼀歩となった。