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
テストってなんだろう?
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
itosho
July 24, 2018
Programming
300
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テストってなんだろう?
クローズドな勉強会でのLT資料です。
itosho
July 24, 2018
More Decks by itosho
See All by itosho
【2025年版】インターネットサービスの育て方 / How to Grow and Scale Internet Services 2025
itosho
0
250
Windsurf Rulesでどう自分のクローンをつくるか / How can I make a clone of myself in Windsurf Rules
itosho
0
140
Text EditorとしてのWindsurf / Windsurf as a Text Editor
itosho
0
360
【2024年版】インターネットサービスの育て方 / How to Grow and Scale Internet Services
itosho
0
120
打線組という個人サービスを Goで開発している話 / Indie Service Development by Go
itosho
1
210
Components Reconsidered
itosho
1
2.4k
打線組を支える技術 / The Technology Behind Dasengumi
itosho
0
75
組織をスケールさせるためのTech Vision / Connehito Tech Vision for Growing Our Team
itosho
2
710
生きのびるためのインディー開発 / Indie Development to Survive
itosho
0
68
Other Decks in Programming
See All in Programming
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
170
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
270
AIが無かった頃の素敵な出会いの話
codmoninc
1
420
Foundation Models frameworkで画像分析
ryodeveloper
1
610
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.8k
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.9k
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.3k
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
630
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
690
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
200
Believing is Seeing
oripsolob
1
190
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
570
A Soul's Torment
seathinner
6
3.4k
Become a Pro
speakerdeck
PRO
31
6.2k
Exploring anti-patterns in Rails
aemeredith
3
460
Balancing Empowerment & Direction
lara
6
1.2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Music & Morning Musume
bryan
47
7.3k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
440
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Transcript
テストってなんだろう? Connehito Inc. @itosho 1
▪ 自己紹介 ・伊藤 翔 @itosho ・所属:コネヒト株式会社 / リードエンジニア ・会社ではサーバーサイドエンジニアをやっています ・よく書く言語:PHP
/ Ruby / Golang ・家ではYome Driven Developmentをやっています ・つくっているサービス:カレンダー / 家計簿 / セール情報通知
▪ 今日話すこと ・事前にいただいたアンケートに沿って…! ・普段書いているテスト ・テストで苦労していること ・テストのメリット / デメリット ・運用についてのコネヒト社での事例 ・今日話さないこと
・E2Eテスト / 総合テスト ・TDD / BDD
1. テストを実装したことありますか 4
5
2. どのようなテストを実装しましたか 6
▪ 普段書いているテスト / ツール ・Web APIのIntegrationテスト / Unitテスト ・PHPUnit /
RSpec ・CLIツールのUnitテスト ・testingパッケージ(Golang) ・OSSのUnitテスト ・https://github.com/itosho/easy-query ・PHPUnit / codecov
3. テストを実装する際に苦労したことはなんですか 8
▪ 苦労している点 ・テストデータの管理・保守 ・”モノリシック”なFixtureデータ ・あるテストのためにデータを修正すると別のテストが壊れる ⇒FactoryBot(旧: FactoryGirl)を使って動的にデータを作る ・テストのためにミニ言語(DSL)を覚える必要がある ・RSpec /
FactoryBot等 ・高機能なツールであるほど学習コストが高い ⇒Golangでは標準のtestingパッケージのみを使う
▪ 苦労している点 ・外部サービス / コマンドとの連携 ・モックの実装が必要(難しい) ・意味のない壊れやすいスタブ ⇒外部とやりとりを行う境界をinterface(モックポイント)にする ⇒Consumer Driven
Test(あんまり詳しくないですが…) ref: https://deeeet.com/writing/2016/10/25/go-interface-testing/
4. テストを実装して感じたメリットはなんですか 11
▪ メリット ・リファクタ&仕様変更時のスピード&安心感 ・テストが”正しく”壊れる ・暖かみのある回帰テストが不要になる ・テストコードが生きたドキュメントになる ・コードの変更とほぼ自動的に同期される ・テストがあるOSSはダウンロードされやすい ・カバレッジがあるとさらにGood
5. テストを実装して感じたデメリットはなんですか 13
▪ デメリット ・慣れるまで(慣れても?)開発スピードが落ちる ・TDDはこの限りではない(設計技法なので) ・プロダクトが成長するとCIの実行時間が長くなりがち ・特にiOS / Androidのテスト ・教条主義的になりやすい(特にUnitテスト) ・Unitテストを書くとコードの品質が上がる
・Unitテストを書くと設計が綺麗になる ⇒正しいけど正しくない
6. 運用はうまく回っていますか 15
▪ コネヒト社でのCI/CD事例 ・Web APIに関しては原則テストコードを書く ・画面がないのでテストが書きやすい ・PHPUnitを利用 ・CIはTravis CIを利用 ・CI時に静的解析 /
Lintツールを実行 ・使用ツール ・Phan / PHP CodeSniffer ・reviewdog / Danger ⇒機械が出来ることは機械に任せる
まとめ 17
▪ テストとは… ・テストはお金を生まない ・Yome Drive Developmentにおいてテストを書く意味はない ・バグ出したらさっさと直すかケーキでも買ってきたほうがよい ・テストは保険 ・不具合による機会損失と運用コストを予め防ぐ ・自動化することでコスト圧縮が積分で効いてくる
ref: http://shyouhei.tumblr.com/post/73195212853/テストのめどい話 ⇒テストで自分たちの身を守っていこう!
宣伝 19
▪ コネヒトでも勉強会開催します! ・Connehito Marché #3〜iOS市〜 ・8/7(火)19:00〜21:30 ・LT枠 / オーディエンス枠ともに絶賛募集中! ・connpass:
https://connehito.connpass.com/event/95285/ ・Twitter: https://twitter.com/connehitomarche
ご清聴ありがとうございました 21