我正在练习负载测试和试用JMeter。作为示例应用程序,我使用Web图尔斯。我记录了进行航班预订的步骤,为用户会话做了相关性,并添加了一些响应Assert,以确保从服务器获得正确的答案。When I replay the script, it seems to work fine.
但是当我进入应用程序并查看行程时,它是空的。So there is no booking done.
有一个类似的行为,当我试图激活错误浏览器在网络图尔斯管理页面(例如,将服务器模拟负载问题的概率设置为100%)。当我手动测试应用程序时,我得到了预期的错误(http503)。当我重放脚本时,每一步都以http200结束。我记录的另一个向应用程序添加用户的脚本工作正常。当我重放它时,用户被添加。
你知道我做错了什么吗?
2条答案
按热度按时间o8x7eapl1#
得到HTTP Status Code 200并不一定意味着您的测试正在做它应该做的事情。
我建议使用JMeter Assertion添加另一层通过/失败标准,特别是响应Assert,以检查服务器的响应是否包含预期值和/或不包含错误。
因此,首先确保您可以成功创建预订,然后使用浏览器找到它,因为如果您不能-这可能是测试系统的预期行为或功能缺陷。在这种情况下,从JMeter的Angular 来看,您无能为力。
如果您可以使用真实的浏览器创建预订,并使用Fiddler或Wireshark等嗅探工具比较来自JMeter和来自真实的浏览器的请求,则请求需要完全相同(除了需要关联的动态参数)。一旦您修改了JMeter配置,以发送与真实的浏览器相同的请求,您应该会获得相同的行为。
另外,它看起来像你已经记录了一些图像,这不是你应该做的事情,因为真实的浏览器下载图像,脚本,样式等使用并发线程池,在你的情况下,你得到他们的顺序,它产生完全不同的网络足迹。您应该删除这些请求并配置JMeter以使用HTTP请求队列获取嵌入的资源
ux6nzvsh2#
我用错误的方式关联了用户会话。变量名中有一个拼写错误。我似乎没有注意到这一点,因为我没有在每次迭代后清除cookie,而是使用了一个现有的cookie。在我添加了一个HTTP Cookie管理器配置后,我在每次迭代后清除了Cookie,我记录的脚本运行时出错。在修复错字后,脚本工作并进行了预订。谢谢你的帮忙。