有一段时间以来,我一直在调查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多个测试)。
答案 0 :(得分:7)
功能/集成测试需要更长时间才能运行,特别是因为它们在浏览器中运行。这意味着它们必须加载MVC的所有3层,然后在页面上执行任何操作时执行相同的操作。因此,每个操作都有可能进入数据库。与单元测试相比,这本质上是一项长期运行的任务。
测试首先在该页面上执行open
,然后等待加载的所有内容。因此,如果这需要很长时间,那么如果您的用户访问该页面可能需要很长时间。例如。大量的图片,未经宣传的JavaScript / CSS,下载时间不佳。
Selenium的那个页面说服务器是一个瓶颈,因为它暗示你正在同步运行测试,如果你转移到Selenium Grid,它可以并行运行它们以使测试套件更快完成。这并不意味着selenium服务器正在轮询以查看它应该做什么,而是Selenium Servers轮询Grid集线器以查看它是否仍然存在并显示它们仍处于活动状态。
测试运行缓慢的另一个原因是Selenium的基本语言是与DOM交互的JavaScript。 DOM会降低速度,特别是如果您的测试使用XPath作为定位器。 XPath + JavaScript + IE + Selenium ==痛苦,我们Selenium开发人员可以做更多的事情来微调它。好吧,那就是Selenium 2,它是alpha版本,可以从http://selenium.googlecode.com/下载。我一直致力于.NET实现,目前看到了巨大的速度提升。我有blogged关于它,因为这些变化令我震惊。我看到最多8次测试在同一时间运行Selenium 1运行1次测试
答案 1 :(得分:7)
您是在多窗口模式下使用IE和Selenium进行测试吗?这非常慢,您应该尝试使用-singlewindow
启动seleniumserver答案 2 :(得分:2)
您的默认执行速度是否可能过低?查看DefaultSelenium上的getSpeed()和setSpeed()方法。