CircleCIでphpunitの並列テストを行う

概要

CircleCIでphpunitの並列テストを行うアプローチについてかく。

PHPUnitの設定ファイルを生成するスクリプトを用意する

こんな感じのスクリプトを用意して、設定ファイルを自動生成する。

shellscriptを書いているのはテストの実行をコンテナで行っている都合上、CIのjobでコンビニエンスイメージを使っているため、他に都合良い言語がなかった。

CircleCIでコンテナ毎にテストを振り分け並列化させる

先程用意したスクリプトをgenerate_phpunit.shとして、次のようなスクリプトで並列化の準備ができる。

後はテスト実行時に生成した設定ファイルを指定すれば、複数コンテナでテストが実行され、並列化ができる。

docker-composeでテストする場合の一例。

所感

これは実際に業務でトライしたことだったのだが、テスト間の実行順に依存関係があるらしく、並列化でのテスト実行を簡単に実現することができなかった...

まずは依存関係を何とかする必要がある...

参考