「開発者体験向上に欠かせない不安定なテスト改善の秘訣」 LINE / LINE Fukuoka SETチーム 金子茉以
2023.03.30 LINE × Launchable - Developer Test安定化と高速化へのアプローチ https://launchableinc.connpass.com/event/277667/
2023.3.30開発者体験向上に⽋かせない不安定なテスト改善の秘訣Mai Kaneko
View Slide
⾃⼰紹介⽒名 : ⾦⼦茉以(Kaneko Mai)会社 : LINE Fukuoka所属 : 開発2室 SETチーム役割 : Software Engineer in Test担当プロジェクト : LINE Creators Markethttps://creator.line.me/ja/Twitter : https://twitter.com/maturika_ne
発表内容安定化 ⾼速化
発表内容安定化 ⾼速化安定化
01020304050607ContentsLINEのSETがやっていることFlaky testとはFlaky testあるあるFlaky testへの対応Launchableを使った事例Launchableを使った感想まとめ
以前のE2Eテストの実⾏状況QA環境 本番環境開発環境Daily E2E テスト(約200テストケース)Daily E2E テスト(約80テストケース)開発者へのフィードバックが遅い
現在のE2Eテスト実⾏状況QA環境 本番環境開発環境Daily E2E テスト実⾏Daily E2E テスト実⾏早いフィードバックが可能PR毎にE2E テスト実⾏
PR-Driven E2Eテストref. https://speakerdeck.com/line_devday2020/pull-request-driven-e2e-testing-with-kubernetes
開発者へのフィードバック実⾏頻度Flaky testの発⾒頻度遅い1⽇ 1~2回低い早い1⽇ 数⼗回⾼いAfter(Daily + PR-Driven)Before(Daily テストのみ)PR-Driven E2Eテスト 導⼊前後⽐較
Flaky testFlakyなテスト結果とは、同じコードで合格と失敗の両⽅の結果を⽰すテストであるGoogleのソフトウェアエンジニアリング ―持続可能なプログラミングを⽀える技術、⽂化、プロセス ⽵辺 靖昭 (監修), Titus Winters (編集), Tom Manshreck (編集), Hyrum Wright(編集), 久富⽊ 隆⼀ (翻訳), 2021, P.253, 訳注13より引⽤
Flaky test⾃分が修正した内容とは関係ないテストがCIで落ちて困ったり、イライラすることはありませんか?• E2Eテストは外部要因も絡むのでテストが不安定になりがち• ロングランしているサービスはユニットテスト数が多くなり、⽐例して不安定なテストも多くなるテストコードもテスト対象サービスのコードも変えていないのにもかかわらず、ときどき失敗したりする不安定なテストのこと
Flaky testあるある①放置されがち再現性が低い→エラー状態を作るのが⾯倒→放置されがちFlaky testがあるとテスト結果を有効に活⽤できなくなる最悪、誰もテスト結果⾒なくなってしまうことも
Flaky testあるある②リトライしがちテストをリトライする→テストが不安定なのかテスト対象サービスが不安定なのか不明→サービスのバグを⾒落とす可能性ある
実際の事例E2Eテストが数回に1回失敗したが、E2Eテストには問題がなくcache storageの⽅で問題があった暗黙のリトライは本当の解決策ではないserver cache storage数回に1回失敗
Flaky testへの対応Flaky testの発⾒膨⼤な時間と労⼒がかかる原因調査&修正どのくらいの頻度で発⽣するのか調査修正確認
LaunchableFlaky testのスコアを出してくれる
Launchable導⼊後Flaky testの発⾒原因調査&修正どのくらいの頻度で発⽣するのか調査修正確認Flaky test対応の⼤部分はLaunchableにおまかせができる!!
Launchableを使っての感想• Flaky test対応楽になった• 導⼊簡単• Documentわかりやすい• CLI (https://github.com/launchableinc/cli) 使いやすい• エラーメッセージで何が間違っているのかすぐわかる• さまざまなテストフレームワークに対応している• サポート⼿厚い• 複数のCIを使っているPR-Driven E2Eテストの複雑な環境にも適⽤できた• 改善要望を伝えると検討・実現してくれる
まとめ• PR-Driven E2EテストによりE2Eテスト実⾏回数が膨⼤に増えた• それに伴い、Flaky testが増えた• Flaky testは放置されがち、リトライしがちな傾向がある• 対応するのは⼤変• Launchableを使うことで調査、修正確認などの⼿間が減らせた• 今後展望として• ユニットテストへの適⽤• 他の機能を活⽤し効率的なテスト実⾏を⽬指す
THANK YOU