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