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
2
460
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
yukyan
December 13, 2024
Tweet
Share
More Decks by yukyan
See All by yukyan
ソースコードのEUC-JP、全部抜く大作戦 / BuriKaigi2026
n3xem
1
2.3k
Let's Vibe Coding Mini Apps
n3xem
0
43
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
930
Goで作るChrome Extensions / Fukuoka.go #21
n3xem
2
3.1k
Other Decks in Programming
See All in Programming
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
250
ご飯食べながらエージェントが開発できる。そう、Agentic Engineeringならね。
yokomachi
1
290
AIプロダクト時代のQAエンジニアに求められること
imtnd
2
750
Ruby x Terminal
a_matsuda
7
590
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
670
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.3k
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
210
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1.2k
Unity6.3 AudioUpdate
cova8bitdots
0
110
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
4
400
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
230
15年目のiOSアプリを1から作り直す技術
teakun
1
610
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
130
The World Runs on Bad Software
bkeepers
PRO
72
12k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
Amusing Abliteration
ianozsvald
0
120
Between Models and Reality
mayunak
2
230
How GitHub (no longer) Works
holman
316
140k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Visualization
eitanlees
150
17k
A designer walks into a library…
pauljervisheath
210
24k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
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分では話しきれないので、会社の技術ブログ書きます!
おわりに ぜひこれらのツールを活用して 「コスパの良い」テストを実装してみてください!