Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Laravelから始めるテスト駆動開発
AkitoTsukahara
February 10, 2020
Technology
0
90
Laravelから始めるテスト駆動開発
2020/02/09 ~ 02/11の期間で開催された【PHPerKaigi2020】のルーキーズLTで発表した登壇資料です。
AkitoTsukahara
February 10, 2020
Tweet
Share
More Decks by AkitoTsukahara
See All by AkitoTsukahara
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
0
780
気づいた時にリファクタしよう! Laravelのデータベースクエリを最適化するTips_PHPerKaigi2022 LT
akitotsukahara
0
570
【IMO】コードレビューって難しいよね.pdf
akitotsukahara
11
6.9k
Web API開発をするなら、ドキュメントは自動生成にしておこう!(PHPerKaigi2021)
akitotsukahara
2
1.4k
Other Decks in Technology
See All in Technology
JFrog 最新情報 - JFrog DevOps プラットフォームの今までとこれから / jfrog-update-for-devopskaigi-2022
tsuyo
0
150
20220622_FinJAWS_あのときにAWSがあったらこうできた
taketakekaho
0
110
What's new in Vision
satotakeshi
0
190
ひとりでも安定して 組織を変える活動を続けていくための ストレスマネジメント
pastelinc
0
810
ソフトウェアテスト 2022 / Software Testing 2022
ak1210
1
1.7k
JUnit5.7, 5.8の新機能紹介 #jjug_ccc #jjug_ccc_b / junit 5.7, 5.8 new features
kyonmm
PRO
2
410
オンラインでのサーバー切替事例紹介/ColoplTech-05-01
colopl
0
170
Custom GitHub Actions by Java
kazamori
0
280
データエンジニアと作るデータ文化
yuki_saito
4
1.5k
インタラクティブなメディアの地図投影法: WebメルカトルからAdaptive Projectionsへ / MIERUNE 社内勉強会 #033
sorami
2
210
The role of the data organization as a business progresses
line_developers
PRO
3
840
What's Data Lake ? Azure Data Lake best practice
ryomaru0825
2
740
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
The World Runs on Bad Software
bkeepers
PRO
57
5.3k
How to name files
jennybc
40
61k
The Mythical Team-Month
searls
209
39k
The Invisible Customer
myddelton
110
11k
The Web Native Designer (August 2011)
paulrobertlloyd
74
1.9k
What's new in Ruby 2.0
geeforr
336
30k
How to Ace a Technical Interview
jacobian
265
21k
Build The Right Thing And Hit Your Dates
maggiecrowley
19
1.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_i
23
15k
No one is an island. Learnings from fostering a developers community.
thoeni
9
1.3k
Become a Pro
speakerdeck
PRO
3
840
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