Selenium Grid Parallel Test(C#)

前段时间由于项目中用到了Selenium Grid Test,只是(parallel)并行测试却一直没有做成功.
昨天查了一个参数,感觉好像是并行了,但是testcase并未全部通过,感觉可能
还是不太对,今天又查了些资料,自己手写了一个,终于成功.

关键词: Selenium,Selenium Grid,Gallio,Parallel

参考链接:
http://seleniumhq.org/docs/05_selenium_rc.html#c
http://code.google.com/p/design-of-selenium-tests-for-asp-net/
http://blog.csdn.net/Evelyn_Guan/article/details/6338293
http://www.seleniumwiki.com/software-testing/selenium-grid/installing-selenium-grid-with-mbunit-and-gallio/

上面给出了主要参考链接,当然还有很多其它的参考资料,这几个是对最后成功测试有直接指导作用的文章,列于此,仅供参考了.

环境搭建

本人使用的机器系统环境  
Windows XP Professional SP3  

环境工具软件  
1. IE6  
2. Java SDK  (官网可能会有Oracle的协议需要同意)  
   http://download.oracle.com/otn-pub/java/jdk/6u30-b12/jdk-6u30-windows-i586.exe  
3. Apache Ant  
   http://apache.mirrors.hoobly.com//ant/binaries/apache-ant-1.8.2-bin.zip  
3. Selenium Grid  
   http://release.seleniumhq.org/selenium-grid/selenium-grid-1.0.8-bin.zip  
4. Gallio  
   http://mb-unit.googlecode.com/files/GallioBundle-3.3.458.0.zip  
由于有些地址可能会无法访问,我给出我的华为网盘的外链,不需要注册即可直接下载.  
http://dl.dbank.com/c0o3fmsxft  
  apache-ant-1.8.2-bin.zip  
  selenium-grid-1.0.8-bin.zip  
  jdk-6u30-windows-i586.exe  
  GallioBundle-3.3.458.0-Setup-x86.msi  


Java环境  
jdk-6u30-windows-i586.exe  
安装的时候需要记住你安装的路径,因为还需要配置环境变量的  
比较旧的版本,还要求安装的路径不能含有空格  
配置java环境变量  
JAVA_HOME = D:\Program Files\Java\jdk1.6.0_30  
CLASSPATH = ;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar  
在环境变量PATH的值的最后加上 ;%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin  

Apache Ant  
解压Apache Ant到本地的任意路径,配置环境变量  
在环境变量PATH最后加上 ;D:\Program Files\selenium\apache-ant-1.8.2\bin  

然后重启计算机  
登录后,验证java与ant环境变量是否生效  
打开系统命令行cmd 输入 java -version  
回车后,系统会显示机器上安装的java的版本相关的信息,若没有,则可能是配置的路径不正确,  
请核对后,重新配置,并重启机器  
在cmd下输入 ant -version  
回车后会显示ant的版本相关信息.  

解压Selenium Grid到任意路径 如: D:\Program Files\selenium\selenium-grid-1.0.8  
编译Selenium  
在cmd下输入 cd D:\Program Files\selenium\selenium-grid-1.0.8  
在cmd下输入 ant sanity-check  
回车,最后若显示BUILD SUCCESSFUL,则Selenium Grid则配置成功  

启动selenium grid hub  
在cmd下输入 cd D:\Program Files\selenium\selenium-grid-1.0.8  
在cmd下输入 ant launch-hub  
这里会默认使用4444作为hub的端口,因此若要使用其它端口,需要带其它参数,可自已找些资料解决这个问题  

启动selenium remote control  
在cmd下输入 cd D:\Program Files\selenium\selenium-grid-1.0.8  
在cmd下输入 ant launch-remote-control -Dhost=localhost -Dport=5555 -DhubURL="http://localhost:4444" -Denvironment="*iexplore"  

打开IE,然后在地址栏输入http://localhost:4444/console  
若能看到已经打开的5555端口,至此,自动化测试环境的搭建就完成了.  
当testcase连接上selenium grid hub,发送请求时,hub会将请求分配给对应浏览器的remote control处理.  

代码实例 C#

在这个单元,提几个注意点,其它的看代码吧,我有给出我的代码工程链接,自己下载研究吧.  
引用Gallio,MbUnit  
代码中需要加using MbUnit.Framework;  
在AssemblyInfo.cs加上如下代码  
[assembly: DegreeOfParallelism(2)]  
[assembly: Parallelizable(TestScope.All)]  
若要单实例测试,则将上面的[assembly: DegreeOfParallelism(2)]改为[assembly: DegreeOfParallelism(1)]即可  

若要并行则[assembly: DegreeOfParallelism(2)] 括号中的数值表示用多少线程来执行请求,也就是我们的并行度  
只要数字大于1即可  
另外还需要在每个测试类的[TestFixture] 下面加上[Parallelizable]  

给出代码链接: http://dl.dbank.com/c0awfvxwlv  
由于本人不是做C#开发的,写得有些粗浅了,关键是要能用,能达到我们测试的目的.  

Gallio驱动脚本

  在cmd下输入d:
在cmd下输入cd D:\Program Files\Gallio\bin (Gallio安装路径)
在cmd下输入Gallio.Echo.exe /r:IsolatedProcess /rd:E:\wswork\code\vs2008\MyTest1\bin\Debug\reports E:\wswork\code\vs2008\MyTest1\bin\Debug\MyTest1.dll /rt:Html /rnf:FareRule-{0}-{1}

现在还有一个遗留的问题:  
对于奇数个线程的情况,会出现有时使用偶数个,有时使用奇数个的现象  

另外若运行后有错误,当再次运行时,建议重启hub与remote control,防止出现其它不可预知的现象.  

若您在使用上述方案时,有bug,欢迎一起交流.