Selenium Grid 个人理解

上一篇 / 下一篇  2009-04-23 14:17:55 / 个人分类:Selenium

估计现在用selenium 的人也越来越多了。 selenium rc用起来了之后。肯定会有一些想法。
第一,怎么能同时跑多个测试,就是所谓的并发。否则来100个case,一个一个的跑,几个小时才能跑完。那也太慢了吧。
第二,我需要在不同的环境/浏览器下运行同样的测试。看看我的程序会不会由于浏览器不同而有问题,最常见的就是需要同时在IE和Firefox 下面都测试。
51Testing软件测试网&Z6VLpXt#X-y:B
研究selenium的时候,肯定也看到过听说过 selenium grid 这个东西,肯定也看过介绍。从他的介绍上来看。刚好满足 上面的两个问题。然后很多人以为这下发了。只要把selnium grid 应用进来,那就好了。 然后就开始去研究怎么能够把grid配置起来,从而来满足上面两个需求。

C$`B]B0
然后我经常碰到别人问我两个问题。怎么配置grid,让grid来调用我的脚本,然后实现多环境下面的测试。。另外一个是 怎么配置grid,让grid来调用我一些脚本,让他们并行运行来加快速度。

SG!A5X#V)WT0[\*YV aO0
这里要说一下。这两个都是误区。。因为无论grid怎么配置,都不会自动来调用你的脚本,完成所谓的并行或者多环境测试。

W6Q)N!l5fX0
下面一点很重要:Grid 只是提供运行脚本的环境,无法决定脚本以什么样的形式去跑(并行的方式,或者多环境的方式)。脚本以什么样的形式跑,由脚本本身和脚本的runner (一般用junit或者TestNG)的配置所决定.
51Testing软件测试网*h9gWugv%F!u0x
然后我们分别来说说并行和多环境的是怎么实现的。

*j(F"y;g:` Wu0
第一,并行。并行很简单。。脚本就是普通的脚本。然后如果你的runner支持并行运行的话。你就配置成并行。那运行起来就是并行的。。目前junit本身不支持并行,一般都是用TestNG. 只要让TestNG 并行的运行测试,无论你的测试环境是由一个grid拖几个rc组成,还是 单一一个rc组成。。实际上 运行起来 测试就是并行的,唯一的区别是。如果用了grid的话,grid会把并发数量平均分配到不同的rc上去,然后每个rc会启动一个浏览器运行测试。而没有用grid情况就是同一个rc直接跑多个,就是一个rc直接打开多个浏览器窗口运行多个测试。
51Testing软件测试网 ? xu F2XQ?1}
第二,多环境。 说多环境,这里也要澄清一下。 不是说给一个普通的测试脚本,丢给grid就可以自动实现多环境同时测试了。那是完全错误的。。这里需要几点。1. 一个普通脚本能测试一个某一种环境。所以如果你要测试多个环境就需要多个脚本。而这些脚本的区别仅在于setup的时候定义DefaultSelenium("localhost",4444,"*firefox",Url); 这里。 因此两个测试方法也可以到同一个文件里面。写两个不同的方法,不同的定义DefaultSelenium部分,但调用同样的测试步骤。(就是selenium.open...开始到selenium.stop...). 这样一个文件下就算包含测试两个不同环境的测试方法了。
2. 让这两个测试方法,并行运行。。那又是testng的事情了。配置testng的suite。不细说。可以查看testng的文档。
3. grid配置的测试的rc环境,里面需要有刚才两个测试方法所需要的环境。
51Testing软件测试网V9o(t hj%b{c
好了,这样,就实现了多环境,同时测试。。

Z{g.XLX @X0
另外前面提到的一个普通测试脚本就是一个文件里面包含 一个setup(),一个testXXX(),一个tearDown()...
51Testing软件测试网1r0O#Gdmp3C;L
这里给个我所谓普通junit测试脚本的例子:

"oM }+T+B#N/me)Qh0
package test;


import org.testng.annotations.Test;
import org.testng.AssertJUnit;
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;

import junit.framework.TestCase;
public class NewTest extends TestCase{
public void setup()throws Exception{
Selenium selenium = new DefaultSelenium("localhost",4444,"*chrome","http://www.google.cn");
selenium.start();
}
public void testScript(Selenium selenium)throws Exception{
selenium.start();
selenium.open("http://www.google.cn/");
selenium.type("q", "selenium");
selenium.click("btnG");
selenium.waitForPageToLoad("30000");
assertEquals("selenium - Google 搜索", selenium.getTitle());
}
public void tearDown()throws Exception{
selenium.stop();
}

XlQ-K+MulS4I0
}

[a!da,J6`IWU#y0
然后如果要跑多环境并行,就需要修改这个脚本。
具体可以查看我的前面一个日志
51Testing软件测试网d,W |gK:G7U P+l0I }
脚本修改好之后,就需要定义个testng下面并行跑的test suite file.
具体看 另外一个日志。上次写的。
51Testing软件测试网 y| B:RvJ lKw9Fg;N
51Testing软件测试网0ZQ%EpT
今天就这些吧。。这里没讲到如何实现一个grid带多个rc多环境的配置。这部分应该不难,看grid的网站上有介绍。看到时候需要的话再补上吧。
51Testing软件测试网*E1dT6UM-k9o4P7i
51Testing软件测试网 NRI"jI*GrF:i
51Testing软件测试网J JM b/u;HA6s

TAG:

singlejeff的个人空间 引用 删除 singlejeff   /   2015-07-06 14:10:58
不错
singlejeff的个人空间 引用 删除 singlejeff   /   2015-07-06 14:10:50
5
 

评分:0

我来说两句

Open Toolbar