10

一段时间以来,我一直在研究 Selenium RC,以便对我的 Web 应用程序进行功能测试。我现在发现了一种非常有效的测试策略,以至于我不想离开 Selenium RC(在花了数周时间试图找出一种验证 ASP.NET 验证控件的好方法之后)。

但是现在我的 Selenium RC 冒险正在从 POC 转变为我实际使用的东西,我遇到了一个问题。它非常缓慢。执行加载页面、填写某些字段并单击按钮的单个测试需要几秒钟的时间才能执行。当它执行时,我可以很容易地看到每个单独的字段一次填写一个。在 Firefox 中使用 Selenium IDE 并没有那么慢。

我找到了这个页面,它清楚地表明 Selenium RC 很慢http://selenium-grid.seleniumhq.org/how_it_works.html

但这是为什么呢?是因为浏览器正在轮询 selenium 服务器吗?如果是这样,这个轮询间隔可以不修改吗?还是有别的原因。我不习惯远程调用需要很长时间才能执行。

执行几个测试需要这么长时间,这太可怕了。与为单个网页运行 10 次测试相比,我可以更快地执行整个演示文稿 (MVP)、业务和数据库层测试套件(500 多个测试)。

4

3 回答 3

7

您是否在多窗口模式下使用 IE 和 Selenium 进行测试?这非常慢,您应该尝试使用 -singlewindow 启动 seleniumserver

于 2010-09-02T13:05:14.953 回答
7

功能/集成测试将需要更长的时间来运行,特别是因为它们是在浏览器中运行的。这意味着它们必须加载 MVC 的所有 3 层,然后在页面上执行任何操作时执行相同的操作。所以每一个动作都有可能进入数据库。与单元测试相比,这本质上是一项长期运行的任务。

测试首先open在该页面上执行,然后等待所有内容加载。因此,如果这需要很长时间,那么如果您的用户要访问该页面,他们可能需要很长时间。例如,大量图像、未缩小的 JavaScript/CSS、下载过期时间不佳。

Selenium 的那个页面说服务器是一个瓶颈,因为它意味着您正在同步运行测试,如果您迁移到 Selenium Grid,它可以并行运行它们以使测试套件更快地完成。这并不是说 selenium 服务器正在轮询以查看它应该做什么,而是 Selenium 服务器轮询 Grid hub 以查看它是否仍然存在并显示它们仍然存在。

测试运行缓慢的另一个原因是 Selenium 的基础语言是与 DOM 交互的 JavaScript。DOM 会大大降低速度,尤其是在您的测试使用 XPath 作为定位器的情况下。XPath + JavaScript + IE + Selenium == 很痛苦,我们 Selenium 开发人员无法做更多的微调。好吧,这将是 Selenium 2,它是 alpha 版本,可以从http://selenium.googlecode.com/下载。我一直致力于 .NET 实现,目前看到了巨大的速度改进。我写了博客,因为这些变化让我震惊。我看到在使用 Selenium 1 运行 1 个测试的同时运行多达 8 个测试

于 2010-03-01T09:43:02.370 回答
2

您的默认执行速度是否可能太低?查看 DefaultSelenium 上的 getSpeed() 和 setSpeed() 方法。

于 2010-03-19T03:43:13.873 回答