如何跟踪&趋势端到端绩效(客户体验)

时间:2016-11-02 21:33:23

标签: performance selenium selenium-webdriver jmeter performance-testing

我正在努力弄清楚如何最好地跟踪& 趋势版本之间的端到端性能。我的意思是,客户端通过浏览器访问此应用程序的体验是什么?这包括下载时间,dom渲染,javascript渲染等。

目前我正在使用Jmeter运行负载测试,这非常适合证明应用程序和数据库容量。不幸的是,Jmeter绝不允许我展示用户体验的全貌。 Jmeter不是浏览器,因此永远不会模拟javascript和dom渲染的影响。 IE:如果第一个字节的时间是100毫秒,但是浏览器需要10秒才能下载资产并渲染​​dom,我们就遇到了问题。

我需要一个工具来帮助我。我最初的想法是利用Selenium。它可以运行一组测试(登录,查看,创建)并以某种方式记录每个测试的时间。我们需要多次运行相同的场景,并且可能通过一组浏览器运行。这将在每次发布之前完成,并允许我向用户识别体验的变化。

例如,这就是我想要生成的内容:

action      |  v1.5  |  v1.6   |  v1.7
----------------------------------------
login       |  2.3s  |  3.1s  |   1.2s
create user |  2.9s  |  2.7s  |   1.5s

selenium的问题在于1.我不确定它是否是为此而设计的.2。似乎DOM就绪或javascript渲染很难被发现。

这是正确的道路吗?有没有人有任何指针?有没有我可以利用的工具?

2 个答案:

答案 0 :(得分:3)

我认为你有很好的目标,但我会将它们分开:

  • 测量DOM渲染,javascript渲染等并不是“通过浏览器访问此应用程序的客户体验”的一部分,因为您的客户通常不会意识到您正在“渲染dom”或“运行javasript” - 他们不在乎。但是,在每次提交的更改后,我们都希望解决这些问题,而不仅仅是发布版本,因为如果此类测试不是一直在运行,可能很难将降级追溯到特定的更改。所以我会把它放在构建级别的持续集成中。请参阅一个很好的讨论here

  • 然后您可能想知道服务器端性能是相同还是恶化(或更好)。因为JMeter是理想的。这样的测试可以按照某些时间表(例如,每晚或每次发布)进行,并且可以使用例如Jenkins的JMeter插件自动化。如果服务器端性能变差,您实际上并不需要端到端测试,因为您已经知道会发生什么。

  • 但是如果服务器运行良好,那么使用真实浏览器的“最终用户体验”测试具有真正的价值,因此Selenium实际上很适合这样做,因为它可以与任何测试框架集成(junit,nunit等),它也适用于自动化过程,并且可以生成一些报告,包括持续时间(例如JUnit有一个TestWatcher,允许您为每个测试添加一致的持续时间测量)。

  • 在完成所有这些自动化之后,我还会进行“真正的最终用户体验”测试,而JMeter性能测试同时针对同一台服务器运行:让一个真实的人体验应用程序加载。因为与自动化不同,人们是不可预测的,这有助于发现错误。

答案 1 :(得分:2)

  1. 关于“JMeter不是浏览器”。它实际上不是一个浏览器,但它可以像给定正确配置的浏览器一样,所以请确保:

    • HTTP Cookie Manager添加到您的测试计划中以表示浏览器Cookie并处理基于Cookie的身份验证
    • 添加HTTP Header Manager以发送相应的标头
    • 通过HTTP Request Defaults将HTTP请求采样器配置为

      • 检索所有嵌入资源
      • 使用大约5个并发线程的线程池来执行此操作
    • 添加HTTP Cache Manager代表浏览器缓存(即每次迭代每个虚拟用户仅检索一次的嵌入资源)
    • 如果您的应用程序是基于AJAX构建的 - 您还需要模仿AJAX requests with JMeter

    关于“渲染”,例如,您检测到您的应用程序在某个浏览器上呈现缓慢,并且您无法通过调整应用程序来执行任何操作。下一步是什么?您将开发补丁或向浏览器开发人员提出问题?我建议关注你可以控制的区域,并且浏览器渲染DOM不是你能做到的。

  2. 如果由于任何原因仍然需要这些客户端指标,您可以考虑使用WebDriver Sampler以及主JMeter负载测试,以便将真实的浏览器指标添加到最终报告中。您甚至可以使用Navigation API收集确切的时间并将其添加到负载测试报告中

    WebDriver Timings

    请参阅Using Selenium with JMeter's WebDriver Sampler开始使用。

  3. 在构建(和JMeter测试执行)之间跟踪应用程序性能有多种选择,即