2023/09/13「テストパフォーマンス向上のためのテスト戦略〜自動化の秘訣 Lunch LT〜」で登壇した内容です。
© 2023 Wantedly, Inc.テスト文化の成熟:自動テストが浸透した組織が次に目指すべきステップテストパフォーマンス向上のためのテスト戦略〜自動化の秘訣 Lunch LT〜Sep. 13 2023 - Sora Ichigo
View Slide
© 2023 Wantedly, Inc.自己紹介● 市古 空 / いちご そら● Wantedly, Inc. 所属● DX (開発者体験) 改善チーム・基盤開発● DevOps に関する Enabling 活動X (Twitter): @igsr5_ GitHub: @igsr5
© 2023 Wantedly, Inc.話すこと1. “テスト文化の成熟” を目指して行った取り組みの話2. そこで得た知見
© 2023 Wantedly, Inc.事例“テスト文化の成熟”を目指して行った取り組みの話初期 / 中期 / 後期
© 2023 Wantedly, Inc.初期:“テスト文化の成熟”を目指して行った取り組み(2022/10 ~ 11)現状● 自動テスト初導入: 2012年● テストカバレッジ: 主要リポジトリで50~80%程度 ※1● 自動テストを書くという文化は既に浸透問題● 自動テストの効果が十分に発揮しきれていない (という仮説)※1 単体テストを対象に計測
© 2023 Wantedly, Inc.初期:“テスト文化の成熟”を目指して行った取り組み(2022/10 ~ 11)> 自動テストの効果が十分に発揮しきれていない例えば、、● 自動テストが書かれていないコードの動作確認に時間がかかる● 自動テストが書かれていないコードが本番環境で壊れる
© 2023 Wantedly, Inc.自動テストをより徹底すればこれらの問題を防げるのでは?
© 2023 Wantedly, Inc.初期:“テスト文化の成熟”を目指して行った取り組み(2022/09 ~ 11)“テスト文化の成熟”を目指すプロジェクトがスタート
© 2023 Wantedly, Inc.初期:やったこと(2022/10 ~ 2022/11)「自動テストが一つもないコードは改善されにくく問題も起きやすい」という仮説の検証→ 全く自動テストが存在しないコードにフォーカス● テストカバレッジの強化、テストコードのリファクタリング、...● 主に手のつけやすかった単体テストを増やした
© 2023 Wantedly, Inc.初期:やったこと(2022/10 ~ 2022/11)「自動テストが一つもないコードは改善されにくく、問題も起きやすい」という仮説の検証→ 全く自動テストが存在しないコードにフォーカス● テストカバレッジの強化、テストコードのリファクタリング、...● 主に手のつけやすかった単体テストを増やした→ テストカバレッジは上がったものの新たな問題が、、
© 2023 Wantedly, Inc.中期:新たな問題(2022/12 ~ 2023/01)確かにテストカバレッジは上がるものの、現実としては我々の本来考えていた“テスト文化の成熟” という期待値とはズレることに気づく。例えば、、● (テストカバレッジ) ≠ (自動テストの網羅性) である● 自動テストが存在しても実際に活用されるかどうか
© 2023 Wantedly, Inc.中期:新たな問題(2022/12 ~ 2023/01)つまり:むやみに自動テストを足していっても、真に自動テストの効果が発揮できたとは言えないそもそも、、
© 2023 Wantedly, Inc.そもそも ”テスト文化の成熟” とは何だろう?
© 2023 Wantedly, Inc.中期:プロジェクト再整理我々の目指すべき理想(テスト文化の成熟)とは何だろうか目指すべき理想の認識がズレてしまうとプロジェクトを通して真に価値を生むことは難しい
© 2023 Wantedly, Inc.中期:プロジェクト再整理我々の目指すべき理想(テスト文化の成熟)とは何だろうかそこで我々はプロジェクトメンバーで理想に関する認識合わせを行った
© 2023 Wantedly, Inc.中期:理想設定。issue そのまま抜粋。我々の目指すべき理想(テスト文化の成熟)とはテストの効果が信頼されている状態のことを指す。具体的には以下の4点を目指す。● コードベースに高品質なテストが存在する● 開発者が高品質なテストの存在を知っている● 開発者が高品質のテストの存在が十分な効果につながることを知っている● 開発者が高品質なテストを生産できる
© 2023 Wantedly, Inc.中期:理想設定。issue そのまま抜粋。我々の目指すべき理想(テスト文化の成熟)とはテストの効果が信頼されている状態のことを指す。具体的には以下の4点を目指す。● コードベースに高品質なテストが存在する● 開発者が高品質なテストの存在を知っている● 開発者が高品質のテストの存在が十分な効果につながることを知っている● 開発者が高品質なテストを生産できるコードベースの問題 < 人 (文化) の問題
© 2023 Wantedly, Inc.中期:やったこと(2022/12~2023/01)目標テストの効果が信頼されている状態を目指す取り組み● テストカバレッジの向上○ テストピラミッドの中で不足していた E2E テストの拡充● チーム内で自動テスト勉強会● 自動テストにまつわる社内発信Enabling よりのアプローチを多くとった
© 2023 Wantedly, Inc.中期:やったこと(2022/12~2023/01)当時の自動テスト勉強会の議事録
© 2023 Wantedly, Inc.後期:成果(2023/02)テストの効果が信頼されている状態を目指してプロジェクトは進む。成果● 社内発信: LTを7回実施● 自動テスト関連の社内ドキュメント: 3ページ追加● Playwright ※2 によるE2Eテストの整備: 初期設定 & テスト拡充※2 https://github.com/microsoft/playwright
© 2023 Wantedly, Inc.後期:成果(2023/02)ではこれらの成果は開発組織にどう貢献した?
© 2023 Wantedly, Inc.後期:成果(2023/02)ではこれらの成果は開発組織にどう貢献した?A. 🤔
© 2023 Wantedly, Inc.後期:成果(2023/02)もちろん個別の取り組みで開発者の助けになる成果は出せたしかし実際に我々の目指した “テスト文化の成熟” が● どの程度達成されたのか● どの程度開発組織に貢献したのかはパッと判断できない状況になっていた
© 2023 Wantedly, Inc.後期:関心はより広いスコープへ(2023/02)文化と向き合うために● 開発組織に貢献するとは?○ 今の開発組織には何が求められる?○ 開発組織のパフォーマンスとは何だろう● “テスト文化の成熟” は開発組織に対してどのような影響を与えるだろうか● 現状・達成度合いを判断するための指標は?
© 2023 Wantedly, Inc.後期:関心はより広いスコープへ(2023/02)文化と向き合うために● 開発組織に貢献するとは?○ 今の開発組織には何が求められる?○ 開発組織のパフォーマンスとは何だろう● “テスト文化の成熟” は開発組織に対してどのような影響を与えるだろうか● 現状・達成度合いを判断するための指標は?関心は自動テストのみでなく開発組織のパフォーマンスへ (DevOps)
© 2023 Wantedly, Inc.後期:関心はより広いスコープへ(2023/02)その後の話:社内勉強会の実施へ
© 2023 Wantedly, Inc.後期:関心はより広いスコープへ(2023/02)その後の話:社内勉強会の実施へDevOps についてはまた今度どこかで話します
© 2023 Wantedly, Inc.知見プロジェクトを通して得た知見より良い自動テストとDevOps の考え
© 2023 Wantedly, Inc.プロジェクトを通して得た知見① 自動テストはただ書くだけではない自動テストはただ書くだけでは真にその効果は発揮できない● テストピラミッドに基づく自動テストの量● xUTP Patterns に基づくテストコードのリファクタリング● Flaky、実行スピード→ より良いテストに向けた継続的改善が必要
© 2023 Wantedly, Inc.プロジェクトを通して得た知見② 良い自動テストが存在するだけでは不十分良い自動テストがあってもそれらを活用する文化がなければ不十分● 開発者は自動テストの存在に気づいているか?● 開発者は自動テストの有用な使い方を知っているか?○ 例: TDD等のプラクティス開発組織への貢献にはDevOpsの理解も必要になる。
© 2023 Wantedly, Inc.まとめ● Wantedly では “テスト文化の成熟” を目指していくつかの取り組みを行っている○ 未だ成熟したとは言えず道半ば● 得られた知見● 自動テストはただ書くだけではない。より良い自動テストが必要になる。● 良い自動テストが存在するだけでは不十分。文化と向き合うためにはより広い視野が必要になる (DevOps)。
© 2023 Wantedly, Inc.ご清聴ありがとうございました!
© 2023 Wantedly, Inc.参考資料● What is Test Driven Development (TDD) ? | BrowserStack● Fast and reliable end-to-end testing for modern web apps |Playwright● DevOps 技術: 継続的テスト | Cloud アーキテクチャ センター |Google Cloud● index at XUnitPatterns.com● Nicole Forsgren Ph.D., Jez Humble, Gene Kim(著), 武舎広幸, 武舎るみ(翻訳), "LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する", インプレス, 2018年