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