Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goで学ぶ Fuzzing
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
TOC
September 07, 2022
Programming
0
300
Goで学ぶ Fuzzing
Let's Go Talk #3 で LT 登壇した際の資料
https://connehito.connpass.com/event/257000/
TOC
September 07, 2022
Tweet
Share
More Decks by TOC
See All by TOC
仮説→実験→検証→学び... プロダクト開発を前に進めるためにMobius Outcome Deliveryを学び 実践していること
toc0522
3
3.8k
ファシリテーションLT ~良いファシリテーションをするために~
toc0522
0
510
もっと快適に! デプロイフロー改善への道!
toc0522
0
880
Go で Golden File Test
toc0522
1
1.2k
Other Decks in Programming
See All in Programming
Oxlint JS plugins
kazupon
1
1k
2026年 エンジニアリング自己学習法
yumechi
0
150
Event Storming
hschwentner
3
1.3k
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
220
AIプロダクト時代のQAエンジニアに求められること
imtnd
0
100
今から始めるClaude Code超入門
448jp
8
9.2k
AI時代の認知負荷との向き合い方
optfit
0
180
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
630
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
490
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
PRO
0
130
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
1k
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
1
510
Building Applications with DynamoDB
mza
96
6.9k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
770
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.4k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
58
Building an army of robots
kneath
306
46k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
The Pragmatic Product Professional
lauravandoore
37
7.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
920
The browser strikes back
jonoalderson
0
440
Git: the NoSQL Database
bkeepers
PRO
432
66k
Transcript
2022/09/07 Let’s Go Talk #3 TOC Goで学ぶ Fuzzing
- TOC - コネヒト株式会社 - バックエンドエンジニア - 主にPHP - Go
は趣味で勉強中 自己紹介
- 入力されうるテストケースを大量に入力し、挙動を確認するテスト手法 - 意図しないデータが入力されたときに、挙動を調べることで不具合・脆弱 性の確認を行う - 想定外のデータを`ファズ`というらしい - テストをする立場だと、自分に都合のいいテストデータを選びがちである が、バイアスのかからないテストデータを利用できる
Fuzzingってなに?
- 元々 go-fuzz というツールがあったが、Go 1.18 から標準で機能として追 加された - go-fuzz は今まで334個のバグを見つけている(すごい!)
- 既存のツールよりも簡単に、ユニットテストと同じように書けることを目指し た - ref. Design Draft: First Class Fuzzing Go 1.18 で追加されたFuzzing
実際のコード例 - seed corpus と呼ばれる 「種になるデータ」を入れる。未 指定もできるがパターンがわ かっているなら指定した方が信 頼できそう。 -
テスト部分はユニットテストと 同様にはできない場合がある (=入力を予測できない)。元 に戻せるテストだったり、エ ラーが起きたかどうかで確認 する。
ユニットテストと比較
go-fuzz を使うと - func Fuzz(data []byte) int でテストデータ生成したり - `$
go-fuzz-build` したり - `$ go-fuzz` したり と特有の処理、コマンドがあるっぽい
実際に実行すると - IDE だと GUI 上で -fuzz フ ラグをつけられて便利 -
execs: 入力数。大量に実行 されていることがわかる - interesting: コードカバレッ ジが変化するような入力値。数 の増加は時間と共に鈍化。 実行
実際に実行すると - 失敗したテストケースは別 ファイルと記録される - 次回テストするときのテスト データとして用いられる - これも個別実行できるので デバッグに便利!
- Go 標準の Fuzzing は既存のユニットテストっぽく書けるので学習コスト が小さそう - 自身のバイアスに囚われない、信頼できるテストケースを見つけられそう - Design
Draft: First Class Fuzzing で思想を知るのは面白いので、他 のも見てみたい まとめ
- Design Draft: First Class Fuzzing - Go1.18から追加されたFuzzingとは - フューチャー技術ブログ
- Go Fuzzingによるファジングテスト/ランダムテスト - 絶対に落とせない!友人の結婚式の余興用アプリケーションをエラーゼロ で突破した - M3 Tech Blog 参考