TestNG - Parallel Execution

TestNG allows to run tests parallelly or in separate threads in following ways:
Parallel suites: If you are running several suite files (e.g. testng1.xml testng2.xml"), and you want each of these suites to be run in a separate thread. Use the following command line flag to specify the size of a thread pool:
  java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml
  

Parallel suites: If you are running several suite files (e.g. testng1.xml testng2.xml"), and you want each of these suites to be run in a separate thread. Use the following command line flag to specify the size of a thread pool:
  java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml
  
Parallel tests, classes and methods:  Use parallel attribute on the <suite> tag respectively (for methods,test,classes, instances).  
      <suite name="My suite" parallel="methods" thread-count="5">
    
      <suite name="My suite" parallel="tests" thread-count="5">
    
      <suite name="My suite" parallel="classes" thread-count="5">
    
      <suite name="My suite" parallel="instances" thread-count="5">
    

Parallel tests, classes and methods:  Use parallel attribute on the <suite> tag respectively (for methods,test,classes, instances).  
      <suite name="My suite" parallel="methods" thread-count="5">
    
      <suite name="My suite" parallel="tests" thread-count="5">
    
      <suite name="My suite" parallel="classes" thread-count="5">
    
      <suite name="My suite" parallel="instances" thread-count="5">
    
Parallel testing is used heavily with Selenium because of the importance of cross-browser testing. With so many browsers in market today with a different version, create a browser matrix and run the tests parallelly. This will save us lot of time and other resources.
Following are some of the advantages of parallel testing using TestNG:
It reduces time
It reduces time
Allows multi-threaded tests
Allows multi-threaded tests
Following are some of the disadvantages of parallel testing using TestNG
Fails on dependent modules - Most of the times the tests are inter-dependent, hence failing chances are more.
Fails on dependent modules - Most of the times the tests are inter-dependent, hence failing chances are more.
Program flow sequence - The tester should be well aware of the program flow to create parallel testing modules.
Program flow sequence - The tester should be well aware of the program flow to create parallel testing modules.
Let us see an example to run test methods parallelly. Create a java class, say, TestParallel.java in /work/testng/src.
  import org.testng.annotations.Test;

  public class TestParallel {
  	@Test
  	   public void method1() {
  	      System.out.println("Inside method1()");
  	      //Assert.assertEquals(message, messageUtil.printMessage());
  	   }
  	@Test
  	public void method2() {
  	      System.out.println("Inside method2()");
  	      //Assert.assertEquals(message, messageUtil.printMessage());
  	   }
  }
The preceding test class contains two test methods which will run in separate threads.
Create testng.xml in /work/testng/src to execute test case(s).
  <?xml version = "1.0" encoding = "UTF-8"?>
  <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
  <suite name = "Parallel Testing Suite">
     <test name = "Parallel Tests" parallel = "methods">
        <classes>
           <class name = "TestParallel" />
        </classes>
     </test>
  </suite>
Compile the TestParallel class using javac.
/work/testng/src$ javac TestParallel.java
Now, run testng.xml.
/work/testng/src$ java org.testng.TestNG testng.xml
Verify the output.
Inside method1()
Inside method2()

===============================================
Parallel Testing Suite
Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
===============================================

    38 Lectures 
     4.5 hours 

 Lets Kode It

    15 Lectures 
     1.5 hours 

 Quaatso Learning

    28 Lectures 
     3 hours 

 Dezlearn Education
 Print
 Add Notes
 Bookmark this page