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

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

Has anyone found a way to run C# Selenium RC tests in parallel?

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

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

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

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

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


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

我正在使用来自 Gallio 的最新夜间数据来获取 ParallelizableAttribute 和 DegreeOfParallelismAttribute。

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

1
2
3
4
5
6
7
8
9
[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() 获取远程会话。


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

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

好吧,我们使用相同的套件在不同的 Linux 组合和 Windows 变体上运行测试,并且还结合了 Windows 服务器与 linux 客户端、Windows XP、Vista、然后是域控制器、域外等等上。我们使用相同的二进制文件,然后在几个盒子上启动了"代理"。

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

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

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

希望对你有帮助


我不知道没有答案是否算作答案,但我想说您已经研究了所有内容,并且您确实想出了两种可能的解决方案...

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

我对其他任何事情都束手无策。


推荐阅读