`
yiyu
  • 浏览: 187220 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

结合selenium grid和testNG实现自动web测试的并发执行

阅读更多
testNG可以设置为并发执行测试用例。selenium grid可以通过grid hub将测试用例分别转发给不同的remote control/浏览器对,而且这些remote control/浏览器对可以位于不同的机器上,这样两者结合就可以实现可伸缩的自动web测试。

1. testNG并发执行测试用例的方法
在配置testNG的test.xml中,通过suit标签的属性可以指定并发执行,例如:
<suite name="My suite" parallel="methods" thread-count="5">
指定每一个测试方法使用单独的线程,总线程数为5
parallel可以为:
  methods : 每个method使用一个线程
  tests :每个<test>标签中的所有方法使用一个线程
  classes : 每个class使用一个线程
可以参看这里:http://testng.org/doc/documentation-main.html#parallel-running

如果是使用ant启动测试的话,还可以在ant脚本中指定该参数,可以参照selenium grid中build.xml的代码:
  <target name="run-demo-for-multiple-environments"
          description="Run Selenium tests in parallel for multiple environments">
    <java classpathref="demo.classpath" classname="org.testng.TestNG" failonerror="true" >
	【略】
      <arg value="-d" />
      <arg value="${basedir}/target/reports" />
      <arg value="-suitename" />
      <arg value="Selenium Grid Demo In Parallel For Multiple Environments" />
	  【在这里】
      <arg value="-parallel"/>
      <arg value="methods"/>
      <arg value="-threadcount"/>
      <arg value="10"/>
      <arg value="-testclass"/>
      <arg value="com.thoughtworks.selenium.grid.demo.WebTestInvolvingMultiEnvironments"/>
    </java>
  </target>


2 使用selenium grid
grid的机制是,启动一个hub,然后启动多个remote control,启动remote control时告知hub的位置,这样这些rc就可以注册到hub上,测试程序与hub通讯,当测试被并发地发给hub时,hub会自动将这些测试命令分发给已经注册的rc,rc接到命令后执行测试。

到这里D:\opensource\selenium\selenium-grid-1.0.4\doc\website\download.html下个最新版的selenium grid,里面的文档有详细的使用方法,现在简诉如下:

selenium grid要求安装jdk和ant,其目录下有一build.xml文件,其中定义的主要target如下:
检查配置:ant sanity-check
启动hub:ant launch-hub
  其中hub的配置是在grid_configuration.yml文件里,该文件要在classpath的根里
  启动后在http://host:port/console可以看到hub当前的状态
启动rc(按默认配置):ant run-demo-in-sequence
启动rc(指定参数):ant -Dport=5555 -Dhost=192.168.1.16 -DhubURL=http://192.168.1.1:4444 launch-remote-control
  其中host和port是rc的地址,hubURL是hub的地址
正常启动后,可以在http://host:port/console看到hub中当前注册的rc

3 测试代码的写法
测试代码使用grid tool中
的ThreadSafeSeleniumSessionStorage在每个用例前实例化一selenium(实际是一DefaultSelenium),在用例后将其关闭。初始化selenium时与一般初始化DefaultSelenium一样,指定host,port,browser和indexPage,这里的host和port不是rc中的server,而是hub。
以下是示例代码:

import static com.thoughtworks.selenium.grid.tools.ThreadSafeSeleniumSessionStorage.closeSeleniumSession;
import static com.thoughtworks.selenium.grid.tools.ThreadSafeSeleniumSessionStorage.session;
import static com.thoughtworks.selenium.grid.tools.ThreadSafeSeleniumSessionStorage.startSeleniumSession;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

import com.thoughtworks.selenium.Selenium;

/**
 * Tests for the footer of a page. This footer always contains a copyright string and a
 * timestamp for the time the target was generated.
 * @author pmorales
 */
public class Sample {
	private Selenium selenium;
	
    @BeforeMethod
    @Parameters({"seleniumHost", "seleniumPort", "browser", "webSite"})
    protected void startSession(String seleniumHost, int seleniumPort, String browser, String webSite) throws Exception {
        startSeleniumSession(seleniumHost, seleniumPort, browser, webSite);
        selenium = session();
        selenium.setTimeout("120000");
    }

    @AfterMethod
    protected void closeSession() throws Exception {
        closeSeleniumSession();
    }
	
	@Test
	public void test1() {
		selenium.open("/");
		selenium.type("q", "test1");
		selenium.click("btnG");
		selenium.waitForPageToLoad("30000");
	}
	
	【略】
}


在testNG的配置文件test.xml中指定seleniumHost, seleniumPort, browser, webSite等参数,当有多个测试用例和多个rc时,跑测试时就会看到测试在多个rc上并发运行了。
分享到:
评论

相关推荐

    Selenium2 Java自动化测试实战 第一版

    总的来说,《Selenium2 Java自动化测试实战》是一本全面的教程,旨在帮助读者掌握Selenium 2与Java的结合,提升自动化测试能力,从而在Web应用开发和维护中提高效率和质量。通过阅读这本书,读者不仅可以理解...

    selenium自动化测试框架

    在Selenium中结合使用TestNG,可以更有效地组织和执行测试用例。 1. **TestNG.xml**:这是TestNG的配置文件,可以定义测试套件、测试组、测试类及其执行顺序,还可以设置参数化测试和数据驱动测试。 2. **...

    Selenium+java进行web自动化.pdf

    总的来说,Selenium+Java的Web自动化测试流程包括:安装和配置Java环境,熟悉Selenium WebDriver API,学习元素定位和操作,掌握测试框架如JUnit或TestNG,以及理解Web开发基础。通过这些知识,测试人员可以编写出...

    基于Selenium 2的自动化测试 从入门到精通完整版

    1. **Web应用测试**:书中包含实际Web应用的自动化测试案例,指导读者如何从需求分析到编写测试脚本,再到执行和报告。 2. **持续集成**:集成Selenium测试到持续集成工具(如Jenkins、Travis CI)中,实现自动化...

    Selenium 浏览器自动化测试工具 --- 跨浏览器、跨平台

    **Selenium 浏览器自动...结合各种编程语言和工具,如TestNG或JUnit进行更高级的测试管理和执行,可以构建出高效且健壮的自动化测试框架。通过学习和熟练掌握Selenium,测试工程师可以大大提高工作效率,保证产品质量。

    Selenium是一个广泛使用的开源自动化测试框架.docx

    - **Selenium Server**:这是一个可选组件,用于支持远程执行测试脚本,能够在多台机器上同时运行测试,实现并行测试和分布式测试,显著提高测试效率。 #### 五、应用场景 Selenium适用于各种Web应用测试场景,...

    selenium-2.53.0

    开发者可以使用JUnit或TestNG等测试框架,结合Selenium的Java API编写测试用例,进行功能和回归测试。 四、实际应用 在实际工作中,Selenium 2.53.0常用于以下场景: 1. **功能测试**:通过编写自动化脚本,验证...

    selenium java -2.53.1

    11. **Selenium Grid**:在2.53.1版本中,Selenium Grid帮助用户在多台机器上并行执行测试,加速了大规模测试的执行速度。 12. **持续集成**:Selenium 与Jenkins、Maven等持续集成工具良好配合,可自动化构建、...

    selenium-java-2.45.0

    "selenium-java-2.45.0" 版本是 Selenium 的一个特定历史版本,发布于2015年,该版本为Java开发者提供了接口和类库,以便于他们能够利用Selenium的功能进行Web应用程序的自动化测试。 在 Selenium 2.45.0 版本中,...

    selenium3工具

    4. **Selenium Grid**:对于大规模的测试场景,Selenium Grid可以部署在多台机器上,实现测试用例的并发执行,大大提高测试效率。 5. **元素定位**:Selenium提供了丰富的定位策略,如ID、Name、XPath、CSS选择器等...

    selenium 相关浏览器jar包

    9. **持续集成**: Selenium通常与持续集成工具(如Jenkins、Travis CI等)结合使用,自动化执行测试并在每次代码提交后提供反馈,以确保软件质量。 10. **社区支持与扩展**: Selenium有一个庞大的开发者社区,提供...

    selenium个人使用总结

    与TestNG或JUnit结合,可以实现更复杂的测试结构,如并行测试;使用Mockito进行模拟,可以隔离测试,避免外部因素干扰。 在个人使用总结中,我发现合理地组织测试用例和数据是非常重要的。可以利用Selenium的Page ...

    软件测试教学视频(共30G)-编码9527

    可能会涵盖Selenium WebDriver、JUnit、TestNG等自动化测试框架的使用方法,以及如何编写可维护的自动化测试脚本。 4. **敏捷测试**:介绍敏捷开发理念,如Scrum和Kanban,以及敏捷环境下的测试实践,包括持续集成...

    selenium-java-3.1.0.rar

    - **并行测试**:通过多线程或分布式测试(如Selenium Grid)实现大规模的并发测试。 在实际项目中,Selenium通常与测试框架如JUnit或TestNG结合使用,以提供更完善的测试结构和报告。同时,Page Object模式是推荐...

    spiders4cxq.zip

    8. TestNG或JUnit集成:Selenium可以与TestNG或JUnit等测试框架结合,实现更高级的测试组织和报告功能。 9. 自动化测试框架:如Selenium Grid可以用于分布式测试,提高测试效率;Robot Framework则提供了一种更高...

    Selenium代码,Selenium是广泛使用的模拟浏览器运行的库

    Selenium 是一个强大的开源自动化测试框架,主要用于模拟真实用户在浏览器中的操作,广泛应用于Web应用程序的测试。这个压缩包文件"Selenium-trunk"可能包含了Selenium的源代码或开发版本,通常这样的命名意味着它...

    Selenium WebDriver Practical Guide示例代码

    5. **测试框架集成**:示例代码可能演示了如何将Selenium与JUnit、TestNG等测试框架集成,以便于管理和执行测试套件。 6. **数据驱动测试**:这涉及如何使用外部数据源(如CSV文件或数据库)驱动测试,实现对多个...

    selenium-java-3.141.59

    7. **TestNG或JUnit**:Selenium测试通常与这些测试框架结合使用,以组织和执行测试套件,提供报告和并发测试功能。 8. **Selenium Grid**:这是一个分布式测试工具,可以同时在多台机器上运行测试,以加速测试过程...

Global site tag (gtag.js) - Google Analytics