テスト実行速度を改善してお金をかけずに開発スピードを爆速にする
Notes de l'éditeur
- 私が前回PHPカンファレンス関西に来たのは2014年。3年ぶり。
3年経つと色々変わりましたね。
- 今回は特に後ろの2つについてお話したいと思います。
- まずコードを書いてプルリク作りますね。bitbucketユーザーの人はマージリクエストかもしれませんが。
- pushしたプルリクはciを通って…
- マージされます。
- サクサクコードを書いてたくさんプルリクを作っても、ビール瓶の首は細くて1個ずつしか進みません。
- プルリク作って、作って、作って…おっと詰まってしまいました。
ここでうんとお金をかけまくればビール瓶自体の本数が増えるんですが、注ぎ口の大きいピッチャーにしてもらうこともできるんですが、できればお金は節約したいですよね。
そこで、ビール瓶1本のままお金をかけずに、速くビールを注ぎ終わる方法はないものでしょうか? (10秒)
- ここを速くすればいいですね。
- 重複するアサーションをなくす…クラスのユニットテストでテスト済のことを機能テストでも確認する、みたいなのをなくす
まとめる…コード例 なるべく1つのアサーションで済ませる
- (2つ読んでから)何となく複数のテストメソッドがあるテストケースでもテストケースクラスのインスタンスは1個しか作られないってイメージありませんか?実は違うんです。実行イメージを見てください(コード例へ)
- 実際のphpunitのコードは複雑なのでこれは簡単な実行イメージです。各テストメソッドごと、dataProvider設定があれば各dataProviderごとにテストケースのインスタンスは違っていて、テストケースにプロパティがあってtearDown()で解放されてない場合は同じテストケース内の全部のテストが実行終わるまで残ってしまいます。これをtearDown()で解放するのとしないのとでは、テストメソッド数が多ければ多いほど、実行時の軽さが違ってきます。
- 快適なテストライフを!