我试图找出如何最好地跟踪和趋势发布之间的端到端性能。从头到尾,我的意思是,客户通过浏览器访问此应用程序的体验是什么?这包括下载时间,dom渲染,javascript渲染等。

目前,我正在使用Jmeter运行负载测试,这对于证明应用程序和数据库容量非常有用。不幸的是,Jmeter将永远不允许我显示用户体验的完整图片。 Jmeter不是浏览器,因此永远不会模拟javascript和dom渲染的影响。 IE:如果到第一个字节的时间为100毫秒,但浏览器需要10秒才能下载资产并呈现dom,则我们会遇到问题。

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

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

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


硒的问题是1.我不确定它是否是为此设计的,并且2.似乎很难检测到DOM准备就绪或javascript渲染。

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

最佳答案

我认为您有很好的目标,但我会分解目标:


衡量DOM渲染,javascript渲染等并不是“客户端通过浏览器访问此应用程序的体验”的真正组成部分,因为您的客户端通常不知道您在“渲染dom”或“运行javasript”,而他们并不知道关心。但是它们是我要在每次提交的更改后解决的问题,而不仅仅是发布到发布,因为如果这样的测试不能一直运行,则很难将降级追溯到特定的更改。因此,我将其放在构建级别上进行持续集成。见一个很好的讨论here
然后,您可能想知道服务器端性能是相同还是差(或更优)。为此,JMeter是理想的。这样的测试可以按计划进行(例如每晚或每次发布),并且可以使用例如Jenkins的JMeter插件自动进行。如果服务器端性能变得更差,那么您实际上不需要进行端到端测试,因为您已经知道会发生什么。
但是,如果服务器运行良好,那么使用真正的浏览器进行的“最终用户体验”测试就具有真正的价值,因此Selenium实际上非常适合执行此操作,并且因为它可以与任何测试框架(junit,nunit等)集成在一起。 ),它也适合自动化过程,并且可以生成一些报告,包括持续时间(例如,JUnit具有TestWatcher,允许您为每个测试添加一致的持续时间度量)。
在完成所有这些自动化操作之后,我还将在同一台服务器上同时运行JMeter性能测试的同时,进行“真实的最终用户体验”测试:让真正的人在负载下运行该应用程序。因为与自动化不同,人是不可预测的,因此对发现错误很有用。

关于performance - 如何跟踪和趋势端到端性能(客户体验),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40390200/

10-09 21:38