796 Views
March 20, 25
スライド概要
航海士 → Webプログラマー / #fjordbootcamp / Kaigi on Rails Organizer / Rubyist / Vimmer / Turntablist / hiphop / cactus / workout / fukuoka / IDA JAPAN 2023 finalist
Flaky test シバキ隊 @obregonia1
自己紹介 • @obregonia1(オブレゴニア) • 株式会社mov • 趣味は DJ や珍奇植物 • 推しは NJZ (NewJeans) • 2024年から Kaigi on Rails のオーガナイザー
4月 17 mov Drinkup at RubyKaigi 2025 主催: 株式会社mov DAY 2 Drink up at Rubykaigi 2025 4.17 Thu. 19:00 START ハッシュタグ : #movdrinkup RubyKaigi Day2 ドリンクアップやります
Flaky test とは? • コードを変更していないにも関わらず成功したり失敗したりする不安定なテスト • 原因はランダム性だったり、テスト間の依存関係によるものだったり色々ある • おそらくほとんどのアプリケーションに Flaky test が存在している • テストの内16%は Flaky test だとも言われている ◦ https://testing.googleblog.com/2016/05/flaky-tests-at-google-and-how-we.html
Flaky test の何が問題? • テストが頻繁に落ちてしまうと CI に対する信頼性が無くなってしまう • Flaky test が落ちたのか、コードの変更によって落ちるようになったのかが分かりにくくなる • 再実行してテストが終わるまでの時間や、再実行するための GitHub Actions などのワークフローの実行時間が無駄になってしまう
入社したときの状況 • 現職に入ったのは2024年の11月 • Flaky test の影響で結構な頻度で CI が落ちる… • おそらく社内ではそんなに問題視されてはいない • 一人だけ先輩のエンジニアが Flaky test の PR を作ってたりした • 地味にストレス…
やってみるか
やったこと • master 以外のブランチでしか CI が回ってなかったから master でも回すように変更 ◦ 基本的に CI がパスしてからマージするので master で失敗したテストは基本的に Flaky test だから特定しやすい
やったこと • Gem "rspec-retry " を使って retry する # rails_helper.rb config.around :each, :retry do |ex| ex.run_with_retry retry: 3 end # test it "foo", :retry do ~
やったこと あとは flaky test を見つけて対応していくだけの簡単なお仕事…
その後… before after
その後… 月間MVPゲットした オブレゴニア(DJ OB-ONE) @obregonia1 · Mar 12 やったぜ 御祝 月間MVP 株式会社mov
その後… 別のチームの方からも改善してくれてる人だと認知されてた!
ということで みなさんも Flaky test シバキ隊やっていきましょう
THANK YOU ! ! !