私はこの質問でJavaを使用しますが、これは現代のすべてのアプリケーション開発に実際に適用されます。環境全体の正確な計測性能テスト
- デベロッパーサンドボックス
- 継続的インテグレーション&/
- QAをテストするハードウェアを
- 生産
ステージング、利用可能:それらの多くのように私たちの "環境パイプライン" は、このようになります。 RAM &これらの環境のCPUは異なります。私のラップトップは2GBのデュアルコアWindowsマシンです。テストは4GBマシンで実行されます。プロダクションは、2つの(負荷分散された)8GBクアッドコアサーバです。
これらの異なるマシン(環境)で動作する場合、明らかに同じコードが異なる動作をします。
私は形式になり私のクラスのいくつかのために自動化されたパフォーマンステストを書くことについて考えていた:テストを実行するために、たとえば、8秒以上かかる場合はこのように自動化されたパフォーマンステストが失敗した
private static final long MAX_TIME = 8000;
@Test
public final void perfTestSomething() {
long start = System.currentTimeInMillis();
// Run the test
long end = System.currentTimeInMillis();
assertTrue((end - start) < MAX_TIME);
}
。
しかし、この実現は私にもたらされました。コードは異なる環境で実行され、JVMとGCの状態によって異なる動作をします。私は自分のマシンで同じテストを1000回実行することができ、結果は大きく異なります。
私は質問します。&ゲージ自動パフォーマンステストを正確に定義するには、ある環境から次の環境へコードを昇格させる方法はありますか?
ありがとうございます!
素晴らしいアドバイス - ありがとうございました。私はあなたの答えをアップしましたが、私の状況にもっと適している*ちょっとしたものだったので、緑色のチェックをrfreakに与えなければなりませんでした。しかし、無限にありがとうございます。 – IAmYourFaja