【问题标题】:web performance testing that renders javascript呈现 javascript 的 Web 性能测试
【发布时间】:2012-10-15 01:33:54
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • @PMD UBIK-INGENIERIE 否决了?这是一个真正的问题。你至少能说出你为什么投反对票吗?
  • 不,我没有投反对票。我刚刚删除了 jmeter 作为标签,因为在我看来这不是 jmeter 问题

标签: performance selenium web performance-testing


【解决方案1】:

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

在衡量网络性能时,您需要了解:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-13
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多