1

PHPで基本ユニットテストスイートを作成しました。テストに合格したかどうかと、テストの実行にかかった時間が表示されます。それはうまく機能しますが、私は問題に遭遇し、それに対処する方法がわかりません。各単体テストクラスの各初期単体テストは、通常、重要な要因により、そのクラスの他の単体テストよりも実行に時間がかかるように見えます。

例として:

TestClass1

  • Test1.1(0.042395)
  • Test1.2(0.000392)
  • Test1.3(0.000325)
  • Test1.4(0.000645)

TestClass2

  • Test2.1(0.042395)
  • Test2.2(0.000392)
  • Test2.3(0.000325)
  • Test2.4(0.000645)

最初のテスト時間もリソースのロードを考慮していると思いますが、最初のテストを他の時間と一致させることができないようです。各テストには、実行されるsetUpメソッドとtearDownメソッドがあります。また、まったく同じテストを別の名前で繰り返してみましたが、予想されるより短い時間で実行されるため、最初のテストには常に何らかのオーバーヘッドがあります。

PHPにはunloadClass関数やunloadFile関数がないため、最初のテストにリソースをメモリにロードするオーバーヘッドがある場合、テストごとに一貫したテスト環境を再作成できるかどうかはわかりません。ファイルのプリロードと初期クラスのインスタンス化を試しましたが、どちらも影響を与えていないようです。

最初のテスト時間に影響を与える可能性がある他の可能性がありますか?これに対処する適切な方法は何ですか?

:私は既存のPHPユニットテストフレームワークを知っていますが、少し違うことをしようとしているので、この問題の解決には役立たないので、「PHPUnitを使用してください」とは言わないでください。

4

1 に答える 1

2

PHP コードで実行しているベンチマークはすべて歪曲されます。Xdebug のプロファイリング機能を使用して、より正確なベンチマークを取得することを検討することをお勧めします: http://xdebug.org/docs/profiler

于 2011-09-15T23:41:26.517 に答える