我正在练习负载测试并尝试 JMeter。作为示例应用程序,我使用 Web Tours。我记录了进行航班预订的步骤,对用户会话进行了关联,并添加了一些响应断言以确保我从服务器获得正确的答案。 当我重播脚本时,它似乎工作正常。
但是当我进入应用程序并查看行程时,它是空的。 所以没有完成预订。
当我尝试在 Web Tours 管理页面中激活错误行为时,存在类似的行为(例如,将模拟负载问题的服务器的概率设置为 100%)。当我手动测试应用程序时,我收到了预期的错误 (http 503)。当我重播该脚本时,每个步骤都以 http 200 结尾。我录制的另一个将用户添加到应用程序的脚本工作正常。当我重播时会添加用户。
你知道我做错了什么吗?
获取HTTP 状态代码 200并不一定意味着您的测试正在执行其应该执行的操作。
我建议使用JMeter Assertion添加另一层通过/失败标准,特别是Response Assertion来检查服务器的响应是否包含预期值和/或不包含错误。
因此,首先确保您可以成功创建预订,然后使用浏览器找到它,因为如果不能,则可能是被测系统的预期行为或存在功能缺陷。在这种情况下,从 JMeter 的角度来看您无能为力。
如果您可以使用真实浏览器创建预留,使用Fiddler或Wireshark等嗅探器工具比较源自 JMeter 和真实浏览器的请求,则请求需要完全相同(除了需要关联的动态参数之外)。一旦您修改 JMeter 配置以发送与真实浏览器相同的请求,您应该会得到相同的行为。
另外,看起来您已经记录了一些图像,这不是您应该做的事情,因为真正的浏览器使用并发线程池下载图像、脚本、样式等,在您的情况下,您会按顺序获取它们,并且它会生成完全不同的结果网络足迹。您应该删除这些请求并配置 JMeter 以使用HTTP 请求默认值获取嵌入资源
我以错误的方式关联用户会话。变量名有拼写错误。看来我没有注意到这一点,因为每次迭代后我都没有清除 cookie,并且我使用了现有的 cookie。添加 HTTP Cookie 管理器配置(每次迭代后清除 cookie)后,我录制的脚本运行时出错。修复拼写错误后,脚本即可运行并进行预订。感谢您的帮助。