1

我想加载测试页面并渲染 javascript。似乎有 3 类应用程序可以解决这个问题,而这三类应用程序都没有达到目标。

1) Jmeter, apachebench, tsung, Grinder, Iago 为什么它不起作用:它不渲染 javascript。这些是方便的工具,但它们不适用于此目的。

2) Watir, Selenium 这些工具非常棒,它们使用真实的浏览器并渲染 javascript / ajax,但是很可惜,它们主要是为功能测试而设计的,而不是性能测试。您可以创建自己的应用程序来使用这些东西进行负载测试,但是收集所有性能指标并汇总它们将是一件非常痛苦的事情。

如果只有前两种类型的 Web 性能测试的组合,那就太好了。

第三种选择,解决了这个问题,但不幸的是你必须为此付费。3) Web 负载测试服务 Keynote Load Pro、BrowserMob 等服务很棒,解决了使用真实浏览器和渲染 JavaScript 的问题。唯一的问题是,我不想在每次运行该死的负载测试时支付 300 美元(这有点夸张,但不是真的,这取决于你使用了多少虚拟用户)。

所以这个选项行不通,除非我想大出血。

没有测试工具可以解决这个问题吗?这似乎是一个巨大的漏洞,需要一种尚未解决的开源工具。商业公司在这个领域占据主导地位(以及那些想要聘请全职开发人员编写 selenium 性能测试框架的公司)。

4

2 回答 2

1

jmeter、ab、tsung 等的好处是它们可以在相对较短的时间内为您提供聚合指标,但它们无法执行 javascript。他们无法衡量创建 DOM 的速度。它们不会加载外部资源,例如图像、javascript、样式。它们适用于压力测试,但这里并非如此。

在测量 Web 性能时,您需要知道:

  • 你真正想测量什么?- domLoading, domInteractive,domContentLoaded或者可能来自Performance Timing Interface的其他内容,
  • 您想使用哪种统计方法?-p95 ,位数。平均不是最好的选择。
  • 什么时候?- 始终同时进行以使测试具有可比性,
  • 从哪个位置?- 您能做的最好的事情就是在您的生产环境附近生成专用服务器,
  • 你想对结果有多自信?- 选择样本数据大小,例如,如果您接受 3% 的误差幅度和 95% 的置信区间,则选择 1067。

要进行此类综合性能测量,您可以使用https://github.com/msn0/sweter。它测量和timeToFirstByte计时。它可以安排在同一时间运行测试。Sweter 可以将原始数据报告到 ElasticSearch、控制台、json 文件或您想要的任何地方。domInteractivedomComplete

不同的主题是真实用户测量。已经有很好的工具,例如NewRelic

于 2015-04-16T09:36:42.643 回答
0

好吧,您还没有提到您真正想要衡量的指标。但我认为您可以使用两个简单的工具来测试服务器端和浏览器的性能。

  1. PhantomJS 和 HAR 文件:PhantomJS 是一个带有 Javascript API 的 webkit 无头浏览器。您可以使用 Javascript 编写脚本来执行几乎所有操作(包括 javascript 渲染)。使用它来生成 HAR 文件,以便您可以分析所有请求中的性能瓶颈。

  2. Navigation Timing API:现代浏览器支持导航计时数据,它为您提供有关浏览器渲染时间的详细信息,包括所有重要的指标,如 domLoading、domInteractive 等。

于 2015-12-14T05:18:55.247 回答