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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
270
Windsurf Rulesでどう自分のクローンをつくるか / How can I make a clone of myself in Windsurf Rules
itosho
0
150
Text EditorとしてのWindsurf / Windsurf as a Text Editor
itosho
0
380
【2024年版】インターネットサービスの育て方 / How to Grow and Scale Internet Services
itosho
0
130
打線組という個人サービスを Goで開発している話 / Indie Service Development by Go
itosho
1
210
Components Reconsidered
itosho
1
2.4k
打線組を支える技術 / The Technology Behind Dasengumi
itosho
0
78
組織をスケールさせるためのTech Vision / Connehito Tech Vision for Growing Our Team
itosho
2
720
生きのびるためのインディー開発 / Indie Development to Survive
itosho
0
72
Other Decks in Programming
See All in Programming
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
550
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
660
初めての模倣学習とVLA
natsutan
0
450
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
120
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
260
ソフトウェアラスタライザ
fadis
1
780
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
0
120
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.7k
高専キャリア LT 発表内容
crysta1221
6
5.5k
Building an Out-of-Order CPU
latte72
0
630
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
0
180
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
160
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
970
Docker and Python
trallard
47
4.2k
The Pragmatic Product Professional
lauravandoore
37
7.4k
A better future with KSS
kneath
240
18k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
A Tale of Four Properties
chriscoyier
163
24k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
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