【问题标题】:response time in restassured放心的响应时间
【发布时间】:2017-09-10 20:56:45
【问题描述】:

我已经成功地使用 reassured .time() 方法捕获了 api 响应时间,但我注意到如果使用 postman 或 soapui 发送相同的请求,restassured 返回的响应时间略长。 我到处寻找为什么放心花费太长时间但没有找到任何答案,我还研究了如何减少可能是原因的放心开销思考,但也没有成功找到它。 请在此处提供任何建议以帮助您了解为什么与其他工具相比,reassured 的响应时间更高

这是我放心的电话,我尝试了所有的时间功能来比较

Response Response = given().contentType(MediaType.TEXT_XML).accept(MediaType.TEXT_XML).body(content).log().all()
            .when().post("https://myurl.com").then().log().all()
            .extract().response();

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

【问题讨论】:

  • 您是否发现响应时间明显增加?在测试我使用的各种 API 时,在测量响应时间时使用 Postman 和 Rest Assured 进行测试对我来说差异在 5% 以内。即使使用 Postman,我发现第一个响应与后续响应相比存在显着差异,后续响应的第一个响应时间远高于第二个或第三个响应时间。

标签: testing rest-assured response-time


【解决方案1】:

如docs 所示,该值并不精确,尤其是在 JVM 处于冷态时。您应该将时间测量视为近似值而不是事实。例如,在较长时间内跟踪统计信息(在 CI 服务器上)以发现偏差(例如与特定提交相关的突然峰值)可能很有用。之所以不应将此视为精确测量,是因为 REST Assured 的响应时间测量包括大量处理,例如 JVM/Groovy 类加载时间。如果您真的想获得适当的基准,您可能应该使用 JMH 之类的东西。

【讨论】:

  • 我在冷 RestAssured 测试中看到大约 4 秒的开销。测量 IO 请求/响应往返的时间不应依赖于某些负载类。在带有 OkHttp 的冷 JVM 上,该度量更接近于现实。 Stopwatch started = Stopwatch.createStarted(); Response response = okHttpClient.newCall(request).execute(); assertThat(started.elapsed(TimeUnit.MILLISECONDS)).isLessThanOrEqualTo(100);,使用 curl 等原生工具:Done curl localhost:8080/poke 0.01s user 0.01s system 59% cpu 0.023 total。
  • 我愿意就如何改进它提出建议。如果您查看代码,我尝试将时序测量尽可能靠近实际的请求/响应处理。但我当然可能做错了什么:)
  • 是的,我几乎没有看过代码,但我对 groovy 很不熟悉,但我认为TimingFilter 是它出错的地方,因为它可以测量实际调用周围的其他过滤器,并且意味着很多groovy自己的反射代码。除了在RestAssuredHttpBuilder#doRequest 中围绕调用执行额外的东西,所以这个过滤器测量客户端代码和IO 往返。恕我直言,措施应该在那里完成:this.client.execute(reqMethod, delegate.getContext()).
  • 也许有办法让 groovy 暖起来?我遇到了这个问题,因为我正在运行一个计时测试。我唯一的选择是拨打第一手电话,但这不是正确的解决方法。并且即使在热身时,一个简单的 OKHttp 调用也有更少的开销。而且我什至没有使用 beta EventListener api 作为指标。
  • 谢谢布莱斯!如果要问的不是太多,也许您可​​以使用您在此处找到的所有详细信息来创建问题? github.com/rest-assured/rest-assured/issues
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-29
  • 2023-03-29
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多