Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference ...
Search
upamune / Yu SERIZAWA
September 28, 2025
Technology
1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference 2025
https://gocon.jp/2025/talks/958624/
upamune / Yu SERIZAWA
September 28, 2025
More Decks by upamune / Yu SERIZAWA
See All by upamune / Yu SERIZAWA
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
7
7.2k
バクラクのモノレポにおける AI Coding のための環境整備と {Roo,Claude} Code活用事例 / AI Coding in Bakuraku's Monorepo: Environment Setup & Case Studies with {Roo, Claude} Code
upamune
10
12k
AI Coding in Bakuraku's Monorepo: Environment Setup & Case Studies with {Roo, Claude} Code [EN]
upamune
0
140
来週から実践できる! LayerXのバクラク事業部で行われている Go 関連の読書会のご紹介 / Bakuraku Go Reading Group
upamune
7
2.3k
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
2
2.5k
バクラク事業部でのGoのユースケースとチームを超えたナレッジ共有 | hatena.go
upamune
10
3.9k
GopherCon 2019 Report
upamune
0
2.3k
未卒 🔜 新卒 / Misotsu soon New Grads
upamune
2
800
Other Decks in Technology
See All in Technology
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
250
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
180
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
550
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
150
特殊変数大全
dak2
0
150
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
0
750
猫でもわかるKiro Web
kentapapa
1
120
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
1
600
What the customer really needed
kawaguti
PRO
3
230
LLMに渡さなかった仕事
nanaism
0
14k
LT:「このままでいいのかな?」から一歩踏み出した私のデータキャリア選択〜社会人3年目に上京を決意したリアル〜Snowflake女子会 vol.8
snowwmn0824
0
100
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
580
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
450
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
310
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
530
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
420
The Curse of the Amulet
leimatthew05
3
15k
Transcript
Flaky Testへの現実解を Goのプロポーザルから考える Go Conference 2025 うぱ @upamune / LayerX
Flaky Test を書いてしまったことがある人〜?
Flaky Test、ありますよね? 「あー、それいつも落ちてるやつなんで無視していいですよ」 「リトライしたら通りませんか?」 © LayerX Inc. "普段はパスするけど、たまに落ちる" テスト CI/CDの生産性を大きく損なう存在
3
直した方がいい
直した方がいいんだけど... 様々な事情があり修正が難しい
Go本体にもFlaky Testは存在する golang/go の src/internal/testenv/testenv.go にFlaky Testをスキップするための以下が関数が定義されている © LayerX Inc.
6
Go本体にもFlaky Testは存在する カテゴリ 件数 主な原因 ネットワーク関連 17件 DNS解決、タイムアウト デバッガー統合 15件
GDB/LLDB挙動の不安定性 CGO関連 14件 シグナル処理、スレッド管理 Windows固有 10件 シグナル、SEH 合計85件の testenv.SkipFlaky か testenv.SkipFlakyNet でマークされたテスト go test ではこのFlaky Testは実行されず、 go test -flaky フラグがある時は実行される。 golang/go@9b2d39b75b で rg "testenv\.SkipFlaky(Net)?" -t go | wc -l をした結果 © LayerX Inc. 7
Go本体のFlaky Test 例えば... © LayerX Inc. #54503: src/cmd/go/internal/modfetch/coderepo_test.go Goモジュールのコードリポジトリからバージョン情報や内容を正しく取得できることを確認するテストが gopkg.in
に依存していてFlaky #29225: src/net/udpsock_test.go UDPで0バイトのペイロードを送受信できることを確認するテストがiOSでFlaky #50470: src/time/sleep_test.go タイマーを急速に過去の時刻に変更しても、タイマーがドロップされないことを確認するテストがPlan 9 (arm) でFlaky 8
Go にもFlaky Test をハンドリングするための プロポーザルが
2018年:Issue #27181 2023年:Issue #62244 © LayerX Inc. golang/go へのFeature Request
/ Proposal Flaky Test支援のFeature Request → 却下 Flaky Testを明示的にマークし、 go test コマンドがそれを自動的に再試行する機能 「不安定なテストを許容し、助長するような機能を公式ツールに追加することには反 対」 @bradfitz がFlaky Test支援のプロポーザルを作成 → 承認 Google社内ではBazelのビルドシステムがFlaky Testの検出・アノテーション機能を持っ ているので困らないらしい Tailscaleでは go test のwrapperを作っていてリトライとアノテーションができる 10
承認されたプロポーザルの内容 © LayerX Inc. golang/go へのFeature Request / Proposal 既知のFlaky
Testを明示的にマーク マークするだけで即失敗とはならないような形で合意された Flaky Test をただマークする方法だと、すべてのテストで画一的なリトライになった り、再実行までの時間を変えたりする柔軟性がない Retries() をハンドリングすることで、exponential にsleepするテストを作れたりする 11
Tailscale の go test の wrapper は何をやっている?
Tailscaleのtestwrapper/flakytestのアプローチ:利用側 © LayerX Inc. Tailscale の go test の wrapper
flakytest.Mark でFlaky Testをマーキング Tailscale のリポジトリのIssue のURLであることを正規表現で確認 (ref) 正規表現に沿っていなかったら t.Fatal 13
Tailscaleのtestwrapper/flakytestのアプローチ © LayerX Inc. Tailscale の go test の wrapper
t.Log("flakytest: this is a known flaky test") でログを出力 cmd/testwrapper がログの出力から文字列前方一致でFlaky Testであるかどうかを判定 Flaky Test だったら失敗したら再実行 14
余談:Go 1.25 なら t.Attrが使える Go 1.25から t.Attr が利用可能になったので、ログの出力を文字列マッチしなくても良くなった © LayerX
Inc. Tailscale の go test の wrapper 15
今からFlaky Test に対処するには...?
今からFlaky Test に対処するには...? © LayerX Inc. Flaky Testを直す Go 1.25
からは synctest パッケージも正式追加されたので非同期処理にまつわるFlaky Testは直しやすくなった deep dive into testing/synctest・Go1.25新機能 testing/synctest で高速&確実な並列テストを実現する方法 失敗したテストをとにかく再実行したい gotestyourself/gotestsum を使えば --rerun-fails を使える 他にも類似ツールはありそう マークした特定のFlaky Testを再実行したい 紹介したTailscaleのtestwrapperを移植して使うのがおすすめ LayerX でも移植して利用していました (いました...?) 17
まとめ
まとめ Flaky Test は頑張って直しましょう © LayerX Inc. Flaky Test に対処できるプロポーザルがGoに承認された
実際にFlaky Test 再実行したい場合は現時点だといくつかのアプローチが取れる 全体を雑に再実行 落ちたテストだけを再実行 マーキングしたテストだけを再実行 マーキングしたテストだけを再実行したい場合は、Tailscaleの testwrapper は参考にな る実装なので見るのおすすめ 19
ありがとうございました! @upamune