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

时间:2015-01-29 16:36:51

标签: angularjs jmeter performance-testing

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

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

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

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

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

您可以尝试使用选项' Use as Monitor'对于您从测试中启动的请求。

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

但是,他们是性能杀手。另一种选择是使用收听者'保存对文件的响应'查看最终HTML是否已发送。它不应该给你理想的结果,但它可能有所帮助。

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

答案 3 :(得分:2)

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

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

(这是我的个人项目)