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
4
1.3k
ヘルススコアの改善の過程で起きた嬉しい変化
2024/07/05に、MagicPod Meetupで発表した、Takafumi Yanagawaの資料です。
Recruit
PRO
July 05, 2024
Tweet
Share
More Decks by Recruit
See All by Recruit
Javaで作る RAGを活用した Q&Aアプリケーション
recruitengineers
PRO
1
140
問題解決に役立つ数理工学
recruitengineers
PRO
12
2.8k
Curiosity & Persistence
recruitengineers
PRO
2
200
結果的にこうなった。から見える メカニズムのようなもの。
recruitengineers
PRO
1
410
成長実感と伸び悩みからふりかえる キャリアグラフ
recruitengineers
PRO
1
190
リクルートの オンプレ環境の未来を語る
recruitengineers
PRO
3
350
LLMのプロダクト装着と独自モデル開発
recruitengineers
PRO
1
360
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 ビジネス編
recruitengineers
PRO
3
200
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 技術編
recruitengineers
PRO
2
270
Other Decks in Technology
See All in Technology
WordPressから ヘッドレスCMSへ! Storyblokへの移行プロセス
nyata
0
330
Model Mondays S2E03: SLMs & Reasoning
nitya
0
240
FOSS4G 2025 KANSAI QGISで点群データをいろいろしてみた
kou_kita
0
180
事業成長の裏側:エンジニア組織と開発生産性の進化 / 20250703 Rinto Ikenoue
shift_evolve
PRO
1
130
rubygem開発で鍛える設計力
joker1007
2
270
Github Copilot エージェントモードで試してみた
ochtum
0
130
急成長を支える基盤作り〜地道な改善からコツコツと〜 #cre_meetup
stefafafan
0
150
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
940
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
100
CursorによるPMO業務の代替 / Automating PMO Tasks with Cursor
motoyoshi_kakaku
2
780
「良さそう」と「とても良い」の間には 「良さそうだがホンマか」がたくさんある / 2025.07.01 LLM品質Night
smiyawaki0820
1
430
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
1
110
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
12k
How to Ace a Technical Interview
jacobian
277
23k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
How STYLIGHT went responsive
nonsquared
100
5.6k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Being A Developer After 40
akosma
90
590k
Docker and Python
trallard
44
3.5k
Raft: Consensus for Rubyists
vanstee
140
7k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
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 ご清聴ありがとうございました