Parallel execution lets you run multiple tests at the same time. This saves time and helps find problems faster.
Parallel execution configuration in Selenium Java
In TestNG XML file: <suite name="SuiteName" parallel="tests" thread-count="3"> <test name="Test1"> <classes> <class name="com.example.TestClass1"/> </classes> </test> <test name="Test2"> <classes> <class name="com.example.TestClass2"/> </classes> </test> <test name="Test3"> <classes> <class name="com.example.TestClass3"/> </classes> </test> </suite>
The parallel attribute can be set to tests, classes, or methods to control what runs in parallel.
The thread-count sets how many threads (tests) run at the same time.
<suite name="Suite" parallel="tests" thread-count="2"> <test name="TestA"> <classes> <class name="com.example.TestA"/> </classes> </test> <test name="TestB"> <classes> <class name="com.example.TestB"/> </classes> </test> </suite>
<suite name="Suite" parallel="classes" thread-count="3"> <test name="Test"> <classes> <class name="com.example.Test1"/> <class name="com.example.Test2"/> <class name="com.example.Test3"/> </classes> </test> </suite>
<suite name="Suite" parallel="methods" thread-count="4"> <test name="Test"> <classes> <class name="com.example.TestClass"/> </classes> </test> </suite>
This Java test class uses TestNG to run two tests in parallel if configured in the TestNG XML file with parallel="methods" and thread-count="2". Each test opens a browser, checks the page title, and prints a success message.
package com.example; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class ParallelTest { WebDriver driver; @BeforeMethod public void setup() { driver = new ChromeDriver(); } @Test public void testGoogle() { driver.get("https://www.google.com"); String title = driver.getTitle(); assert title.contains("Google"); System.out.println("Google test passed"); } @Test public void testBing() { driver.get("https://www.bing.com"); String title = driver.getTitle(); assert title.contains("Bing"); System.out.println("Bing test passed"); } @AfterMethod public void teardown() { driver.quit(); } }
Make sure your tests do not share data that can cause conflicts when running in parallel.
Use thread-safe WebDriver instances to avoid errors.
Configure your TestNG XML file correctly to enable parallel execution.
Parallel execution runs tests at the same time to save time.
Set parallel and thread-count in TestNG XML to control parallelism.
Write tests that can run independently without sharing data.
Practice
Solution
Step 1: Understand parallel execution concept
Parallel execution means running tests simultaneously instead of sequentially.Step 2: Identify the benefit of parallel execution
Running tests at the same time saves overall test execution time.Final Answer:
To run multiple tests at the same time and save execution time -> Option AQuick Check:
Parallel execution = run tests simultaneously [OK]
- Thinking parallel means running tests one by one
- Confusing parallel execution with increasing test count
- Assuming parallel disables tests
Solution
Step 1: Recall TestNG XML attributes for parallelism
TestNG usesthread-countto specify how many threads run tests in parallel.Step 2: Verify other options are incorrect
Attributes likeparallel-count,max-threads, andexecution-threadsare not valid TestNG attributes.Final Answer:
thread-count -> Option AQuick Check:
Thread count = number of parallel threads [OK]
- Using wrong attribute names like parallel-count
- Confusing thread-count with parallel attribute
- Misspelling thread-count
<suite name="Suite" parallel="tests" thread-count="3"> <test name="Test1"></test> <test name="Test2"></test> <test name="Test3"></test> <test name="Test4"></test> </suite>
Solution
Step 1: Understand thread-count and parallel attribute
parallel="tests" means tests run in parallel. thread-count="3" limits max parallel threads to 3.Step 2: Apply thread-count to number of tests
There are 4 tests but only 3 threads, so 3 tests run simultaneously and 1 waits.Final Answer:
3 tests run in parallel, 1 waits -> Option BQuick Check:
thread-count limits parallel tests to 3 [OK]
- Assuming all tests run parallel ignoring thread-count
- Confusing parallel="tests" with parallel="methods"
- Ignoring that thread-count caps parallelism
parallel="methods" and thread-count="2" in TestNG XML, but tests still run sequentially. What is the likely cause?Solution
Step 1: Understand parallel methods and thread safety
parallel="methods" runs test methods in parallel only if they are thread-safe and independent.Step 2: Identify cause of sequential execution
If tests share data or state, TestNG runs them sequentially to avoid conflicts.Final Answer:
Test methods share state and are not thread-safe -> Option CQuick Check:
Shared state blocks parallel method execution [OK]
- Setting thread-count to 1 disables parallelism
- Using wrong parallel attribute value
- Believing TestNG lacks parallel support
Solution
Step 1: Understand parallel modes in TestNG
parallel="classes" runs test classes in parallel, isolating each class's WebDriver instance.Step 2: Match requirement to configuration
Running classes in parallel with thread-count=4 allows 4 classes to run simultaneously, each with its own driver.Final Answer:
<suite name="Suite" parallel="classes" thread-count="4"> -> Option DQuick Check:
parallel="classes" isolates WebDriver per class [OK]
- Using parallel="methods" causing shared driver issues
- Choosing parallel="tests" which runs test tags, not classes
- Using parallel="instances" which is less common and may confuse
Ready to prove it?
Pass the test and this pattern moves unknown
