【问题标题】:Load Testing of MEAN applicationsMEAN 应用程序的负载测试
【发布时间】:2015-02-08 20:28:27
【问题描述】:

我目前正在使用MEAN stack 编写应用程序,并且刚刚将第一个版本部署到服务器。该应用程序包含一个static HTML file(和CSS 以及另外一些图像)和一大堆JavaScript 文件。加载页面时会执行很多 JS,包括从Angular 应用程序到NodeJS 服务器的几个请求。

到目前为止,我已经尝试了几种负载测试工具(Apache BenchmarkJMeterloadtest),但它们仅针对服务static HTML file 测试服务器。我需要一个至少可以运行 JavaScript 的 init 部分的工具(或上述工具的选项)。我知道这至少需要一些小型浏览器模拟或任何其他方法来测试运行 html 文件的 JS。任何正确方向的指针将不胜感激!

【问题讨论】:

  • JMeter 应该足够了。您可以将 JMeter 配置为并发请求页面、加载嵌入式资源并调用您的 API。
  • @DrewR 感谢您的回答,只有一个问题:我对 JMeter 的理解是,它只获取 html 文件(以及附加到它的所有内容,如 JS 文件)。如何配置它以运行 JS 代码?还是您的意思是我必须手动指定我的 JS 代码将在 JMeter 中执行的所有请求?
  • 是的,您需要在 JMeter 中制作将由您的 JS 执行的请求。否则,您可能想要一个可以模拟浏览器会话(无头浏览器)的端到端测试框架

标签: javascript angularjs node.js load-testing mean-stack


【解决方案1】:

我正在使用WebLOAD 测试一个类似的应用程序(AngularJS 前端,它使用 Web 服务与后端通信)。

在记录场景时,脚本将包含检索静态资源(就像您已经完成的那样),但还将包含发送到后端(应用程序中的 NodeJS)的动态 http 请求。

虽然实际执行的是 JavaScript 代码,但会记录并执行影响服务器的请求。

从服务器的角度来看,这才是最重要的。服务器不“知道”(或关心)客户端在做什么——它不会影响它的工作负载,因此在负载测试中进行模拟并不重要。在负载测试中使用完整(或无头)浏览器(例如 Selenium)通常是一种过度杀伤力——它不能很好地扩展,需要大量资源,因此效率不高。

【讨论】:

  • 感谢您的意见。到目前为止,您使用(无头)浏览器进行负载测试的想法正是阻止我朝这个方向发展的原因。此外,我网站上的 HTML 相当复杂,因为它有一张大地图。我正在从各种来源检索(地理)信息,并且只有一些请求针对我的 NodeJS 安装进行测试。如果我用大量(无头)浏览器测试这个场景,我也会测试其他来源和客户端渲染,这对我来说并不真正感兴趣。再次感谢您的输入,我会检查 WebLOAD。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多