jwata blog

勉強の記録や思ったことなど

PHPUnitの実行速度改善 2

先ほどの記事の後に、色々いじっていて高速化の糸口が掴めそうだったのでメモ程度に書きます。
今回やったのは、setUpでテスト毎に毎回呼ばれる処理に重いものが入っていたら、setUpBeforeClassに移動させて速度の改善を計ってみました。
(テスト的に毎回呼ばなければいけないものもあると思うけど、一旦無視して計測)

一部、このメソッドは重い。ってのが分かっていて、それをsetUpで呼んでいる部分を修正していきました。

実行結果

/vendor/bin/phpunit
PHPUnit 3.7.28 by Sebastian Bergmann.

Configuration read from xx/phpunit.xml

...............................................................  63 / 612 ( 10%)
............................................................... 126 / 612 ( 20%)
............................................................... 189 / 612 ( 30%)
..........................F.................................... 252 / 612 ( 41%)
............................EEEEEEEEEEEEEEEEEEEEE..EE.E........ 315 / 612 ( 51%)
............................................................... 378 / 612 ( 61%)
............................................................... 441 / 612 ( 72%)
............................................................... 504 / 612 ( 82%)
.......................E....................................... 567 / 612 ( 92%)
.............................................

Time: 47.01 seconds, Memory: 55.25Mb

(略)

以前の実行結果 現状のテスト実行ログ

% ./vendor/bin/phpunit
PHPUnit 3.7.28 by Sebastian Bergmann.

...............................................................  63 / 612 ( 10%)
............................................................... 126 / 612 ( 20%)
............................................................... 189 / 612 ( 30%)
............................................................... 252 / 612 ( 41%)
............................................................... 315 / 612 ( 51%)
............................................................... 378 / 612 ( 61%)
............................................................... 441 / 612 ( 72%)
............................................................... 504 / 612 ( 82%)
............................................................... 567 / 612 ( 92%)
.............................................

Time: 1.43 minutes, Memory: 68.50Mb

OK (612 tests, 1240 assertions)

約半分の実行時間になっております!
テストの高速化は仕組みで解決していきたかったのですが、1つ1つのテストの効率性が重要ということも今回はっきりしました。

チーム内に共有して、草の根的に改善していきたいと思います。