有没有人找到并行运行C#Selenium RC测试的方法?

时间:2008-09-18 13:07:42

标签: c# selenium acceptance-testing selenium-grid pnunit

有没有人找到一种方法来运行Selenium RC / Selenium Grid测试,用C#并行编写?

我目前使用Selenium RC的C#驱动程序编写了一个相当大的测试套件。运行整个测试套件需要一个多小时才能完成。我通常不需要运行整个套件,所以到目前为止它还没有引起关注,但是我希望能够更频繁地进行操作(例如,作为自动构建的一部分)

我最近花了一些时间来讨论Selenium Grid项目,其目的主要是允许这些测试并行运行。不幸的是,似乎我正在使用的TestDriven.net插件连续运行测试(即,一个接一个)。我假设NUnit会以类似的方式执行测试,虽然我实际上没有测试过。

我注意到NUnit 2.5测试版开始讨论与pNUnit并行运行测试,但我还没有真正熟悉这个项目,以确定这是否可行。

我正在考虑的另一个选择是将我的测试套件分成不同的库,这样我就可以同时从每个库中运行测试,但是如果可能的话我想避免这样做,因为我不相信这是一个有效的理由分裂测试套件。

3 个答案:

答案 0 :(得分:5)

我正在研究这个问题并且发现Gallio最新可以并行驱动mbUnit测试。您可以针对单个Selenium Grid集线器驱动它们,该集线器可以监听多个远程控制服务器。

我正在使用latest nightly from Gallio获取ParallelizableAttributeDegreeOfParallelismAttribute

我注意到的一些事情是我不能依靠TestSetTestTeardown隔离并行测试。你需要测试看起来像这样:

[Test] public void Foo(){
  var s = new DefaultSelenium("http://grid", 4444, "*firefox",
                              "http://server-under-test");
  s.Start();
  s.Open("mypage.aspx");
  // Continue
  s.Stop();

}

使用[SetUp]属性启动Selenium会话导致测试无法从s.Start()获取远程会话。

答案 1 :(得分:1)

我差不多三年前写过PNUnit作为NUnit的扩展,我很高兴看到它最终被整合到NUnit中。

我们每天使用它来测试不同发行版和组合下的软件。举一个例子:我们有一个测试套件的重型测试(长测试),大约有210次测试。它们中的每一个都设置了一个服务器,并在命令行中运行客户端,运行多个操作(最多210个方案)。

好吧,我们使用相同的套件在不同的Linux组合和Windows变体上运行测试,还结合使用Windows服务器与Linux客户端,windows xp,vista,然后域控制器,域外等等。上。我们使用相同的二进制文件,然后在几个框中启动“代理”。

我们使用相同的平台:平衡负载测试负载 - >我的意思是,以更快的速度运行。同时运行多个组合,我认为更有趣:定义多客户端场景:两个客户端等待服务器启动,然后启动操作,彼此同步等等。我们还使用PNUnit进行负载测试(针对单个服务器的数百个盒子)。

所以,如果你有任何关于如何设置的问题(这还不简单,我很害怕),请不要犹豫。

我很久以前在DDJ上写了一篇关于它的文章:http://www.ddj.com/architect/193104810

希望有所帮助

答案 2 :(得分:0)

我不知道如果没有答案可以作为答案,但我会说你已经研究了一切,你真的想出了两个可能的解决方案......

  • Test Suite并行运行测试
  • 拆开测试套件

我对其他任何事情都感到茫然。