我想使用研磨机对基于Apache Wicket的系统进行压力测试。所以我所做的是,我使用研磨机的TCP代理工具在我的应用程序中记录测试会话,然后将生成的测试脚本提供给Grinder对系统进行压力测试;但我们发现测试没有成功进行。
经过大量的调整和调试,我们发现问题出在检票口的 URL 生成系统中,它将页面版本号混合到其 URL 中。
因此,我搜索并找到了从URL中删除该页面版本号的解决方案(就像这样),并使用了它们,它们工作并从浏览器中使用的URL中删除了这些版本号。但话又说回来,测试没有奏效。
所以我检查了更多,发现即使 URL 现在很干净,表单的 action 属性仍然使用与页面版本号混合的 URL,如下所示:./?4-1.[wicket-path of the form]
那么,是否也可以从表单URL中删除这些版本号呢?如果没有,有没有其他方法可以克服这个问题并能够对检票口 Web 应用程序进行压力测试?
提前致谢
我没有使用研磨机,但是我已经使用JMeter Proxy成功地对我的检票口应用程序进行了负载测试;没有改变Wicket的默认版本机制。
以下是 JMeter 分步链接供您参考:
https://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf
基本上,我所做的只是运行代理服务器来接受来自浏览器的 Web 请求以捕获测试场景。收集完样本后,将目标主机 URL 更改为要指向的任何服务器(本地主机除外)。
另外,还有另一个负载测试工具BlazeMeter(与JMeter兼容)。您可以添加 chrome 浏览器插件以便快速理解。
此外,您可能需要考虑将包挂载到"更干净"URL 的各个 URL。这样,您就可以为同一包中的页面生成一组已知的 URL(例如,报告包中所有报告页面的/reports)。
希望这有帮助!
-米希尔。
您不应该忽略/删除 url 中的 pageId。如果您删除它们,那么您将请求页面的全新实例,即您将丢失原始页面的任何状态。
录制时不使用href
,您需要将属性集(org.apache.wicket.settings.DebugSettings#setComponentPathAttributeName(String)
由您!
所以研磨机/JMeter/加特林/...应该跟踪此特殊属性而不是"href",然后使用 CSS/XSLT 选择器找到要单击的链接。
附言如果你不怕写一些Scala代码,那么你可以看看 https://github.com/vanillasource/wicket-gatling。