0

我想使用磨床对基于 Apache Wicket 的系统进行压力测试。所以我所做的是我使用grinder的TCP代理工具在我的应用程序中记录了一个测试会话,然后将生成的测试脚本输入到grinder以对系统进行压力测试;但我们发现测试没有成功进行。

经过大量调整和调试,我们发现问题出在检票口的 URL 生成系统中,它将页面版本号混合到其 URL 中。

因此,我搜索并找到了从 URL 中删除该页面版本号的解决方案(像这样),并使用了它们,他们工作并从浏览器中使用的 URL 中删除了这些版本号。但话又说回来,测试没有奏效。

所以我检查了更多,发现即使 URL 现在是干净的,表单的 action 属性仍然使用与页面版本号混合的 URL,如下所示:./?4-1.[wicket-path of the form]

那么是否也可以从表单 URL 中删除这些版本号?如果没有,有没有其他方法可以克服这个问题并能够对 wicket Web 应用程序进行压力测试?

提前致谢

4

2 回答 2

0

您不应该从 url 中忽略/删除 pageId。如果您删除它们,那么您将请求一个全新的页面实例,即您将丢失原始页面的任何状态。

而不是href在录制时使用,您需要使用属性集(由您!)与org.apache.wicket.settings.DebugSettings#setComponentPathAttributeName(String).

所以 Grinder/JMeter/Gatling/... 应该跟踪这个特殊属性而不是“href”,然后使用 CSS/XSLT 选择器找到要单击的链接。

PS 如果你不怕写一些 Scala 代码,那么你可以看看https://github.com/vanillasource/wicket-gatling

于 2016-04-28T13:25:12.877 回答
0

我没有使用过grinder,但是我已经使用JMeter Proxy 成功地对我的wicket 应用程序进行了负载测试;无需更改 Wicket 的默认版本机制。

以下是 JMeter 分步链接供您参考:

https://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf

基本上,我所做的只是运行代理服务器来接受来自浏览器的 Web 请求以捕获测试场景。收集完样本后,将目标主机 url 更改为您想要指向的任何服务器(除了您的本地主机)。

或者,还有另一个负载测试工具 BlazeMeter(与 JMeter 兼容)。您可以添加 chrome 浏览器插件以便快速了解。

此外,您可能需要考虑将您的包安装到单独的 url 以获得“更清洁”的 url。这样,您就可以为同一包中的页面生成一组已知 url(例如,/reports 用于报告包中的所有报告页面)。

希望这可以帮助!

-米希尔。

于 2016-04-27T17:45:44.237 回答