Java 捕获Selenium自动化性能指标

Java 捕获Selenium自动化性能指标,java,javascript,performance,selenium,performance-testing,Java,Javascript,Performance,Selenium,Performance Testing,我正在尝试使用Selenium WebDriver捕获浏览器记录的客户端/服务器响应时间。我的selenium测试用例是用Java编写的。我不控制我正在测试的代码,我已经尝试了下面列出的各种解决方案,但没有一个100%满足我的要求 最后,我希望能够用启动和停止逻辑围绕测试步骤,并将浏览器记录的客户机/服务器响应时间保存到数据库中以供报告 如果我遗漏了一些明显的东西,请建议不同的方法 我尝试过的事情: 一,。使用启动和停止计时器逻辑手动环绕测试步骤 优点:最简单的解决方案,适用于页面加载和ajax

我正在尝试使用Selenium WebDriver捕获浏览器记录的客户端/服务器响应时间。我的selenium测试用例是用Java编写的。我不控制我正在测试的代码,我已经尝试了下面列出的各种解决方案,但没有一个100%满足我的要求

最后,我希望能够用启动和停止逻辑围绕测试步骤,并将浏览器记录的客户机/服务器响应时间保存到数据库中以供报告

如果我遗漏了一些明显的东西,请建议不同的方法

我尝试过的事情:

一,。使用启动和停止计时器逻辑手动环绕测试步骤

优点:最简单的解决方案,适用于页面加载和ajax调用。 缺点:无法捕获浏览器的真实响应时间,如果Selenium端的等待时间异常长,则会错误地报告数字。它还将用户输入等事务视为我不想要的事务的一部分。我不一定要控制我正在处理的页面对象,所以这不是一个容易解决的问题

二,。使用导航计时API

优点:这对页面加载非常有效 缺点:不适用于AJAX调用。AJAX调用只是添加到整个页面加载时间中,而getEvents调用在Firefox中不可用,我无法尝试手动计算AJAX时间

三,。使用浏览器移动

优点:可以围绕一个事务,而不仅仅是一个请求,并将其保存为HAB格式。 缺点:我对此寄予厚望,但这些数字不是从浏览器的角度报告的,因此与1一样不准确。创建代理服务器时也会产生安装开销,并且生成的HAB文件不会出现客户机/服务器响应时间故障

四,。Firefox和网络导出插件

优点:很好的自动化解决方案 缺点:导出功能为每个请求创建一个新文件,但不能将多个请求聚合到一个事务中。也无法指定文件名,因此无法尝试读入仅附加了时间戳的文件

五,。依赖于框架响应时间

优点:有效,至少表面上看起来准确。 缺点:不能跨框架工作,因此对于使用多个框架的繁忙生产站点,不能将其视为可扩展的解决方案

我没有尝试过的事情:

一,。Javascript注入

优点:也许我可以像回力棒插件一样将javascript注入到站点中,以测量响应时间

缺点:可能很难,我担心会因为我可能不知道或无法控制的页面事件而失去注射

二,。依赖HTTPWatch插件

优点:似乎做了我想做的事 缺点:没有Java插件,我不知道我是否准备创建一个基于COM的集成层,而我甚至不知道它是否适合我的需要。我确实喜欢启动/停止事务的能力,而不是单个请求

三,。YSlow、Google页面速度和WebGetTest

优点:无缝?
缺点:非初学者,因为我在防火墙后面,尽管我对它们如何附加到请求很感兴趣。

Firefox+NetExport-不要这样做,Firebug会减慢浏览器的速度,因此时间不可靠。WebGetTest是一个开放的解决方案,您可以在自己的网络中设置它,我建议您这样做,因为它是一个很棒的工具。然而,它可能很难与硒结合。在这一点上,我想我只是要做一个混合的方法。当我可以加载页面时,使用导航计时API,对于ajax调用,使用计时器逻辑,但扩展页面对象,以便可以清晰地分离实际用户输入和ajax调用。我是在回顾了我们的一个常用组件并看到了一个两秒钟的线程之后做出这个决定的!我本来希望有一个无缝的解决方案,但考虑到我无法控制的变量,很难想象会有这样的解决方案。除了混合方法,我最终重构了项目团队的页面对象,以清晰地分离用户输入和ajax调用。虽然比我希望的更具侵入性,但它工作得很好,记录的响应时间现在模拟了我在使用HTTPWatch时在浏览器中看到的情况。Selenium不用于性能测试。您需要使用JMeter或Microsoft的负载测试工具之类的工具。Selenium在负载测试方面非常差,因为它在浏览器中运行JavaScript代码来设置测试,从而降低了测试速度!