Jmeter 自动发送请求并保存响应

Jmeter 自动发送请求并保存响应,jmeter,postman,fiddler,charles-proxy,burp,Jmeter,Postman,Fiddler,Charles Proxy,Burp,有一个我想点击并保存响应的URL。URL id需要每次递增并保存响应。例如— 首次获取请求-?Id=1 第一反应-一 第二个请求-?Id=2 第二个答复——两个 等等 我想每次用递增的id点击请求并保存响应 我曾尝试使用fiddler,但无法确定如何增加id和保存响应 备注-我必须在JMeter中点击约60000次,您需要单击Ctrl+0和Ctrl+1来创建、线程组和 在线程组中,将所需的点击数放入线程数(用户) 在HTTP请求中,放入服务器名称或IPwww.google.com和路径/getd

有一个我想点击并保存响应的URL。URL id需要每次递增并保存响应。例如—

首次获取请求-?Id=1

第一反应-一

第二个请求-?Id=2

第二个答复——两个

等等

我想每次用递增的id点击请求并保存响应

我曾尝试使用fiddler,但无法确定如何增加id和保存响应


备注-我必须在JMeter中点击约60000次,您需要单击Ctrl+0和Ctrl+1来创建、线程组和

在线程组中,将所需的点击数放入
线程数(用户)

在HTTP请求中,放入
服务器名称或IP
www.google.com和
路径
/getdata/?Id=${uuuu threadNum}

将创建从线程1到命中数的递增数

对于少量的点击或调试,您可以通过在测试计划/线程组级别中单击Ctrl+9添加到查看请求/响应中

要保存响应,请使用后处理器,尤其是通过单击Ctrl+2在HTTP请求下面添加响应

允许用户使用Perl类型的正则表达式从服务器响应中提取值。作为后处理器,该元素将在其作用域中的每个示例请求之后执行,应用正则表达式,提取请求的值,生成模板字符串,并将结果存储到给定的变量名中

导入以注意,对于,您需要使用非GUI模式,这意味着使用命令行调用jmeter,如
jmeter-n-tmytest.jmx

您将使用命令行模式(称为非GUI模式)为负载测试运行它。 不要使用GUI模式运行负载测试


要将所有响应保存到一个文件,请参阅,或者如果要按线程/用户保存文件,可以添加

,请查找下面针对您的场景的快照

首先,转到用户属性并输入“sample\u variables=ID,Response\u File\u Name”或您为变量选择的任何名称。重新启动jmeter。 创建以下计划:-

  • CSV数据集配置具有增量值和响应文件名
  • HTTP请求将使用${ID}
  • 将响应保存到文件将使用${response\u file\u Name}

  • 希望这会有所帮助

    既然提到了“Postman”标签,我可以帮助您在Postman中实现这一点。 Postman有一个很好的特性,就是使用“变量”

    您可以使用环境变量或全局变量

    在他们的文档中阅读更多关于这些的信息:

    您可以使用全局变量,如“counter”,并将其设置为1/任何您想要的起点。 然后您可以修改您的请求,如下所示:
    http://google.com/getdata/?Id={{iteration}}

    现在,在请求的测试脚本中,您可以编写以下脚本

    let i=parseInt(pm.globals.get('iteration'))+1;
    pm.globals.set('迭代',i);
    

    此外,要访问响应,您可以在测试脚本中使用以下命令:
    console.log(pm.response);//根据您的需要使用pm.response

    将请求保存在集合中。 现在加载邮递员的跑步者并选择集合。 现在,您可以将迭代计数设置为60000,然后点击run


    记住,繁重的迭代将导致性能下降

    我可以通过命令行来实现这一点,使用一个while循环,并将主体结果存储在标准输出文件中。它看起来像这样:

    for i in {1..600000}; do curl "http://google.com/getdata/?id=$i" > body-result-id-$i; done
    
    我无法测试上面的线路,因为我现在无法访问控制台,但我认为它应该可以工作

    小提琴手:

    打开脚本编辑器(Control+r),然后在OnBeforeResponse中添加以下代码

     static function OnBeforeResponse(oSession: Session) {
            if(oSession.oRequest["X-SAVE-ME"] != "")
            {
                oSession.SaveResponseBody("C:\\tempfiddler\\" + oSession.SuggestedFilename);
            }
    
        }
    

    转到“Composer”选项卡并将标题X-SAVE-ME包含在任意值中,在URL中,将您的ID替换为#(如下所示:)fiddler现在将在执行之前请求ID的起始值和结束值

    在Burp中,您可以使用入侵者工具执行此操作。首先,在Burp中捕获一个示例请求。如果您不确定如何执行此操作,请查阅文档

    然后右键单击请求并选择“发送到入侵者”

    在入侵者内的“位置”选项卡中,首先单击“清除”,然后选择要更改的部分,然后单击“添加”

    在有效载荷选项卡中,选择有效载荷类型为“数字”,并配置范围

    单击“开始攻击”


    有关更多信息,请参阅。

    另一种解决方案是可以在jmeter中使用计数器。您可以从下面的路径中找到 线程组>配置元素>计数器

  • 根据需要配置计数器
  • 给出计数器的参考名称i
  • 在请求中使用变量
  • 了解更多信息


    您计划使用哪种脚本语言?您能说明如何保存响应吗?我收到一个错误,“请求没有任何测试”,这不是错误。运行程序显示您尚未设置任何测试。但是,如果您在请求中写入了console.log,则返回1)。启动邮递员控制台(查看>邮递员控制台)2)。现在使用runner运行集合。您将在控制台中看到您的响应。问题是它将{{iteration}}显示为未解析变量,当前环境中未定义变量oh,您是否设置了环境,然后将变量“iteration”放入其中?当您使用runner时,您需要从下拉列表中选择“环境”-它就在左侧迭代框的上方。谢谢您的回复。我无法理解保存响应的过程。你能详细说明一下吗?@5添加了更多关于保存回复的详细信息