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
190
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
380
オンボーディングのために 私はプロダクト考古学者になりました!
akitotsukahara
3
390
プロダクトチームから他部署に 伝播するふりかえり文化
akitotsukahara
0
380
スピンオフサービス構築で培われた開発ノウハウをご紹介!
akitotsukahara
0
110
ビルドツールViteを10分で解説!
akitotsukahara
0
940
今日からSvelteで開発だ! どうする?何から始める?
akitotsukahara
0
240
どのくらい速くなるの?Laravel MixとViteを性能比較してみました!
akitotsukahara
0
10k
スクラムマスターを経験して得られた学びとエンジニアとしての成長
akitotsukahara
0
330
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
1
2.2k
Other Decks in Technology
See All in Technology
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
420
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
540
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
890
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
120
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.7k
Taming you application's environments
salaboy
0
190
OS 標準のデザインシステムを超えて - より柔軟な Flutter テーマ管理 | FlutterKaigi 2024
ronnnnn
0
210
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Building Your Own Lightsaber
phodgson
103
6.1k
Producing Creativity
orderedlist
PRO
341
39k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
A Modern Web Designer's Workflow
chriscoyier
693
190k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
The Cult of Friendly URLs
andyhume
78
6k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Typedesign – Prime Four
hannesfritz
40
2.4k
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