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
270
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
yukyan
December 13, 2024
Tweet
Share
More Decks by yukyan
See All by yukyan
Goで作るChrome Extensions / Fukuoka.go #21
n3xem
2
2.7k
Other Decks in Programming
See All in Programming
Compose Hot Reload is here, stop re-launching your apps! (Android Makers 2025)
zsmb
1
480
英語 × の私が、生成AIの力を借りて、OSSに初コントリビュートした話
personabb
0
190
地域ITコミュニティの活性化とAWSに移行してみた話
yuukis
0
230
API for docs
soutaro
2
840
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
240
Building a macOS screen saver with Kotlin (Android Makers 2025)
zsmb
1
140
Django for Data Science (Boston Python Meetup, March 2025)
wsvincent
0
330
Day0 初心者向けワークショップ実践!ソフトウェアテストの第一歩
satohiroyuki
0
830
AIコーディングワークフローの試行 〜AIエージェント×ワークフローでの自動化を目指して〜
rkaga
2
3.5k
Devin入門と最近のアップデートから見るDevinの進化 / Introduction to Devin and the Evolution of Devin as Seen in Recent Update
rkaga
9
4.8k
自分のために作ったアプリが、グローバルに使われるまで / Indie App Development Lunch LT
pixyzehn
1
150
いまさら聞けない生成AI入門: 「生成AIを高速キャッチアップ」
soh9834
16
4.5k
Featured
See All Featured
Done Done
chrislema
183
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
520
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
The Pragmatic Product Professional
lauravandoore
33
6.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.2k
Six Lessons from altMBA
skipperchong
27
3.7k
Docker and Python
trallard
44
3.3k
GraphQLとの向き合い方2022年版
quramy
46
14k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
Building Flexible Design Systems
yeseniaperezcruz
329
38k
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分では話しきれないので、会社の技術ブログ書きます!
おわりに ぜひこれらのツールを活用して 「コスパの良い」テストを実装してみてください!