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

How to performance test an AngularJS Web Application?

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

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

,它还不包含任何数据

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

执行和加载外部资源

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

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

虽然 JMeter 无法执行客户端 JavaScript 但它可以通过 HTTP(S) Test Script Recorder. Once recorded you should be able to combine all the standalone requests into one "aggregate" using JMeter's Transaction Controller

记录相关请求

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

您可以尝试将选项 'Use as Monitor' 用于您从测试中激发的请求。

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

不过,它们是性能杀手。另一种选择是使用监听器 'Save Responses to a File' 来查看结束 HTML 是否被传递。它不应该给你理想的结果,但它可能会有所帮助。

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

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

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

(这是我的个人项目)