如何正确地对单页Web应用程序进行基准测试/压力测试

时间:2014-03-20 01:00:54

标签: apache knockout.js benchmarking single-page-application stress-testing

我在某种程度上熟悉基准测试/压力测试传统的Web应用程序,我发现开始估算它的最大负载相对容易。使用我熟悉的工具(Apache abApache JMeter)我可以粗略估计标准应用程序可以处理的服务器的请求/秒数。我可以提出用户故事,创建一个我想检查的页面列表,并单独对它们进行基准测试。在互联网上可以找到很多信息如何从像我这样的新手变成主人。

但在我看来,在对单页应用程序进行基准测试时,很多事情都有所不同。主要入口点是最昂贵的请求,因为用户加载了正常应用程序体验所需的大部分内容(或者至少在我的应用程序中是这样的)。导航到其他地方之后只是ajax请求,等待json,模板化。所以窗口加载的时间不再重要了。

要为此添加问题,我无法找到任何资源人们如何正确地做到这一点。

在我的特定情况下,我有一个用淘汰赛编写的SPA,并且坐在apache服务器上(很可能这是无关紧要的)。我想粗略估计特定服务器上的应用程序可以处理多少用户。我不是在寻找工具推荐(也很好),我正在寻找有经验的人分享他对基准测试过程的见解。

2 个答案:

答案 0 :(得分:0)

我建议您像测试任何其他Web应用程序一样测试此应用程序,如您所说 - 确定常见用例,为它们准备脚本,运行适当的混合并分析结果。

由于各种原因,Web应用程序可能会以多种不同的方式中断。你猜测第一页加载很重,剩下的只是小ajax。根据经验,我可以告诉你,这有时会产生误导 - 例如,你可以发现重页来自缓存而服务器并不努力,但是一个小的ajax响应需要大量的计算能力或长时间运行数据库查询或在代码中有一些锁定导致它破坏或加载缓慢 - 这就是我们进行负载测试的原因。

您可以使用任何负载测试工具执行此操作,理想情况下,可以使用许多动态值处理这些类型的脚本。我的个人偏好是RadView

的WebLOAD

答案 1 :(得分:0)

我正在处理类似的场景,第一页加载的SPA应用程序以及完成所有操作之后只需要其他html页面和/或Web服务调用来获取数据。

我的目标是对Web服务器和数据库服务器进行压力测试。

我的解决方案是只创建对这些html页面的请求(非常低的性能问题,IMO,因为它们是静态的,并且可以在浏览器中缓存很长时间)和Web服务调用请求。最大负载将来自通过Web服务调用请求进行数据/处理的请求。

使用fiddler之类的工具捕获所有html和Web服务调用请求,并使用任何负载测试工具(如JMeter)使用尽可能多的虚拟用户来运行这些请求,以便用您测试应用程序。