2020/02/09 ~ 02/11の期間で開催された【PHPerKaigi2020】のルーキーズLTで発表した登壇資料です。
Laravelから始めるテスト駆動開発PHPerKaigi2020
View Slide
塚原 彰仁PHPer歴 3年Laravel,CakePHP,WordPress
トークの概要・テスト書く習慣ゼロの状態からテスト駆動開発を始めた話
ある案件の話(失敗談)▼イベント管理システム・チケット申し込み・当日来場受付
数々の苦難が…
機能を追加すると既存機能が動かない…
増え続けるテストケース・会員種別・申込み手順・開催中のイベント・例外処理→400件以上をリリースの度に
申し込んだデータが消えたみたいで…
出典:BLEACH 13巻
何が起きていたのか?1時間以内に購入1時間以上経過する
よし!テスト書く!
テスト書く習慣を作る
機能追加に耐えられる
きれいなコード書ける
レベル1社内案件から始める
Laravelで始めてみる・ヘルパーメソッドが便利・ドキュメント豊富
仕様の概要▼個人の売上貢献度を教えてくれるシステム・Googleログイン認証・Google Sheets API連携
この処理をテスト駆動開発でやってみるGoogle認証画面(←サンプル)↓ログイン↓メールアドレス取得
色々参考にしながらこんな感じに
何とかできそう!・参考サイトたくさんある・テスト前提なら書きやすい
これで満足?
打ち切り漫画っぽい
出典:シャーマンキング 32巻
レベル2因縁のイベントシステム
問題の処理のテストコードを書いていくチケット申し込み↓予約状態を確認(←サンプル)↓チケット予約確定
まずはFatControllerのリファクタリング1.予約状況の確認処理をまるごとServiceレイヤーに切り出す2.テスト用に処理を分解する
泥臭くテストを書いていくこんな感じに
それでも書けないところはE2Eテスト、手動テストでカバー問題のテストケースはE2Eテストにできました!(1時間の待ち時間解消!!)
会社のみんなからは複雑な案件に対して、エンジニアも非エンジニアも安心感を持って取り組めます!機能追加の心理ハードルが下がりますー
出典:SLAM DUNK15巻
打ち切り
・やってみる価値はあるよ!・実務で苦戦したことが逆にモチベーションに!・小さく始めていこう!
よかったらテストどうでしょうか?
@AkitoTsukahara