我正在使用Jmeter进行负载测试,以确保大量并发用户能够从服务器请求图像文件。
我对图像的响应代码(.png)几乎没有疑问。
如果http状态代码为200,是否意味着图像从服务器完全提取到客户端?
响应代码为200,图片仍会在浏览器上加载?或者满载?
答案 0 :(得分:1)
HTTP是有状态协议,因此JMeter发送请求并且必须等待响应。如果您获得http状态代码200,通常意味着请求已成功完成,因此,如果您的请求格式正确,则应表示图像已完全传输。
但是在某些情况下,您可能会收到HTTP状态代码200,这意味着请求已在传输级别成功完成,但在响应正文中,您将收到错误而不是图像。这就是为什么我建议使用MD5Hex Assertion,如果图像与预期的图像不同,它将自动使您的HTTP请求采样器失败。
就是这样,如果下载的图像MD5校验和与提供的不一致,HTTP请求采样器将失败
有关在JMeter测试中有条件地设置通过/失败标准的详细信息,请参阅How to Use JMeter Assertions in Three Easy Steps文章
答案 1 :(得分:0)
以下是您的问题的答案:
如果HTTP状态代码为200
,是否表示图像已从服务器完全提取到客户端?
是。一旦收到HTTP响应代码,就意味着完成了从服务器到客户端的响应传输。请通过TCP / IP模型。服务器和客户端将数据分成小的TCP数据包,将所有数据组合起来形成数据(传输层的责任)。添加Wireshark工具的屏幕截图以突出显示此行为。
响应代码为200,图片仍会在浏览器上加载?或者满载?
客户端(JMeter)完全接收到图像。但是JMeter不会在GUI上呈现输出,而不仅仅是图像的任何HTTP响应。因此,任何HTTP请求的响应时间都不包括页面呈现时间,这是我们应该考虑的主要因素。如果JMeter告诉HTTP响应时间是x seconds
,那么从实际的最终用户角度来看,它是x+browser rendering time.
Wireshark图片: