我们正在评估如何在single-page application (SPA)上测试性能,该性能严重依赖于JavaScript和动态内容(通过Ajax更新)。
热门的负载测试工具(如Apache JMeter或Gatling)可以通过发送HTTP请求,通过很少的硬件生成大量负载。但他们不处理任何Javascript代码。
我们希望衡量客户所感知的性能,即最终用户坐在浏览器前面所感知的(包括所有渲染和JavaScript开销)。
我们有以下备选方案:
使用Selenium Grid在多台计算机上同时运行测试脚本。每个实例都将在运行时收集的延迟数据提交到中央存储库。
与上面类似,只是启动了一个Selenium脚本实例。然后我们将JMeter / Gatling在后台产生重负荷。
根本不要使用Selenium。在使用JMeter / Gatling运行负载测试时,使用Firebug,YSlow等工具手动检查页面的行为。
每种方法都有其优点和缺点。在(1)我能够创建最“逼真”的负载,但它不能扩展,(2)通过JMeter / Gatling扩展,但我必须确保他们创建的负载与实际应用程序没有太大偏差,(3)是最容易设置的,但它显然很耗时,因为它不是自动化的。
到目前为止,我找不到任何关于这个主题的工具,框架甚至是一套指导原则,所以我想从SO的专家那里了解到:他们在这种类型的测试中使用了什么样的方法? / p>
This entry on the Selenium Grid FAQ表示*“使用真实浏览器进行性能/负载测试是一个非常糟糕的主意,因为扩展负载很困难/昂贵且实际负载非常不一致......”。我只能认为它们是指“后端性能/负载测试”。否则,如果我对最终用户的表现感兴趣,还有什么替代方案?
答案 0 :(得分:6)
查看JMeter WebDriver http://jmeter-plugins.org/wiki/WebDriverTutorial/。您可以定义一个与负载测试并行的方法,以便衡量服务器负载时客户端感知的性能。
从他们的网站:
Web Driver Sampler可在浏览器(客户端)上自动执行和收集性能指标。很大一部分 到目前为止,性能测试一直在服务器端 的东西。但是,随着技术的进步,HTML5,JS和CSS 改进,越来越多的逻辑和行为被推倒 给客户。这增加了整体感知的表现 website / webapp,但此指标在JMeter中不可用。事情 添加到整个浏览器执行时间可能包括:
客户端Javascript执行 - 例如。 AJAX,JS模板CSS 变换 - 例如。 3D矩阵变换,动画第三方插件 - 例如。 Facebook喜欢,双击广告,网站分析等所有这些 事情增加了整个浏览器的执行时间和这个项目 旨在衡量完成渲染所需的时间 内容。