如何对 AngularJS Web 应用程序进行性能测试?

Posted

技术标签:

【中文标题】如何对 AngularJS Web 应用程序进行性能测试?【英文标题】:How to performance test an AngularJS Web Application? 【发布时间】:2015-03-28 23:36:00 【问题描述】:

我以前主要使用 JMeter 脚本在网站上进行性能测试。

然而,越来越多的项目是使用前端 MVC 构建的,例如 AngularJS,并且当前项目正在通过角度视图文件、REST 调用等加载其所有内容。 不幸的是,JMeter 不执行任何 javascript,因此我的负载测试仅在(400 毫秒)内返回了主页。 实际上,在浏览器中加载实际上需要几秒钟。当我检查响应数据时,由于 Angular,它还没有包含任何数据。

而不是调查网络流量并单独加载每个组件(例如 profile.html、notification.html、REST 调用等)。市场上是否有类似于执行 JMeter 脚本但考虑到由于 javascript 执行和加载外部资源的产品或我可以遵循的最佳案例?

(我不打算分析 javascript 执行时间。这仍然是为了测试背后的基础设施是否能够为 xyz 并发用户提供服务)

【问题讨论】:

【参考方案1】:

虽然 JMeter 无法执行客户端 JavaScript,但它可以通过 HTTP(S) Test Script Recorder 记录相关请求。记录后,您应该能够使用 JMeter 的 Transaction Controller 将所有独立请求合并为一个“聚合”

如果由于某些原因这种简单的方法对您不起作用,请查看How to Load Test AJAX/XHR Enabled Sites With JMeter 以获取更多选项和线索。

【讨论】:

【参考方案2】:

我使用 Chrome 开发工具在网络应用程序中进行此类性能测试。 我建议您阅读 Chrome 分析文档 (https://developer.chrome.com/devtools/docs/javascript-memory-profiling)。 goolge 文档中 Performance and Profiling 的所有部分都非常好!

【讨论】:

抱歉,这不是我想要的。这与分析脚本无关。【参考方案3】:

您可以尝试将“用作监视器”选项用于您从测试中触发的请求。

http://jmeter.apache.org/usermanual/build-monitor-test-plan.html

不过,它们是性能杀手。另一种选择是使用侦听器“将响应保存到文件”来查看是否传递了最终 HTML。它不应该给你理想的结果,但它可能会有所帮助。

如果你想跟踪单个用户的 XHR 性能,你可以尝试使用 Selenium 和 BrowserMob Proxy,但它不是在压力测试下,而是在功能测试下。

【讨论】:

【参考方案4】:

您可以尝试https://github.com/kidk/felt 它是为此特定目的而构建的。

它使用 PhantomJS/SlimerJS 为网站生成负载,因此您可以像在普通浏览器中一样获得所有 API/JS/CSS 和图像调用。它仍然是一个年轻的项目,但它可能是您正在寻找的解决方案。

(这是我的个人项目)

【讨论】:

以上是关于如何对 AngularJS Web 应用程序进行性能测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何为(Angularjs)Web 应用程序进行集成测试

如何利用angularjs打造一款简单web应用

AngularJS $http 对 Web 服务的请求需要 CORS

如何使用AngularJS对表单提交内容进行验证

会jQuery,该如何用AngularJS编程思想?

如何在 AngularJS 中对隔离范围指令进行单元测试