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
Laravelから始めるテスト駆動開発
Search
AkitoTsukahara
February 10, 2020
Technology
0
200
Laravelから始めるテスト駆動開発
2020/02/09 ~ 02/11の期間で開催された【PHPerKaigi2020】のルーキーズLTで発表した登壇資料です。
AkitoTsukahara
February 10, 2020
Tweet
Share
More Decks by AkitoTsukahara
See All by AkitoTsukahara
PHP8.2にバージョンアップして もっと型表現を豊かにしよう
akitotsukahara
0
430
オンボーディングのために 私はプロダクト考古学者になりました!
akitotsukahara
3
430
プロダクトチームから他部署に 伝播するふりかえり文化
akitotsukahara
0
430
スピンオフサービス構築で培われた開発ノウハウをご紹介!
akitotsukahara
0
140
ビルドツールViteを10分で解説!
akitotsukahara
0
1k
今日からSvelteで開発だ! どうする?何から始める?
akitotsukahara
0
280
どのくらい速くなるの?Laravel MixとViteを性能比較してみました!
akitotsukahara
0
11k
スクラムマスターを経験して得られた学びとエンジニアとしての成長
akitotsukahara
0
350
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
1
2.4k
Other Decks in Technology
See All in Technology
自動化の第一歩 -インフラ環境構築の自動化について-
smt7174
1
130
ユーザーコミュニティが海外スタートアップのDevRelを補完する瞬間
nagauta
0
180
DjangoCon Europe 2025 Keynote - Django for Data Science
wsvincent
0
560
Simplify! 10 ways to reduce complexity in software development
ufried
2
250
UIパフォーマンス最適化: AIを活用して100倍の速度向上を実現した事例
kinocoboy2
0
130
AIによるコードレビューで開発体験を向上させよう!
moongift
PRO
0
430
Part1 GitHubってなんだろう?その2
tomokusaba
2
750
250510 StepFunctionのテスト自動化始めました vol.1
east_takumi
1
220
Google Cloud Next 2025 Recap マーケティング施策の運用及び開発を支援するAIの活用 / Use of AI to support operation and development of marketing campaign
atsushiyoshikawa
0
180
使えるデータ基盤を作る技術選定の秘訣 / selecting-the-right-data-technology
pei0804
6
1.2k
CodeRabbitと過ごした1ヶ月 ─ AIコードレビュー導入で実感したチーム開発の進化
mitohato14
1
250
Global Azure2025(GitHub Copilot ハンズオン)
tomokusaba
2
760
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
120
52k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
840
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
600
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
33k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.2k
Adopting Sorbet at Scale
ufuk
76
9.4k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
KATA
mclloyd
29
14k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.5k
Transcript
Laravelから始める テスト駆動開発 PHPerKaigi2020
塚原 彰仁 PHPer歴 3年 Laravel,CakePHP, WordPress
トークの概要 ・テスト書く習慣ゼロの状態から テスト駆動開発を始めた話
ある案件の話(失敗談) ▼イベント管理システム ・チケット申し込み ・当日来場受付
数々の苦難が…
機能を追加すると 既存機能が動かない…
増え続けるテストケース ・会員種別 ・申込み手順 ・開催中のイベント ・例外処理 →400件以上をリリースの度に
申し込んだデータが 消えたみたいで…
出典:BLEACH 13巻
何が起きていたのか? 1時間以内に購入 1時間以上経過する
何が起きていたのか? 1時間以内に購入 1時間以上経過する
None
よし!テスト書く!
テスト書く習慣を作る
機能追加に耐えられる
きれいなコード書ける
None
レベル1 社内案件から始める
Laravelで始めてみる ・ヘルパーメソッドが便利 ・ドキュメント豊富
仕様の概要 ▼個人の売上貢献度を教えてくれる システム ・Googleログイン認証 ・Google Sheets API連携
この処理をテスト駆動開発でやってみる Google認証画面(←サンプル) ↓ ログイン ↓ メールアドレス取得
色々参考にしながら こんな感じに
何とかできそう! ・参考サイトたくさんある ・テスト前提なら書きやすい
これで満足?
出典:BLEACH 13巻
打ち切り漫画っぽい
出典:シャーマンキング 32巻
レベル2 因縁のイベントシステム
問題の処理のテストコードを書いていく チケット申し込み ↓ 予約状態を確認(←サンプル) ↓ チケット予約確定
まずはFatControllerの リファクタリング 1.予約状況の確認処理をまるごとService レイヤーに切り出す 2.テスト用に処理を分解する
泥臭くテストを書いていく こんな感じに
それでも書けないところは E2Eテスト、手動テストでカバー 問題のテストケースは E2Eテストにできました! (1時間の待ち時間解消!!)
None
会社のみんなからは 複雑な案件に対して、エンジニアも非エンジニアも 安心感を持って取り組めます! 機能追加の心理ハードルが下がりますー
出典:SLAM DUNK15巻
打ち切り
・やってみる価値はあるよ! ・実務で苦戦したことが 逆にモチベーションに! ・小さく始めていこう!
よかったら テストどうでしょうか?
@AkitoTsukahara