Bird
Raised Fist0
Selenium Javatesting~20 mins

Parallel execution configuration in Selenium Java - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Parallel Execution Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of TestNG Parallel Execution Configuration
Given the following TestNG XML configuration for parallel execution, what will be the output order of test methods if each test prints its method name when run?
Selenium Java
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="methods" thread-count="2">
  <test name="Test1">
    <classes>
      <class name="tests.SampleTest"/>
    </classes>
  </test>
</suite>

// SampleTest.java
package tests;
import org.testng.annotations.Test;
public class SampleTest {
  @Test
  public void testA() {
    System.out.println("testA");
  }
  @Test
  public void testB() {
    System.out.println("testB");
  }
  @Test
  public void testC() {
    System.out.println("testC");
  }
}
AtestA\ntestB\ntestC (order may vary but all run concurrently with max 2 threads)
BtestA\ntestB\ntestC (always sequential in this order)
CtestA\ntestC\ntestB (always this fixed order)
DOnly testA runs because thread-count limits to 1
Attempts:
2 left
💡 Hint
Parallel execution with thread-count=2 means up to 2 tests run at the same time, order is not guaranteed.
❓ assertion
intermediate
2:00remaining
Correct Assertion for Parallel Test Execution Completion
In a Selenium TestNG parallel test suite, which assertion correctly verifies that all tests have completed execution before proceeding?
Selenium Java
import org.testng.Assert;
import org.testng.annotations.Test;

@Test
public void verifyAllTestsCompleted() {
  boolean allTestsDone = TestExecutionListener.allTestsFinished();
  // Which assertion below is correct to confirm all tests finished?
}
AAssert.assertFalse(allTestsDone, "Not all tests completed");
BAssert.assertNull(allTestsDone, "Not all tests completed");
CAssert.assertTrue(allTestsDone, "Not all tests completed");
DAssert.assertEquals(allTestsDone, false, "Not all tests completed");
Attempts:
2 left
💡 Hint
You want to confirm the boolean flag is true indicating completion.
🔧 Debug
advanced
2:00remaining
Debugging Thread Safety Issue in Parallel Selenium Tests
You have configured parallel execution in TestNG with thread-count=3. Your Selenium tests share a WebDriver instance stored in a static variable. What problem will most likely occur?
ATests will throw a compilation error due to static WebDriver.
BTests will run faster without any issues because WebDriver is shared.
CTests will run sequentially ignoring parallel configuration.
DTests will fail intermittently due to WebDriver instance conflicts across threads.
Attempts:
2 left
💡 Hint
Consider thread safety when sharing objects in parallel tests.
❓ framework
advanced
2:00remaining
Best Practice for Parallel Execution in Selenium with TestNG
Which TestNG suite XML configuration snippet correctly enables parallel execution at the class level with 4 threads?
A
&lt;suite name="Suite" parallel="classes" thread-count="4"&gt;
  &lt;test name="Test"&gt;
    &lt;classes&gt;
      &lt;class name="tests.TestClass1"/&gt;
      &lt;class name="tests.TestClass2"/&gt;
    &lt;/classes&gt;
  &lt;/test&gt;
&lt;/suite&gt;
B
&lt;suite name="Suite" parallel="tests" thread-count="4"&gt;
  &lt;test name="Test1"&gt;
    &lt;classes&gt;
      &lt;class name="tests.TestClass1"/&gt;
    &lt;/classes&gt;
  &lt;/test&gt;
  &lt;test name="Test2"&gt;
    &lt;classes&gt;
      &lt;class name="tests.TestClass2"/&gt;
    &lt;/classes&gt;
  &lt;/test&gt;
&lt;/suite&gt;
C
&lt;suite name="Suite" parallel="methods" thread-count="4"&gt;
  &lt;test name="Test"&gt;
    &lt;classes&gt;
      &lt;class name="tests.TestClass1"/&gt;
      &lt;class name="tests.TestClass2"/&gt;
    &lt;/classes&gt;
  &lt;/test&gt;
&lt;/suite&gt;
D
&lt;suite name="Suite" parallel="instances" thread-count="4"&gt;
  &lt;test name="Test"&gt;
    &lt;classes&gt;
      &lt;class name="tests.TestClass1"/&gt;
      &lt;class name="tests.TestClass2"/&gt;
    &lt;/classes&gt;
  &lt;/test&gt;
