Bird
Raised Fist0
Selenium Javatesting~20 mins

Test groups in Selenium Java - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Test Groups Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of TestNG test group execution
Given the following TestNG test class with groups, what will be the output when running only the "smoke" group?
Selenium Java
import org.testng.annotations.Test;

public class SampleTest {

    @Test(groups = {"smoke"})
    public void testA() {
        System.out.println("Running testA");
    }

    @Test(groups = {"regression"})
    public void testB() {
        System.out.println("Running testB");
    }

    @Test(groups = {"smoke", "regression"})
    public void testC() {
        System.out.println("Running testC");
    }
}
ARunning testA\nRunning testC
BRunning testB\nRunning testC
CRunning testA\nRunning testB\nRunning testC
DRunning testC
Attempts:
2 left
💡 Hint
Only tests tagged with the 'smoke' group run when that group is selected.
❓ assertion
intermediate
2:00remaining
Assertion to verify only 'regression' group tests ran
You have a TestNG test suite that runs only the 'regression' group. Which assertion correctly verifies that only tests from the 'regression' group executed?
Selenium Java
List<String> executedTests = List.of("testB", "testC"); // names of executed tests
AassertTrue(executedTests.contains("testB") || executedTests.contains("testC"));
BassertFalse(executedTests.contains("testA"));
CassertEquals(executedTests.size(), 3);
DassertTrue(executedTests.containsAll(Arrays.asList("testB", "testC")) && executedTests.size() == 2);
Attempts:
2 left
💡 Hint
Check that only the expected tests ran and no extra tests.
🔧 Debug
advanced
2:00remaining
Why does a test not run when included in a group?
You have this TestNG test method: @Test(groups = {"integration"}) public void testIntegration() { // test code } You run your suite with unit in your XML but testIntegration does not run. Why?
ABecause the test method is private
BBecause the test is in the 'integration' group but the suite runs only the 'unit' group
CBecause the test method name does not start with 'test'
DBecause the test method is missing @Test annotation
Attempts:
2 left
💡 Hint
Check the group names in the test and in the suite XML.
❓ framework
advanced
2:00remaining
Best practice for grouping tests in Selenium with TestNG
Which is the best practice for organizing Selenium tests using TestNG groups to separate fast smoke tests from slower regression tests?
AAnnotate fast tests with @Test(groups = {"smoke"}) and slow tests with @Test(groups = {"regression"}), then run groups selectively
BPut all tests in one group and run them all every time
CUse @Test(enabled = false) for slow tests and enable them manually
DCreate separate test classes for smoke and regression but do not use groups
Attempts:
2 left
💡 Hint
Groups help run subsets of tests based on speed or purpose.
🧠 Conceptual
expert
2:00remaining
Impact of overlapping groups on test execution order
Consider these TestNG tests: @Test(groups = {"fast"}) public void test1() {} @Test(groups = {"fast", "database"}) public void test2() {} @Test(groups = {"database"}) public void test3() {} If you run the suite with groups fast,database, which statement about execution order is true?
ATestNG runs all tests in the order they appear in the class regardless of groups
BTests in both groups run but tests with multiple groups run last
CAll tests in 'fast' and 'database' groups run; order is not guaranteed unless specified
DOnly tests in the intersection of 'fast' and 'database' groups run
Attempts:
2 left
💡 Hint
Groups select tests, but order depends on configuration or annotations.

Practice

(1/5)
1. What is the main purpose of using groups in Selenium Java tests?
easy
A. To change the browser used in tests
B. To organize tests into categories for selective execution
C. To automatically generate test reports
D. To increase the speed of the WebDriver

Solution

  1. Step 1: Understand the role of test groups

    Test groups help organize tests into categories, making it easier to run specific sets of tests.
  2. Step 2: Identify the correct purpose

    Groups do not affect WebDriver speed, report generation, or browser choice directly.
  3. Final Answer:

    To organize tests into categories for selective execution -> Option B
  4. Quick Check:

    Test groups = Organize tests [OK]
Hint: Groups categorize tests to run only what you need [OK]
Common Mistakes:
  • Thinking groups speed up WebDriver
  • Confusing groups with report generation
  • Assuming groups change browser settings
2. Which is the correct syntax to assign a test method to groups "smoke" and "regression" in TestNG?
easy
A. @Test(groups = {"smoke", "regression"})
B. @Test(group = "smoke, regression")
C. @Test(groups = "smoke, regression")
D. @Test(groups = ["smoke", "regression"])

Solution

  1. Step 1: Recall TestNG groups syntax

    The correct syntax uses groups = {"group1", "group2"} with curly braces and double quotes for each group.
  2. Step 2: Compare options

    @Test(groups = {"smoke", "regression"}) matches the correct syntax. Options A, B, and D misuse quotes or attribute name. @Test(groups = ["smoke", "regression"]) uses square brackets which is invalid in Java annotations.
  3. Final Answer:

    @Test(groups = {"smoke", "regression"}) -> Option A
  4. Quick Check:

    Groups use curly braces and quotes [OK]
Hint: Use curly braces and quotes for multiple groups [OK]
Common Mistakes:
  • Using 'group' instead of 'groups'
  • Passing groups as a single string
  • Using square brackets instead of curly braces
3. Given the following TestNG test methods, which tests will run if you execute only the "fast" group?
@Test(groups = {"fast"})
public void testA() {}

@Test(groups = {"slow"})
public void testB() {}

@Test(groups = {"fast", "regression"})
public void testC() {}
medium
A. testA only
B. testB only
C. testA and testC
D. testB and testC

Solution

  1. Step 1: Identify tests with group "fast"

    testA has group "fast"; testC has groups "fast" and "regression"; testB has "slow" only.
  2. Step 2: Determine which tests run when "fast" group is executed

    Only tests assigned to "fast" group run, so testA and testC run; testB does not.
  3. Final Answer:

    testA and testC -> Option C
  4. Quick Check:

    Run group "fast" = testA, testC [OK]
Hint: Run group runs all tests tagged with it [OK]
Common Mistakes:
  • Running tests from other groups
  • Ignoring tests with multiple groups
  • Assuming only single-group tests run
4. What is wrong with this TestNG test method if the intention is to assign it to groups "ui" and "integration"?
@Test(groups = "ui, integration")
public void testUIIntegration() {}
medium
A. Groups should be passed as an array, not a single string
B. The method name is invalid
C. The annotation @Test is missing parentheses
D. Groups attribute is not supported in @Test

Solution

  1. Step 1: Check groups attribute format

    Groups must be passed as an array of strings using curly braces, not a single comma-separated string.
  2. Step 2: Identify the error in the code

    The code uses a single string "ui, integration" instead of {"ui", "integration"}.
  3. Final Answer:

    Groups should be passed as an array, not a single string -> Option A
  4. Quick Check:

    Groups need array syntax [OK]
Hint: Use curly braces for multiple groups [OK]
Common Mistakes:
  • Passing groups as one string with commas
  • Forgetting curly braces for arrays
  • Misunderstanding annotation syntax
5. You have three test methods:
@Test(groups = {"sanity"})
public void testLogin() {}

@Test(groups = {"regression", "sanity"})
public void testCheckout() {}

@Test(groups = {"regression"})
public void testSearch() {}
How would you run only the tests that belong exclusively to the "sanity" group, excluding those that also belong to "regression"?
hard
A. Run tests with groups "sanity" and "regression" together
B. Run all tests with group "sanity" only
C. Run tests with group "regression" only
D. Run tests with group "sanity" and exclude group "regression" in the TestNG XML

Solution

  1. Step 1: Identify tests with only "sanity" group

    testLogin belongs only to "sanity"; testCheckout belongs to both "regression" and "sanity"; testSearch belongs only to "regression".
  2. Step 2: Determine how to run only exclusive "sanity" tests

    Use TestNG XML to include "sanity" group and exclude "regression" group to run only testLogin.
  3. Final Answer:

    Run tests with group "sanity" and exclude group "regression" in the TestNG XML -> Option D
  4. Quick Check:

    Include "sanity" exclude "regression" = exclusive tests [OK]
Hint: Include one group, exclude others in XML to filter tests [OK]
Common Mistakes:
  • Running all tests with "sanity" ignoring exclusions
  • Running "regression" group instead
  • Running both groups together without filtering
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