PHPerKaigi2022でのプロポーザル案
案
cakephp-fixture-factories の登場によって変化する、PHPプロジェクトにおけるテストフィクスチャ(Test fixture)管理の選択肢
自動テストにおけるテストフィクスチャ(Test fixture, 場合によってはテストコンテキストとも呼ぶ)は、数多の種類のデータを扱うであろう、ほぼ全てのソフトウェアにおいて必要になるテクニックです。
その中でもデータベースと密接に連携する Web アプリケーションにおいては、データベースにデータを投入し、そのデータをテストフィクスチャとして利用するテクニックは初期の頃から利用されてきました。
PHPにおいては、各種フルスタックフレームワークにテストフィクスチャを管理する機能が備わったりしていますが、一方で Fabricate という Ruby における factory_bot のような"柔軟な定義構文を用いてテストフィクスチャを管理する"ためのパッケージや、ここ最近になって CakePHP Fixture Factories という Fabricate に近しいコンセプトでテストフィクスチャを扱うパッケージが登場してきています。
本セッションでは、新たに登場した CakePHP Fixture Factories の解説を踏まえ、CakePHP ではない PHP プロジェクトでも CakePHP Fixture Factories が転用できる可能性を示しつつ、新たなテストフィクスチャのスタンダードについてお話できればと思います。
決定稿
自動テストにおけるテストフィクスチャは、ほぼ全てのソフトウェアにおいて必要になるテクニックです。その中でもデータベースと密接に連携する Web アプリケーションにおいては、データベースにデータを投入し、そのデータをフィクスチャとして利用するテクニックは初期の頃から利用されてきました。
PHPにおいては、 Fabricate という Ruby における factory_bot のような"柔軟な定義構文を用いてフィクスチャを管理する"ためのパッケージや、ここ最近になって CakePHP Fixture Factories という Fabricate に近しいコンセプトのパッケージが登場してきています。
本トークでは、最近登場した CakePHP Fixture Factories の解説を中心に、新たなテストフィクスチャ管理ツールのスタンダードについてお話できればと思います。
(393文字)
ボツ文言
そもそもテストフィクスチャとは、システムテストにおける事前条件となる実行環境のことを指します。
PHP の各種フルスタックフレームワークに目を向けてみると、 Laravel においては Artisan によって生成できるファクトリクラスが柔軟なテストフィクスチャ管理ツールとして筆頭になっているでしょう。
一方、CakePHP においては、 cakephp/bake によって生成される、テストフィクスチャの元となる配列などで構成されるデータを管理するクラスによってテストフィクスチャを用意し、自動テストを行うのが従来の方法でした。しかし、 Fabricate という Ruby における factory_bot のような"柔軟な定義構文を用いてテストフィクスチャを管理する"ためのパッケージや、ここ最近になって CakePHP Fixture Factories という Fabricate に近しいコンセプトでテストフィクスチャを扱うパッケージが登場してきているなど、近々で状況が変わりつつあります。
Whitesource Renovate を用いた PHP プロジェクトのパッケージ自動アップデート戦略
みなさん Composer 使ってますか?使ってますよね〜〜〜??
Composer のようなパッケージマネージャのおかげで、パッケージの依存関係を明らかにしたりパッケージの依存関係や実行環境の依存関係にあわせてパッケージを適切なバージョンにアップデートすることもできます。
一方で、定期的にパッケージのバージョンアップを行うのは手間ではあります。その一手間を減らしてくれる dependabot や WhiteSource Renovate といった自動でパッケージのアップデートを Pull Request にしてくれるツールが登場します。
本トークでは、 Composer を利用しているプロジェクトにおいて、 WhiteSource Renovate を用いたアップデートに関する Pull Request の自動作成戦略についてお話しできればと思います。
(384文字)
ボツ
各種ソフトウェアで利用するパッケージを管理しているパッケージマネージャには多かれ少なかれお世話になっていると思う。そのパッケージマネージャによって依存関係が明らかになることもよいことだが、依存関係をアップデートすることができることも今日のソフトウェア開発に多大に寄与している。
その依存関係にあるパッケージをアップデートすることは定期的に行うことが望まれる。そのために自動でアップデートを提案してくれるツールの必要性は常々ある。
ああ、なんか前段から書いてると遠いな...
Google re:Work ガイドに載っている、心理的安全の先にある"相互信頼"について理解を深めよう