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