Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Laravelから始めるテスト駆動開発

 Laravelから始めるテスト駆動開発

2020/02/09 ~ 02/11の期間で開催された【PHPerKaigi2020】のルーキーズLTで発表した登壇資料です。

AkitoTsukahara

February 10, 2020
Tweet

More Decks by AkitoTsukahara

Other Decks in Technology

Transcript

  1. Laravelから始める
    テスト駆動開発
    PHPerKaigi2020

    View Slide

  2. 塚原 彰仁
    PHPer歴 3年
    Laravel,CakePHP,
    WordPress

    View Slide

  3. トークの概要
    ・テスト書く習慣ゼロの状態から
    テスト駆動開発を始めた話

    View Slide

  4. ある案件の話(失敗談)
    ▼イベント管理システム
    ・チケット申し込み
    ・当日来場受付

    View Slide

  5. 数々の苦難が…

    View Slide

  6. 機能を追加すると
    既存機能が動かない…

    View Slide

  7. 増え続けるテストケース
    ・会員種別
    ・申込み手順
    ・開催中のイベント
    ・例外処理
    →400件以上をリリースの度に

    View Slide

  8. 申し込んだデータが
    消えたみたいで…

    View Slide

  9. 出典:BLEACH 13巻

    View Slide

  10. 何が起きていたのか?
    1時間以内に購入
    1時間以上経過する

    View Slide

  11. 何が起きていたのか?
    1時間以内に購入
    1時間以上経過する

    View Slide

  12. View Slide

  13. よし!テスト書く!

    View Slide

  14. テスト書く習慣を作る

    View Slide

  15. 機能追加に耐えられる

    View Slide

  16. きれいなコード書ける

    View Slide

  17. View Slide

  18. レベル1
    社内案件から始める

    View Slide

  19. Laravelで始めてみる
    ・ヘルパーメソッドが便利
    ・ドキュメント豊富

    View Slide

  20. 仕様の概要
    ▼個人の売上貢献度を教えてくれる
    システム
    ・Googleログイン認証
    ・Google Sheets API連携

    View Slide

  21. この処理をテスト駆動開発でやってみる
    Google認証画面(←サンプル)

    ログイン

    メールアドレス取得

    View Slide

  22. 色々参考にしながら
    こんな感じに

    View Slide

  23. 何とかできそう!
    ・参考サイトたくさんある
    ・テスト前提なら書きやすい

    View Slide

  24. これで満足?

    View Slide

  25. 出典:BLEACH 13巻

    View Slide

  26. 打ち切り漫画っぽい

    View Slide

  27. 出典:シャーマンキング 32巻

    View Slide

  28. レベル2
    因縁のイベントシステム

    View Slide

  29. 問題の処理のテストコードを書いていく
    チケット申し込み

    予約状態を確認(←サンプル)

    チケット予約確定

    View Slide

  30. まずはFatControllerの
    リファクタリング
    1.予約状況の確認処理をまるごとService
    レイヤーに切り出す
    2.テスト用に処理を分解する

    View Slide

  31. 泥臭くテストを書いていく
    こんな感じに

    View Slide

  32. それでも書けないところは
    E2Eテスト、手動テストでカバー
    問題のテストケースは
    E2Eテストにできました!
    (1時間の待ち時間解消!!)

    View Slide

  33. View Slide

  34. 会社のみんなからは
    複雑な案件に対して、エンジニアも非エンジニアも
    安心感を持って取り組めます!
    機能追加の心理ハードルが下がりますー

    View Slide

  35. 出典:SLAM DUNK15巻

    View Slide

  36. 打ち切り

    View Slide

  37. ・やってみる価値はあるよ!
    ・実務で苦戦したことが
    逆にモチベーションに!
    ・小さく始めていこう!

    View Slide

  38. よかったら
    テストどうでしょうか?

    View Slide

  39. @AkitoTsukahara

    View Slide