14

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

我目前使用 Selenium RC 的 C# 驱动程序编写了一个相当大的测试套件。运行整个测试套件需要一个多小时才能完成。我通常不必运行整个套件,所以到目前为止这不是问题,但我希望能够更经常地做一些事情(即,作为自动构建的一部分)

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

我注意到 NUnit 2.5 测试版开始讨论与 pNUnit 并行运行测试,但我对这个项目还不够熟悉,无法确定这是否可行。

我正在考虑的另一个选择是将我的测试套件分成不同的库,这可以让我同时从每个库运行测试,但我想尽可能避免这种情况,因为我不相信这是拆分的正当理由测试套件。

4

3 回答 3

5

我正在做这件事,并发现Gallio最新可以并行驱动 mbUnit 测试。您可以将它们驱动到单个Selenium Grid集线器,该集线器可以有多个远程控制服务器进行侦听。

我正在使用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().

于 2009-03-04T16:49:35.427 回答
1

大约三年前,我编写了 PNUnit 作为 NUnit 的扩展,我很高兴看到它最终被集成到 NUnit 中。

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

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

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

因此,如果您对如何设置它有任何疑问(恐怕还不简单),请不要犹豫。

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

希望能帮助到你

于 2008-11-28T20:12:06.690 回答
0

我不知道没有答案是否算作答案,但我想说你已经研究了所有东西,你真的想出了两种可能的解决方案......

  • 测试套件并行运行测试
  • 拆分测试套件

我对其他任何事情都不知所措。

于 2008-09-18T20:02:49.270 回答