Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ヘルススコアの改善の過程で起きた嬉しい変化
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Recruit
PRO
July 05, 2024
Technology
4
1.5k
ヘルススコアの改善の過程で起きた嬉しい変化
2024/07/05に、MagicPod Meetupで発表した、Takafumi Yanagawaの資料です。
Recruit
PRO
July 05, 2024
Tweet
Share
More Decks by Recruit
See All by Recruit
事業の財務責任に向き合うリクルートデータプラットフォームのFinOps
recruitengineers
PRO
2
440
AI-DLCを現場にインストールしてみた:プロトタイプ開発で分かったこと・やめたこと
recruitengineers
PRO
2
710
プロダクトマネジメントの分業が生む「デリバリーの渋滞」を解消するTPMの越境
recruitengineers
PRO
4
1.1k
あなたの知らない Linuxカーネル脆弱性の世界
recruitengineers
PRO
4
430
dbtとBigQuery MLで実現する リクルートの営業支援基盤のモデル開発と保守運用
recruitengineers
PRO
5
330
『ホットペッパービューティー』のiOSアプリをUIKitからSwiftUIへ段階的に移行するためにやったこと
recruitengineers
PRO
5
2k
経営の意思決定を加速する 「事業KPIダッシュボード」構築の全貌
recruitengineers
PRO
4
520
Browser
recruitengineers
PRO
13
4.4k
JavaScript 研修
recruitengineers
PRO
9
2.4k
Other Decks in Technology
See All in Technology
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.7k
AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate
kinunori
2
250
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.6k
Tebiki Engineering Team Deck
tebiki
0
24k
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
220
SchooでVue.js/Nuxtを技術選定している理由
yamanoku
3
210
プレビュー版のDevOpsエージェントを現段階で触ってみた
ad_motsu
1
100
Red Hat OpenStack Services on OpenShift
tamemiya
0
140
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
150
22nd ACRi Webinar - 1Finity Tamura-san's slide
nao_sumikawa
0
110
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
Featured
See All Featured
Test your architecture with Archunit
thirion
1
2.2k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
110
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
130
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
57
Design in an AI World
tapps
0
150
Making Projects Easy
brettharned
120
6.6k
How to Ace a Technical Interview
jacobian
281
24k
WCS-LA-2024
lcolladotor
0
450
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
Transcript
MagicPodミートアップ ヘルススコアNight ヘルススコアの改善の過程で起きた 嬉しい変化 Takafumi Yanagawa (@tyngw) MagicPodミートアップ ヘルススコアNight
MagicPodミートアップ ヘルススコアNight Agenda | 01 02 03 04 05 About
me & us はじめに ヘルススコアを上げるために取り組んだこと ヘルススコアを改善する中で起きた嬉しい変化 まとめと今後の課題
MagicPodミートアップ ヘルススコアNight • スタディサプリのQAエンジニアをしています • ソフトウェアテストが好きです ◦ テスト⾃動化も好きです • ⼩学1年と1歳の娘がいます
• 電気⼯事⼠の資格を持ってます ◦ 我が家の照明・配線器具の交換やエアコン 掃除をしています ⾃⼰紹介 Takafumi Yanagawa (@tyngw) 別名: アシカ
MagicPodミートアップ ヘルススコアNight 👆こちらのプロダクト群を横断する QA組織に所属しています
MagicPodミートアップ ヘルススコアNight 対象は Webアプリ 本⽇のスコープとなるサービス 本⽇お話しする対象のサービス スタディサプリ for TEACHERSの機能の1つ 先⽣と⽣徒間、先⽣と保護者間での
コミュニケーション機能
MagicPodミートアップ ヘルススコアNight Agenda | 01 02 03 04 05 About
me & us はじめに ヘルススコアを上げるために取り組んだこと ヘルススコアを改善する中で起きた嬉しい変化 まとめと今後の課題
MagicPodミートアップ ヘルススコアNight 本⽇お話しすること 🙆 E2Eテスト⾃動化の安定運⽤を実現するために、何を考え、 どのように実践していったのかをご紹介します 🙆 その結果、得られた効果をご紹介します 🙅 MagicPodで実装する上でのTIPSやテクニックはご紹介しません
(交流タイムでたっぷりとお話ししましょう🍺)
MagicPodミートアップ ヘルススコアNight 体制 ◯ ◯ ◯ 開発 △△△開発 □□□開発 QAグループ
QAエンジニア QAエンジニアは開発組織に常駐し、 実業務やプロセスの整備と改善を⾏っています QAエンジニア QAエンジニア
MagicPodミートアップ ヘルススコアNight * Darklaunchと呼ばれるFeature Togglesの仕組みにより、デプロイとは独⽴してリリースタイミング を決めることもできます。 スタディサプリのWebアプリケーションはこうやって開発されている https://blog.studysapuri.jp/entry/2023/03/17/studysapuri-development リリースサイクルについて リリース⽅法
対象 タイミング・テスト⽅法 Weekly Release モノリスアプリケーションや モノリスに依存するWebサー ビス群 週に1度、Weekly Happy Path Testを実⾏し、ブロッカ ーがなければリリース(*) Single Release モノリスに依存がないマイク ロサービス 任意のタイミングでリリース 所属チームがオーナーシップを持っているサービスのリリース⽅法は主に2種類あります
MagicPodミートアップ ヘルススコアNight E2Eテスト⾃動化の⽬的 • 任意のタイミングで⾏われるSingle Releaseにおいて、利⽤者に影響 がある⽋陥を検出する • Weekly Releaseで実施しているリグレッションテストよりも早いタイ
ミングでリグレッションを検知することにより、開発者に素早く⽋陥 の情報をフィードバックする
MagicPodミートアップ ヘルススコアNight ⽬的を達成するために考えていたこと リグレッションを 検知したい テスト結果の 信頼性を⾼める ⾃動テストの 保守性を⾼める 偽陽性/偽陰性
を減らす テスト対象の 試験性の向上 定期的に実⾏ 結果のモニタリ ングと修正 開発者の協⼒
MagicPodミートアップ ヘルススコアNight あれ…ヘルススコアの項⽬そのものでは︖ • ⼗分なメンバーが参加する • ⼗分なテストケースを作成する • 共有ステップを活⽤する •
テストケースを⻑すぎないように保つ • テストケースを⽇次実⾏する • 定期実⾏によるテストが安定して成功する • 安定したロケータを使⽤する
MagicPodミートアップ ヘルススコアNight ヘルススコアを上げることで ⽬的達成もできる︕
MagicPodミートアップ ヘルススコアNight Agenda | About me & us はじめに ヘルススコアを改善するために取り組んだこと
ヘルススコアを改善する中で起きた嬉しい変化 まとめと今後の課題 01 02 03 04 05
MagicPodミートアップ ヘルススコアNight ⾃動テストケース実装フェーズで取り組んだこと① 最⼩限のテストケースを実装 ⼀部のWeb開発者とHappy Path相当の 最⼩限のテストケースを実装 確実に保守できる量のテストケースを実装 機能⼀覧と考慮すべき条件の⼀覧を作り、 実装の優先度を決定
*実際のドキュメントを参考に作成したサンプル(架空)で す
MagicPodミートアップ ヘルススコアNight ⾃動テストケース実装フェーズで取り組んだこと② ハンズオンの開催 MagicPodを知らない開発者に対して ハンズオンを開催 • 簡単なテストケースを実装してもらう • 実装済みのテストの概要を知ってもらう
E2Eテスト⾃動化の活動を認知してもらう もう◯◯ケースも実装されてい る︕ 処理の共通化もできるんですね なるほど、こうすると保守性が ⾼くなるのか〜 参加者のコメント
MagicPodミートアップ ヘルススコアNight Slackにテスト結果を通知し、 確認結果や対応状況をスレッドに投稿 ⾃動テストの運⽤・保守フェーズで取り組んだこと① 偽陽性・偽陰性への対処 ⽇次で実⾏し、結果をモニタリング • 偽陽性が⾒つかった時は、即⽇中に修正 し、テストが失敗する状況を放置しない
• 偽陰性が⾒つかった時は、 E2Eテストで担保すべきか検討 テスト結果の信頼性を⾼める
MagicPodミートアップ ヘルススコアNight ⾃動テストの運⽤・保守フェーズで取り組んだこと② 振る舞いの変化への対応 テスト対象の挙動に変化があった時は、些細 なことでも開発チームに相談 相談の結果、意図した変更であることがほと んどであるものの、⾃動テストの担当者内で 閉じずに都度コミュニケーションをとる E2E⾃動テストの結果に関⼼を持ってもらう
MagicPodミートアップ ヘルススコアNight MagicPodさんが提案する プラクティスそのものです スタートガイド︓5.テスト⾃動化の習慣を最速で定着させる(ブラウザ)
MagicPodミートアップ ヘルススコアNight 取り組みの結果 ヘルススコアは98まで上がりました🎉
MagicPodミートアップ ヘルススコアNight Agenda | 01 02 03 04 05 About
me & us はじめに ヘルススコアを上げるために取り組んだこと ヘルススコアを改善する中で起きた嬉しい変化 まとめと今後の課題
MagicPodミートアップ ヘルススコアNight 嬉しい変化① ライブラリアップデート時のリグレッションを早期に検知可能に Renovate / Dependabot でのライブラリバージョンアップ時の問題にいち早く気づけるようになった これまでは週次のWeekly Happy
Path Testで検知していた事象が PR mergeの翌⽇には検知できるようになった リグレッションの原因となったPRの特定がしやすくなった * PR = Pull Request
MagicPodミートアップ ヘルススコアNight リグレッションが検知できた︕ めでたしめでたし🎉
MagicPodミートアップ ヘルススコアNight おしまい🎉
MagicPodミートアップ ヘルススコアNight だけではなかった…︕
MagicPodミートアップ ヘルススコアNight 嬉しい変化② MagicPodを活⽤したテストの相談が来るようになった 開発チームから、フロントエンドビルド基盤のリプレースにあたって 実装済みのテストを活かしてリグレッションを検知することはできないかという相談が持ちかけられた まだVRT(Visual Regression Test)が実装されていないサブシステムに対して、既存のMagicPodシナ リオにVRTを追加することで、追加⼯数を最⼩限に抑えてVRTを実装
リグレッションを発⽣させることなくビルド基盤のリプレースを実現 * storycap + reg-cliによるVRTを導⼊しているサブシステムもあります
MagicPodミートアップ ヘルススコアNight 嬉しい変化③ 開発者から軽微な変更内容であっても共有してもらえるように ⾃動テスト担当者から軽微な変化を報告していった結果、 開発者からもデザインの微修正、⽂⾔の変更などを⾏った際に、 「E2E⾃動テストで差分が出るかもしれない」ことを事前に共有してもらえるようになった あらかじめ変更内容を把握できていることで、事前の修正やテスト結果の判定が容易に * 機能の変更などにはQAも関わりますが、デザイン・⽂⾔の変更はPO・デザイナーレビューで完結することもあります
MagicPodミートアップ ヘルススコアNight 嬉しい変化④ テスト対象システムの不安定さの検知 ⾃動テストスクリプト起因での失敗を減らしていくことで、 テスト対象システム起因で、再現頻度が毎回ではないエラーなどの事象に気づけるようになった ⾃動テストの効果を⽰していたことで、開発チームに温度感⾼く調査・修正してもらえるようになり、 テスト対象システムの安定性が向上した テスト対象システムの安定性が向上することで、 ⾃動テストの信頼性も⾼めることができた
MagicPodミートアップ ヘルススコアNight Agenda | About me & us はじめに ヘルススコアを上げるために取り組んだこと
ヘルススコアを改善する中で起きた嬉しい変化 まとめと今後の課題 01 02 03 04 05
MagicPodミートアップ ヘルススコアNight • テスト⾃動化のベストプラクティスを着実に実践することで、 リグレッションの検知という⽬的を達成することができました • 継続的に、テスト対象システムの変化を報告していくことで、 開発者も含めたチーム全体に⾃動テストが認知されるとともに、 テスト結果が信頼されるようになりました ◦
⾃動テストという資産を活かした新たな取り組みができるように なりました ◦ テスト対象システムの安定性を⾼めることにも繋がっています まとめ
MagicPodミートアップ ヘルススコアNight 今後の課題 • テストが増えることによって実⾏時間が延びる ◦ 並列実⾏を導⼊することで解消しつつあるものの、 テストデータの独⽴性に課題 • 毎回ユニークなデータを作成しなければならないテストが⾃動化でき
ていない ◦ ユーザの新規登録といった⼀部のテストを除き、 ユーザデータなどは作成済みのデータを利⽤している • Web/モバイルを跨ぐテストが⾃動化できていない ◦ 例えば、Webで送信したメッセージをモバイルで確認するなど
MagicPodミートアップ ヘルススコアNight ご清聴ありがとうございました