#phperkaigi 2022でテストフィクスチャ戦略の話をしてみた
してきました。
フィードバックはこちらまで!
forteeで受け付けております!!!
https://fortee.jp/phperkaigi-2022/me/feedback/566b5f63-21e1-4244-b743-afed03503585
資料
https://files.speakerdeck.com/presentations/d514083dc51c4238b3872695716dd6ad/slide_0.jpg
CakePHP Fixture Factories の登場によって変化する、PHPプロジェクトにおけるテストフィクスチャ管理の選択肢 / Test Fixture Management in PHP Project - Speaker Deck
参考文献
Test fixture - Wikipedia
Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ
test-unit - Ruby用単体テストフレームワーク
index at XUnitPatterns.com
Inline Setup at XUnitPatterns.com
Delegated Setup at XUnitPatterns.com
Implicit Setup at XUnitPatterns.com
Shared Fixture at XUnitPatterns.com
Fresh Fixture at XUnitPatterns.com
Amazon.co.jp: xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler)) (English Edition) 電子書籍: Meszaros, Gerard: 洋書
abseil / Software Engineering at Google
Software Design 2022年3月号|技術評論社
「自動テストとテスト駆動開発、その全体像」を執筆しました(Software Design 2022年3月号) - t-wadaのブログ
vierge-noire/cakephp-fixture-factories: CakePHP Fixture Factories
CakeFest 2020 - Fixture Factories Plugin - Juan Pablo Ramirez - YouTube
データベースアクセス & ORM - CakePHP 4.x Strawberry Cookbook
現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ - t-wadaのブログ
Google Slidesにソースコードを貼り付ける - zenn.dev
参考文献というよりSpecial Thanks
補足
全体感
なんというか、CakePHP Fixtures Factoriesの話が中心というよりか、テストフィクスチャにまつわるエトセトラみたいな話になってしまいましたね...ご存知の方には釈迦に説法みたいなかたちで恐縮です🙏
とはいえ、テストフィクスチャに関するフレームワークの歴史とかをざっと総浚いできたのは個人的にも多少インターネットに貢献するエントリになったのかな...?と思ったりしてます。歴史周りは外から眺めたり残ってた文献をちょろっと調べただけだったりするので、なにか間違いがあったら是非ご指摘ください!
収録からのアップデート
全体的には、発表撮り直す目的で構造を整理したのと、サンプルコードを差し替えたりしてました。
あとは、以下の内容で vierge-noire/test-database-cleaner を扱う言及をしているのですが、CakePHPアプリとnon-CakePHPアプリでデータベースのリフレッシュ戦略が違うので、その辺の補足を書き足したかんじになります。
https://files.speakerdeck.com/presentations/d514083dc51c4238b3872695716dd6ad/slide_59.jpg
「なんか結論曖昧じゃない???」
そうよね...めちゃわかるよ...
時間があればもっとケーススタディを話せたのかなあ、とか思いつつ、自分の全体感としてそこまで用意できるほど自力が足らんな!修行修行!!と思ったりもしてますが、また別の機会で結論もアップデートできるとよいかなあ、と思ってたりしてます。
とはいえ、発表中にはやとさんからご質問いただいた検索のケーススタディについて考えた際に、 「最初はインラインセットアップして、後日共通化できないか検討する」みたいなのがよい のかなあ...なんて思ってたりしてます🤔
質問まとめ
検索などで複数の条件をテストしなければいけないときは、
1. すべてのケースを暗黙的セットアップに入れる
2. テストケースごとにインラインセットアップする
だとどっちの戦略を取ればいいんだろう。
これは、@t_wadaにもご回答いただきましたが、最初は2で実装して、あわよくば1に移行できないか?を検討するとよさそうな気持ちです🙋‍♀️
ご質問/ご指摘はどしどし募集してます!
Twitterで @takoba_ にメンションとかDMでもらえるとうれしいです〜〜💌
余談
収録後記
そもそも資料の初稿完成が大幅に遅れて、収録も所定の期限オーバーしてしまい@tomzohに「ろ、ロスタイムをください...!」と懇願して一発撮り(3分オーバー)した、的なサムシングだったので、ある意味ライブ感があってよいのではないでしょうか!!!(開き直り)
で、収録した後にいろいろ資料をゴニョってしまったので、いまだにのびしろしかないのですが、この分野もうちょっと整理してアップデートしてお話したりどこかで再度お話できるかもしれません。もうちょっとテストフィクスチャだったりxUnitについての日本語情報を整理して提供していきたい気分が今回の発表で生まれました!
登壇当日に思いっきり寝坊しました😇😇😇😇
そして、当日は(数日前から睡眠のリズムがガッツリ崩れてしまい)思いっきり寝坊してハイブリット登壇できなかったのが悔やまれます...泣ける...😇
当日は登壇を見守ってから15:00くらいには現地に到着する予定なので、もしよかったら現地でぼくと握手してください!!🤝
おわりに
何気にはじめてカンファレンスのレギュラートークしましたが、なかなかむずかしいですね!
今後も積極的にやっていくぞい〜〜💪
何か気になることとか質問とかがあれば、お気軽に Twitter で @takoba_ までご連絡ください!!!🙏
https://files.speakerdeck.com/presentations/d514083dc51c4238b3872695716dd6ad/slide_68.jpg
#slides #Works #phperkaigi #テストフィクスチャ #CakePHP #CakePHP_Fixture_Factories