2017-09-10 8 views
1

私は再試行された.time()メソッドを使用してAPI応答時間を取得できましたが、postmanまたはsoapuiを使用して送信された場合、 私はいつも安心して過ごす時間が長すぎますが、答えを見つけられなかった理由を見て、私はまた、原因であるかもしれない安心してオーバーヘッドの考え方を減らす方法を検討しました。 任意の提案は)(restassuredでの応答時間は他のツール応答時間が再設定されました

これは私のrestassuredコールであると私は与えられた=

レスポンスレスポンスを比較するrestassuredにすべての時間関数を試してみましたに比べて高くなっている理由を見つけるためにここに役立つかもしれないしてください.contentType(MediaType.TEXT_XML).accept(MediaType.TEXT_XML).body(content).log()。すべて() .when()。post( "https://myurl.com").then()。log()。すべて) .extract()。response();

logger.info(Response.getTime()); 
    logger.info(Response.getTimeIn(TimeUnit.SECONDS)); 
    logger.info(Response.time()); 
    logger.info(Response.timeIn(TimeUnit.MILLISECONDS)); 
+0

応答時間が大幅に増加していますか?郵便配達員と安心してのテスト応答時間を測定する際に保証されているのは、私が扱うさまざまなAPIをテストするときに私の5%の差の範囲内です。郵便配達を使用しても、最初の応答時間が2番目または3番目に高い場合の後続の応答と比較して、最初の応答で顕著な違いがあります。 –

答えて

0

docs値によって示されるように、JVMが冷えている場合は特に、正確ではありません。あなたは時間測定を事実ではなく近似とみなすべきです。たとえば、特定のコミットに関連する突発的なスパイクなどの偏差を見つけるために、(CIサーバ上の)統計を追跡することは、より長い期間にわたって有用であり得る。これを正確な測定値と見なすべきではない理由は、REST Assuredの応答時間測定にJVM/Groovyクラスのロード時間などの処理が多数含まれるためです。本当に適切なベンチマークを取得したい場合は、JMHのようなものを使用してください。

+0

寒いRestAssuredテストで約4秒のオーバーヘッドが見えます。 IO要求/応答往復の時間を測定することは、一部の負荷クラスに依存してはいけません。 OkHttpを使った寒いJVMでは、その対策は現実に近いものです。 'Stopwatch started = Stopwatch.createStarted();応答レスポンス= okHttpClient.newCall(リクエスト).execute(); curl: 'curl localhost:8080/poke 0.01s user 0.01s system 59%cpu 0.023 total'のようなネイティブツールを使用しています。 – Brice

+0

私はそれを改善するために何ができるかについての提案をしています。コードを見れば、実際の要求/応答処理を可能な限り閉じるようにタイミング測定値を入れようとしました。しかし、私は間違って何かをしている可能性があります:) – Johan

+1

はい、私はほとんどコードを見ましたが、私はgroovyにはよく慣れていませんが、 'TimingFilter'は、実際の呼び出しとそれはgroovy自身のリフレクションコードをたくさん意味します。 'RestAssuredHttpBuilder#doRequest'のほかに、呼び出しの周りに追加の処理が行われるので、このフィルタはクライアントコードとIO往復を測定しています。 Imhoはそこで行われるべきです: 'this.client.execute(reqMethod、delegate.getContext())'。 – Brice

関連する問題