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のテスト戦略」 / kamakura.go
Search
yukyan
December 13, 2024
Programming
500
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
yukyan
December 13, 2024
More Decks by yukyan
See All by yukyan
ソースコードのEUC-JP、全部抜く大作戦 / BuriKaigi2026
n3xem
1
2.6k
Let's Vibe Coding Mini Apps
n3xem
0
72
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
1k
Goで作るChrome Extensions / Fukuoka.go #21
n3xem
2
3.2k
Other Decks in Programming
See All in Programming
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
200
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
570
AIが無かった頃の素敵な出会いの話
codmoninc
1
380
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
220
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1.1k
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
160
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
280
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.5k
今さら聞けない .NET CLI
htkym
0
180
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
410
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.2k
Featured
See All Featured
Faster Mobile Websites
deanohume
310
32k
Making the Leap to Tech Lead
cromwellryan
135
10k
How GitHub (no longer) Works
holman
316
150k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
370
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Typedesign – Prime Four
hannesfritz
42
3.1k
Building AI with AI
inesmontani
PRO
1
1.1k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
230
4 Signs Your Business is Dying
shpigford
187
22k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Transcript
短期間での 新規プロダクト開発における 「コスパの良い」 Goのテスト戦略 GMOペパボ株式会社 大浦優太郎
自己紹介 大浦優太郎 ユーキャン GMOペパボ株式会社 for Gamersチーム エンジニア Go歴 1年半 X:
@yukyan_p
はじめに 今年のGoの思い出...
はじめに
はじめに バックエンドサーバーが Goで実装されてます!
はじめに 開発開始から13営業日で ユーザーへの提供を開始!!!
なぜ短期間でのリリースを実現できたか? いろいろある・・・ ・親しんだ言語で開発 ・実装の力があるエンジニアが集まっていた ・バックエンドのテスト戦略
なぜ短期間でのリリースを実現できたか? いろいろある・・・ ・親しんだ言語で開発 ・実装の力があるエンジニアが集まっていた ・バックエンドのテスト戦略
https://speakerdeck.com/takumakume/lolipop-for-gamers-infrastructure?slide=9
テスト戦略
テスト戦略 定義したシナリオ(「ログインできる」、「サー バーを立ち上げる」など)に沿って、 実際にちゃんと動くのか を主軸にテストする。
テスト戦略 「実際にちゃんと動くのか」 =忠実性の高いテストをやっていきたい
テスト戦略 忠実性という観点であれば.... 単体テスト < 統合テスト 統合テスト < E2Eテスト
テスト戦略 忠実性という観点であれば.... 単体テスト < 統合テスト 統合テスト < E2Eテスト 外部サービスへの 疎通により...
実行速度が遅い! 安定性が低い! = コストが高い
https://levtech.jp/media/article/column/detail_496/
テスト戦略 「実際にちゃんと動くのか」 =忠実性の高いテストをやっていきたい 単体テスト < 統合テスト 統合テスト < E2Eテスト 実行速度が遅い!
安定性が低い! = コストが高い
テスト戦略 そこで!! httpstub, grpcstubを活用し スタブサーバーを実装!!
httpstub、grpcstubとは httptest.Serverを使ったスタブサーバーを簡単に実装できる https://github.com/k1LoW/httpstub
https://github.com/k1LoW/httpstub
httptest.Serverを使うと何が嬉しいか httptest.NewServerで立ち上げたサーバーはgoroutineで実行される Go Runtimeが構成要素を管理するため、 軽量で安定した運用が可能
https://speakerdeck.com/k1low/go-conference-2023?slide=8
テスト戦略 これらを使うことで、 統合テストやE2Eテストをミディアムテスト として実現 また、goroutineで実行されるサーバーを用いることで安定感がある https://testing.googleblog.com/2010/12/test-sizes.html
https://levtech.jp/media/article/column/detail_496/
テスト戦略 あとは... コスパ良く楽にシナリオテストを書きたい...
テスト戦略 あとは... コスパ良く楽にシナリオテストを書きたい... runnを活用!!
runnとは https://github.com/k1LoW/runn
runnとは YAMLで書いたシナリオテストを実行できる! GitHub ActionsやKubernetesのマニフェストを書 いたことがあれば簡単!
https://github.com/k1LoW/runn
runnとは そして... Goのテストに組み込めます!!!! 組み込んだらいつも通り go test を実行すればOK!
https://github.com/k1LoW/runn
テスト戦略 • httpstub, grpcstubを使ったスタブサーバをテストに使用 • シナリオテストツール runn を使用
テスト戦略 • httpstub, grpcstubを使ったスタブサーバをテストに使用 • シナリオテストツール runn を使用 • goroutineの仕組みを使った安定性のあるミディアムテスト
• すぐにGoテストに組み込める書き心地のいいシナリオテスト
テスト戦略 • httpstub, grpcstubを使ったスタブサーバをテストに使用 • シナリオテストツール runn を使用 • goroutineの仕組みを使った安定性のあるミディアムテスト
• すぐにGoテストに組み込める書き心地のいいシナリオテスト
結果...
一方で現在は課題もある ・実行時間増加 ・Flaky Test 5分では話しきれないので、会社の技術ブログ書きます!
おわりに ぜひこれらのツールを活用して 「コスパの良い」テストを実装してみてください!