如何让Jmeter Http请求采样器预加载并在上传测试中重新上传文件?

时间:2016-04-01 14:57:21

标签: upload jmeter

在JMeter的Http Request采样器中,我可以为上传请求定义filePath,但是当我运行负载测试时,每个测试都会重复加载相同的文件。因为每次完成每个测试的时间比服务器返回响应所用的实际时间长,所以它从磁盘加载文件。

在测试之前,是否必须编写我的采样器以将文件预加载到内存中,并在可能的情况下重复使用该文件?

2 个答案:

答案 0 :(得分:0)

取决于你想要做什么。如果您给它一个硬编码路径,它将始终上传该文件。如果您尝试在上传端点上生成负载,只要此硬编码文件的大小与您期望的大致相同,那就应该没问题。

如果你想让JMeter上传一组文件,你将不得不变得有点花哨。我会将您要上传的文件的所有路径保存为CSV中的字符串。然后使用CSV Data Set将其保存到变量path。然后,不要将该路径硬编码到HTTP Request Sampler,而是给它${path}。循环测试n次(其中n是您放入CSV中的文件数),应该这样做。

答案 1 :(得分:0)

实际上,您可以使用BeanShell sampler预加载文件,并将其值存储在单个变量中一次。但问题是你不能在线程之间共享变量。因此,一旦读取并存储为变量,它只能在同一个线程中使用。

要在线程之间共享参数,可以使用属性,但不确定您是否可以对包含二进制文件的文件执行相同操作。

谈论常规变量(例如,cookies),以及它是如何完成的:

  1. 使用setUp thread从文件中读取变量。

  2. 将此值定义为属性。

  3. 使用所有HTTP采样器中存储在属性中的值。