Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Laravelから始める テスト駆動開発 PHPerKaigi2020
Slide 2
Slide 2 text
塚原 彰仁 PHPer歴 3年 Laravel,CakePHP, WordPress
Slide 3
Slide 3 text
トークの概要 ・テスト書く習慣ゼロの状態から テスト駆動開発を始めた話
Slide 4
Slide 4 text
ある案件の話(失敗談) ▼イベント管理システム ・チケット申し込み ・当日来場受付
Slide 5
Slide 5 text
数々の苦難が…
Slide 6
Slide 6 text
機能を追加すると 既存機能が動かない…
Slide 7
Slide 7 text
増え続けるテストケース ・会員種別 ・申込み手順 ・開催中のイベント ・例外処理 →400件以上をリリースの度に
Slide 8
Slide 8 text
申し込んだデータが 消えたみたいで…
Slide 9
Slide 9 text
出典:BLEACH 13巻
Slide 10
Slide 10 text
何が起きていたのか? 1時間以内に購入 1時間以上経過する
Slide 11
Slide 11 text
何が起きていたのか? 1時間以内に購入 1時間以上経過する
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
よし!テスト書く!
Slide 14
Slide 14 text
テスト書く習慣を作る
Slide 15
Slide 15 text
機能追加に耐えられる
Slide 16
Slide 16 text
きれいなコード書ける
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
レベル1 社内案件から始める
Slide 19
Slide 19 text
Laravelで始めてみる ・ヘルパーメソッドが便利 ・ドキュメント豊富
Slide 20
Slide 20 text
仕様の概要 ▼個人の売上貢献度を教えてくれる システム ・Googleログイン認証 ・Google Sheets API連携
Slide 21
Slide 21 text
この処理をテスト駆動開発でやってみる Google認証画面(←サンプル) ↓ ログイン ↓ メールアドレス取得
Slide 22
Slide 22 text
色々参考にしながら こんな感じに
Slide 23
Slide 23 text
何とかできそう! ・参考サイトたくさんある ・テスト前提なら書きやすい
Slide 24
Slide 24 text
これで満足?
Slide 25
Slide 25 text
出典:BLEACH 13巻
Slide 26
Slide 26 text
打ち切り漫画っぽい
Slide 27
Slide 27 text
出典:シャーマンキング 32巻
Slide 28
Slide 28 text
レベル2 因縁のイベントシステム
Slide 29
Slide 29 text
問題の処理のテストコードを書いていく チケット申し込み ↓ 予約状態を確認(←サンプル) ↓ チケット予約確定
Slide 30
Slide 30 text
まずはFatControllerの リファクタリング 1.予約状況の確認処理をまるごとService レイヤーに切り出す 2.テスト用に処理を分解する
Slide 31
Slide 31 text
泥臭くテストを書いていく こんな感じに
Slide 32
Slide 32 text
それでも書けないところは E2Eテスト、手動テストでカバー 問題のテストケースは E2Eテストにできました! (1時間の待ち時間解消!!)
Slide 33
Slide 33 text
No content
Slide 34
Slide 34 text
会社のみんなからは 複雑な案件に対して、エンジニアも非エンジニアも 安心感を持って取り組めます! 機能追加の心理ハードルが下がりますー
Slide 35
Slide 35 text
出典:SLAM DUNK15巻
Slide 36
Slide 36 text
打ち切り
Slide 37
Slide 37 text
・やってみる価値はあるよ! ・実務で苦戦したことが 逆にモチベーションに! ・小さく始めていこう!
Slide 38
Slide 38 text
よかったら テストどうでしょうか?
Slide 39
Slide 39 text
@AkitoTsukahara