JMeter HTTP请求从文件发布正文

时间:2014-06-18 08:24:55

标签: testing jmeter performance-testing

我正在尝试通过JMeter发送HTTP请求。我创建了一个循环计数为25的线程组。我的上升时间为120,线程数设置为30.在线程组中,我有20个HTTP请求。关于JMeter如何运行这些请求,我有点困惑。线程组中的20个请求中的每一个都在单个线程中运行,并且线程组上的每个循环在不同的线程上并发运行吗?或者20个请求中的每个请求在可用时在不同的线程中运行。

我的另一个问题是,在每个循环中,我想改变通过HTTP请求发送的帖子数据的主体。是否可以通过文件传递post数据体,而不是将数据插入JMeter Body Data选项卡,如下所示:

enter image description here

然而,我想要定义某种变量,根据正在运行的线程组的迭代来选择一个文件,例如,如果它第二次循环遍历线程组,我想要调用test2.txt,如果第三次test3.txt等,这些文本文件将包含不同的帖子数据。任何人都可以告诉我,如果JMeter可以做到这一点,如果可以的话,我将如何做到这一点。

1 个答案:

答案 0 :(得分:9)

第1点 - JMeter并发

JMeter以1个线程开始,并按照渐变集生成更多线程。在你的情况下(30个线程和120秒加速)另外一个线程每4秒添加一次。每个线程执行20个请求,如果有另一个循环 - 重新开始,如果没有循环 - 线程关闭。为了控制负载和并发性,JMeter提供了两个选项:

  1. Synchronizing Timer - 暂停所有线程,直到达到指定的阈值,然后同时释放所有线程
  2. Constant Throughput Timer - 指定每分钟请求数的负载。
  3. 第2点 - 发送文件而非文字

    您可以使用__fileToString功能替换您的请求正文。如果要对其进行参数化,可以使用嵌套函数提供当前迭代 - 请参见下文。

    第3点 - 将迭代添加为参数

    JMeter提供了关于如何在每个循环中递增计数器的2个选项

    1. Counter配置元素 - 从指定值开始,每次调用时都会按指定值递增。
    2. __counter函数 - 从1开始,每次调用时递增1。可以是“每用户”或“全球”
    3. 有关上述和更多JMeter功能的全面信息,请参阅How to Use JMeter Functions帖子系列。