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
490
2
Share
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
yukyan
December 13, 2024
More Decks by yukyan
See All by yukyan
ソースコードのEUC-JP、全部抜く大作戦 / BuriKaigi2026
n3xem
1
2.5k
Let's Vibe Coding Mini Apps
n3xem
0
57
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
980
Goで作るChrome Extensions / Fukuoka.go #21
n3xem
2
3.2k
Other Decks in Programming
See All in Programming
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
120
OSもどきOS
arkw
0
350
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
100
初めてのRubyKaigiはこう見えた
jellyfish700
0
370
1人1案件のプロダクトエンジニア時代に、"プロセス監督"としてチャレンジしたこと
non0113
0
360
net-httpのHTTP/2対応について
naruse
0
380
Oxcを導入して開発体験が向上した話
yug1224
4
260
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
270
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
100
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
480
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3k
自動レビューエンジンの実装と運用 ~レビューのない世界へ~
kurukuru1999
2
300
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
520
The Pragmatic Product Professional
lauravandoore
37
7.3k
Code Reviewing Like a Champion
maltzj
528
40k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
340
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
130
The Cost Of JavaScript in 2023
addyosmani
55
10k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
130
A Soul's Torment
seathinner
6
2.9k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
220
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
310
Skip the Path - Find Your Career Trail
mkilby
1
130
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分では話しきれないので、会社の技術ブログ書きます!
おわりに ぜひこれらのツールを活用して 「コスパの良い」テストを実装してみてください!