&lt;/suite&gt;
Attempts:
2 left
💡 Hint
Parallel at class level means parallel="classes" in suite tag.
🧠 Conceptual
expert
2:00remaining
Impact of Parallel Execution on Test Data Management
In a Selenium TestNG suite running tests in parallel, what is the best approach to manage test data to avoid flaky tests?
AShare a single global data object across all tests to reduce memory usage.
BUse thread-local storage or separate data instances per test thread to isolate test data.
CLoad test data once before suite and reuse it without synchronization.
DUse static variables to store test data accessible by all threads.
Attempts:
2 left
💡 Hint
Think about data isolation in parallel environments.

Practice

(1/5)
1. What is the main purpose of configuring parallel execution in Selenium with TestNG?
easy
A. To run multiple tests at the same time and save execution time
B. To run tests one after another in a fixed order
C. To increase the number of test cases manually
D. To disable test execution temporarily

Solution

  1. Step 1: Understand parallel execution concept

    Parallel execution means running tests simultaneously instead of sequentially.
  2. Step 2: Identify the benefit of parallel execution

    Running tests at the same time saves overall test execution time.
  3. Final Answer:

    To run multiple tests at the same time and save execution time -> Option A
  4. Quick Check:

    Parallel execution = run tests simultaneously [OK]
Hint: Parallel means running tests together to save time [OK]
Common Mistakes:
  • Thinking parallel means running tests one by one
  • Confusing parallel execution with increasing test count
  • Assuming parallel disables tests
2. Which XML attribute correctly sets the number of threads for parallel execution in TestNG?
easy
A. thread-count
B. parallel-count
C. max-threads
D. execution-threads

Solution

  1. Step 1: Recall TestNG XML attributes for parallelism

    TestNG uses thread-count to specify how many threads run tests in parallel.
  2. Step 2: Verify other options are incorrect

    Attributes like parallel-count, max-threads, and execution-threads are not valid TestNG attributes.
  3. Final Answer:

    thread-count -> Option A
  4. Quick Check:

    Thread count = number of parallel threads [OK]
Hint: Use thread-count to set parallel threads in TestNG XML [OK]
Common Mistakes:
  • Using wrong attribute names like parallel-count
  • Confusing thread-count with parallel attribute
  • Misspelling thread-count
3. Given this TestNG XML snippet, how many tests will run in parallel?
<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>
medium
A. All 4 tests run in parallel
B. 3 tests run in parallel, 1 waits
C. Only 1 test runs at a time
D. 2 tests run in parallel, 2 wait

Solution

  1. Step 1: Understand thread-count and parallel attribute

    parallel="tests" means tests run in parallel. thread-count="3" limits max parallel threads to 3.
  2. 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.
  3. Final Answer:

    3 tests run in parallel, 1 waits -> Option B
  4. Quick Check:

    thread-count limits parallel tests to 3 [OK]
Hint: thread-count limits max parallel tests running [OK]
Common Mistakes:
  • Assuming all tests run parallel ignoring thread-count
  • Confusing parallel="tests" with parallel="methods"
  • Ignoring that thread-count caps parallelism
4. You configured parallel="methods" and thread-count="2" in TestNG XML, but tests still run sequentially. What is the likely cause?
medium
A. TestNG does not support parallel execution
B. thread-count must be set to 1 for parallel methods
C. Test methods share state and are not thread-safe
D. parallel attribute should be set to "tests" for methods

Solution

  1. Step 1: Understand parallel methods and thread safety

    parallel="methods" runs test methods in parallel only if they are thread-safe and independent.
  2. Step 2: Identify cause of sequential execution

    If tests share data or state, TestNG runs them sequentially to avoid conflicts.
  3. Final Answer:

    Test methods share state and are not thread-safe -> Option C
  4. Quick Check:

    Shared state blocks parallel method execution [OK]
Hint: Ensure test methods are independent for parallel execution [OK]
Common Mistakes:
  • Setting thread-count to 1 disables parallelism
  • Using wrong parallel attribute value
  • Believing TestNG lacks parallel support
5. You want to run test classes in parallel but ensure each class uses its own WebDriver instance to avoid conflicts. Which TestNG XML configuration is best?
hard
A. <suite name="Suite" parallel="instances" thread-count="4">
B. <suite name="Suite" parallel="tests" thread-count="4">
C. <suite name="Suite" parallel="methods" thread-count="4">
D. <suite name="Suite" parallel="classes" thread-count="4">

Solution

  1. Step 1: Understand parallel modes in TestNG

    parallel="classes" runs test classes in parallel, isolating each class's WebDriver instance.
  2. 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.
  3. Final Answer:

    <suite name="Suite" parallel="classes" thread-count="4"> -> Option D
  4. Quick Check:

    parallel="classes" isolates WebDriver per class [OK]
Hint: Use parallel="classes" for separate WebDriver per class [OK]
Common Mistakes:
  • 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
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard