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.2k
ヘルススコアの改善の過程で起きた嬉しい変化
2024/07/05に、MagicPod Meetupで発表した、Takafumi Yanagawaの資料です。
Recruit
PRO
July 05, 2024
Tweet
Share
More Decks by Recruit
See All by Recruit
Curiosity & Persistence
recruitengineers
PRO
2
32
結果的にこうなった。から見える メカニズムのようなもの。
recruitengineers
PRO
1
90
成長実感と伸び悩みからふりかえる キャリアグラフ
recruitengineers
PRO
1
35
リクルートの オンプレ環境の未来を語る
recruitengineers
PRO
2
35
LLMのプロダクト装着と独自モデル開発
recruitengineers
PRO
0
38
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 ビジネス編
recruitengineers
PRO
1
24
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 技術編
recruitengineers
PRO
0
24
大規模プロダクトにおける フロントエンドモダナイズの取り組み紹介
recruitengineers
PRO
4
64
技術的ミスと深堀り
recruitengineers
PRO
3
50
Other Decks in Technology
See All in Technology
x86-64 Assembly Essentials
latte72
3
410
Qiita Organizationを導入したら、アウトプッターが爆増して会社がちょっと有名になった件
minorun365
PRO
1
320
大規模アジャイルフレームワークから学ぶエンジニアマネジメントの本質
staka121
PRO
3
1.6k
アジャイルな開発チームでテスト戦略の話は誰がする? / Who Talks About Test Strategy?
ak1210
1
830
RaspberryPi CM4(CM5も)面白いぞ!
nonnoise
0
100
OPENLOGI Company Profile
hr01
0
60k
LayerXにおけるAI活用事例とその裏側(2025年2月) バクラクの目指す “業務の自動運転” の例 / layerx-ai-deim2025
yuya4
1
540
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
540
EDRの検知の仕組みと検知回避について
chayakonanaika
12
5.3k
【Forkwell】「正しく」失敗できるチームを作る──現場のリーダーのための恐怖と不安を乗り越える技術 - FL#83 / A team that can fail correctly by forkwell
i35_267
1
100
遷移の高速化 ヤフートップの試行錯誤
narirou
6
1.9k
AIエージェント元年@日本生成AIユーザ会
shukob
1
260
Featured
See All Featured
The Language of Interfaces
destraynor
156
24k
How STYLIGHT went responsive
nonsquared
99
5.4k
How to Ace a Technical Interview
jacobian
276
23k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Being A Developer After 40
akosma
89
590k
Building Your Own Lightsaber
phodgson
104
6.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
260
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Why Our Code Smells
bkeepers
PRO
336
57k
Site-Speed That Sticks
csswizardry
4
420
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
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 ご清聴ありがとうございました