Java JMeter:对HTTP POST进行负载测试,然后执行HTTP GET
我正在评估我的传输库的性能,如果我得到以下方面的建议,将会很有帮助: 我使用Junit采样器执行以下操作: HTTP POST测试:我发送HTTP POST请求:这将导致DB写入。我必须对POST+DB_写入操作的所有参数(吞吐量、平均响应时间)进行全面评估。作为对这个POST请求的响应,我得到了一个唯一的id。因此,如果我发送了1000个成功的POST请求,我将拥有1000个唯一的id 现在我的问题是如何在下一个测试用例中使用这些唯一ID,对每个创建的唯一ID执行HTTP GET 我可以解析HTTPPOST响应并将唯一id写入文件,然后尝试将该文件用于HTTP GET测试。但问题是,如果我创建一个由10个不同线程组成的线程组,那么在文件写入时就会出现同步问题Java JMeter:对HTTP POST进行负载测试,然后执行HTTP GET,java,junit,jmeter,load-testing,Java,Junit,Jmeter,Load Testing,我正在评估我的传输库的性能,如果我得到以下方面的建议,将会很有帮助: 我使用Junit采样器执行以下操作: HTTP POST测试:我发送HTTP POST请求:这将导致DB写入。我必须对POST+DB_写入操作的所有参数(吞吐量、平均响应时间)进行全面评估。作为对这个POST请求的响应,我得到了一个唯一的id。因此,如果我发送了1000个成功的POST请求,我将拥有1000个唯一的id 现在我的问题是如何在下一个测试用例中使用这些唯一ID,对每个创建的唯一ID执行HTTP GET 我可以解析H
是否有任何后处理器可用于在文件系统中记录结果?同步不会有任何问题(它们由文件系统解决)。在每个线程(即POST)中,您都应该打开文件进行写入,并在其中添加一行新行。同样,不要担心同步,操作系统会处理它。同步不会有任何问题(它们由文件系统解决)。在每个线程(即POST)中,您都应该打开文件进行写入,并在其中添加一行新行。同样,不要担心同步问题,操作系统会处理它。对于我来说,您可以避免使用文件存储然后读取生成的id 逻辑如下:
如何为正则表达式提取器执行此操作,请参见下文:
${uuuu javaScript('${username}'+'UnicID')}
为每个用户/线程生成唯一变量,以避免多用户情况下的干扰;
似乎还可以使用函数代替${username}变量李>
使用
${uu V(${username}UnicID)}
构造返回以前保存的ID
线程组
线程数=X
循环计数=N
. . .
HTTP请求POST
检查返回代码//响应断言
extractUniqueID//正则表达式提取器(例如)
引用名称=${uuu javaScript('${username}'+'UnicID')}
正则表达式=。。。
模板=$1$
匹配号=1
默认值=未找到
如果控制器//仅在POST成功时执行GET
Condition=${JMeterThread.last_sample_ok}//您可以更改此条件以验证提取ID的变量不是空的
HTTP请求获取
param=${uu V(${username}UnicID)}
. . .
希望这会有所帮助。对于我来说,您可以避免使用文件来存储然后读取生成的id 逻辑如下:
如何为正则表达式提取器执行此操作,请参见下文:
${uuuu javaScript('${username}'+'UnicID')}
为每个用户/线程生成唯一变量,以避免多用户情况下的干扰;
似乎还可以使用函数代替${username}变量李>
使用
${uu V(${username}UnicID)}
构造返回以前保存的ID
线程组
线程数=X
循环计数=N
. . .
HTTP请求POST
检查返回代码//响应断言
extractUniqueID//正则表达式提取器(例如)
引用名称=${uuu javaScript('${username}'+'UnicID')}
正则表达式=。。。
模板=$1$
匹配号=1
默认值=未找到
如果控制器//仅在POST成功时执行GET
Condition=${JMeterThread.last_sample_ok}//您可以更改此条件以验证提取ID的变量不是空的
HTTP请求获取
param=${uu V(${username}UnicID)}
. . .
希望这会有所帮助。感谢您的详细回复。但还有一个问题,如果我理解正确的话,一个测试将执行HTTP POST,然后立即执行HTTP GET,对吗?但我想分别衡量一堆帖子和一堆帖子,还是我理解了你说的不对?@Prasanna。所有的统计数据和特征都将被测量为执行POST和GET请求,而不管您是在同一个线程组中还是在不同的线程组中逐个运行它们,甚至是在不同的jmx文件中。因此,如果您将侦听器附加到脚本以获取请求特征,那么您将分别看到POST和get的测量结果,即使它们逐个在同一线程组中执行,也会看到 Thread Group Number of Threads = X Loop Count = N . . . HTTP Request POST checkingReturnCode // Response Assertion extractUniqueID // Regular Expression Extractor (e.g.) Reference Name = ${__javaScript('${username}'+'UnicID')} Regular Expression = ... Template = $1$ Match No. = 1 Default Value = NOTFOUND IF Controller // execute GET only if POST was successful Condition = ${JMeterThread.last_sample_ok} // you may change this to verify that variable with extracted ID is not empty HTTP Request GET param = ${__V(${username}UnicID)} . . .