【问题标题】:The JMeter script does not work correctlyJMeter 脚本无法正常工作
【发布时间】:2019-10-30 09:31:57
【问题描述】:

场景:授权 PM 在门户网站 XXXX 上创建任务。他/她填写表格并将文件 (ZIP) 上传到门户网站。

用JMeter实现上述场景的步骤:

  • 第1步:2次上传上述文件的请求
  • 第 2 步:POST 请求,其中包含有关已填写字段的信息
  • 第 3 步:请求上传文件(在正文和参数中没有关于此文件的任何信息)
  • 第四步:请求获取一个新创建的任务(对这个请求的响应应该包含脚本保存的任务信息)。 使用 JMETER 进行的上述操作应该会导致创建一个新任务,但事实上,什么都不会发生。 手动执行上述步骤时,一切正常 - 一个新任务被创建并显示在浏览器中。

注意:对上述 JMeter 生成的请求的响应不包含任何错误信息。手动和 JMeter 发送的文件上传请求的响应是相同的。手动和 JMeter 发送的 POST 请求仅在 ID 变量上有所不同。唯一的区别在于用于上传文件的第 3 步请求(不包含有关上传文件的任何信息或可变参数)。最终请求不包含有关我们尝试使用 JMeter 创建的新任务的信息。 请求已参数化,添加了缺少的 cookie。 你能告诉我这种行为的原因吗? 提前感谢您的帮助????

文件上传请求被记录为 GET:

我已将数据添加到文件上传部分:

该文件位于 bin 文件夹中。

另一个上传文件的请求是 POST 请求:

开发人员说请求只包含文件数据,其正文对于所有用户、日期/时间等都应该相同。但我不确定它的编码。

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    文件上传数据只能通过 POST 请求发送;检查 cookie 和标头

    【讨论】:

      【解决方案2】:

      如果您发现来自 JMeter 的请求和真实浏览器的响应之间存在差异,唯一的原因是请求不一样,因此我建议您使用 View Results Tree 侦听器和您的 browser developer tools(或外部嗅探器) WiresharkFiddler 之类的工具并比较请求和响应。

      如果您发送相同的请求(除了需要correlated 的任何动态数据),您应该会收到相同的响应,无论来源如何:浏览器、JMeter、curl 等程序

      注意您的“第 3 步”,因为要上传文件,您需要在 HTTP Request 的“文件上传”选项卡下提供此文件位置:

      如果您正在使用HTTP(S) Test Script Recorder 构建测试计划,请确保使用have the file you're uploading in "bin" folder of your JMeter installation during recording,并且在回放期间,只有这样 JMeter 才能正确捕获请求。

      【讨论】:

      • 上传文件的请求记录为GET请求,参数file=Test.zip
      • 在Fiddler中,请求也显示为Get
      • 没有意义,HTTP GET请求只能检索数据,URL中添加了任何参数,我认为您不能将文件正文放在那里
      • 通过将文件上传数据添加到 POST 请求解决的问题
      【解决方案3】:

      尝试将文件上传数据添加到 POST 请求中

      【讨论】:

      • 文件上传数据只能通过POST请求发送;检查 cookie 和标头
      猜你喜欢
      • 2014-12-07
      • 2015-04-04
      • 2017-04-08
      • 1970-01-01
      • 2015-07-27
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多