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
Recruit
PRO
July 05, 2024
Technology
1.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ヘルススコアの改善の過程で起きた嬉しい変化
2024/07/05に、MagicPod Meetupで発表した、Takafumi Yanagawaの資料です。
Recruit
PRO
July 05, 2024
More Decks by Recruit
See All by Recruit
AIネイティブ時代における 開発組織の役割と拡張の可能性
recruitengineers
PRO
2
220
開発が速く安くなった後の話 AI時代のソフトウェアエンジニアリング組織論 #devsumi
recruitengineers
PRO
43
31k
双方向推薦システムにおける長期的マッチング最大化に向けた代理目的関数の設計と実証
recruitengineers
PRO
1
160
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
210
Model Routerを使った逐次LLM選択による毀損低減効果の検証
recruitengineers
PRO
2
83
ストリーム処理基盤のFlink移行検証と適材適所の実践
recruitengineers
PRO
2
120
AI 時代の Platform Engineering
recruitengineers
PRO
3
520
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
3.7k
データ戦略を加速させる プラットフォーム エンジニアリングと進化的アーキテクチャ
recruitengineers
PRO
3
130
Other Decks in Technology
See All in Technology
QA・ソフトウェアテスト研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
3
1.4k
脱Jenkins、インターン生が挑んだCIツールGitHubActions移行
mixi_engineers
PRO
1
190
現場をAIで動かす「フィジカル AI」の組み込み設計の考え方【SORACOM Discovery 2026】
soracom
PRO
0
120
「待ち時間」の消滅と「自我消耗」の加速:生成AI時代のエンジニアを救うメンタル・リソース管理
poropinai1966
0
260
カメラ×AIで挑む「ホワイト物流」― 車両管理、自動化の壁と突破口【SORACOM Discovery 2026】
soracom
PRO
0
150
書籍セキュアAPIについて
riiimparm
0
360
BigQuery を検索ソースとした AI Agent の作り方って 〇〇 通りあんねん
satohjohn
0
120
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
1.2k
オートマトンと字句解析でRoslynを読む
tomokusaba
0
110
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
300
それでも、技術なブログを書く理由 #kichijojipm / Why I Still Write Tech Blogs Even Now
shinkufencer
0
1.1k
Power Automateアップデート情報
miyakemito
0
260
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
410
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Optimizing for Happiness
mojombo
378
71k
Color Theory Basics | Prateek | Gurzu
gurzu
0
400
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
57k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Evolving SEO for Evolving Search Engines
ryanjones
0
250
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
Building Applications with DynamoDB
mza
96
7.1k
The Spectacular Lies of Maps
axbom
PRO
1
870
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 ご清聴ありがとうございました