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

有没有人找到一种方法来运行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来隔离并行测试。 你需要测试看起来像这样:

 [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

希望能帮助到你

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

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

我不知道其他任何事情。