Bird
Raised Fist0
JUnittesting~20 mins

Mutation testing concept (PIT) in JUnit - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Mutation Testing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
What is the main goal of mutation testing?
Mutation testing is a technique used in software testing. What is its primary purpose?
ATo check if the test suite can detect small changes (mutations) in the code
BTo find syntax errors in the source code before compilation
CTo automatically generate user interface tests
DTo measure the performance of the application under load
Attempts:
2 left
💡 Hint
Think about how mutation testing challenges your tests.
❓ Predict Output
intermediate
1:00remaining
What is the mutation score for this test result?
Given a mutation testing run with 100 mutants generated, 80 mutants killed by tests, and 20 mutants survived, what is the mutation score percentage?
A80%
B20%
C100%
D0%
Attempts:
2 left
💡 Hint
Mutation score = (killed mutants / total mutants) * 100
❓ assertion
advanced
1:30remaining
Which assertion correctly verifies a mutation testing report's killed mutants count?
You have a variable killedMutants = 45 from a mutation testing report. Which JUnit assertion correctly checks that killedMutants equals 45?
AassertNull(killedMutants);
BassertEquals(45, killedMutants);
CassertFalse(killedMutants != 45);
DassertTrue(killedMutants == 45);
Attempts:
2 left
💡 Hint
Use the assertion that compares expected and actual values directly.
🔧 Debug
advanced
2:00remaining
Why does PIT report 0% mutation coverage despite tests passing?
You run PIT mutation testing on your Java project. All unit tests pass, but PIT reports 0% mutation coverage. What is the most likely cause?
AThe tests have syntax errors and do not run
BThe code has no mutations generated by PIT
CThe tests do not execute the mutated code paths at all
DPIT only works with integration tests, not unit tests
Attempts:
2 left
💡 Hint
Think about what it means if mutants survive despite tests passing.
❓ framework
expert
2:30remaining
Which PIT configuration option excludes test classes from mutation analysis?
In PIT configuration for a Maven project, which option correctly excludes test classes from mutation testing?
A<targetTests>**/*Test*</targetTests>
B<targetClasses>**/*Test*</targetClasses>
C<excludedMethods>test*</excludedMethods>
D<excludedClasses>**/*Test*</excludedClasses>
Attempts:
2 left
💡 Hint
Look for the option that excludes classes by pattern.

Practice

(1/5)
1. What is the main purpose of mutation testing using PIT in JUnit projects?
easy
A. To check if tests can detect small changes (mutations) in the code
B. To improve the performance of the application
C. To generate new test cases automatically
D. To refactor the code for better readability

Solution

  1. Step 1: Understand mutation testing concept

    Mutation testing changes code slightly to see if tests catch the changes.
  2. Step 2: Identify PIT's role in JUnit projects

    PIT automates mutation testing to check test effectiveness.
  3. Final Answer:

    To check if tests can detect small changes (mutations) in the code -> Option A
  4. Quick Check:

    Mutation testing = detect code changes [OK]
Hint: Mutation testing checks test strength by code changes [OK]
Common Mistakes:
  • Thinking mutation testing improves app speed
  • Confusing mutation testing with test generation
  • Assuming mutation testing refactors code
2. Which of the following is the correct way to run PIT mutation testing with Maven in a JUnit project?
easy
A. mvn test:pitest
B. mvn pitest:mutationCoverage
C. mvn mutation:test
D. mvn pit:run

Solution

  1. Step 1: Recall PIT Maven command

    The standard Maven command to run PIT is mvn pitest:mutationCoverage.
  2. Step 2: Check other options for correctness

    Other options are invalid or do not match PIT's official command syntax.
  3. Final Answer:

    mvn pitest:mutationCoverage -> Option B
  4. Quick Check:

    PIT Maven command = mvn pitest:mutationCoverage [OK]
Hint: PIT Maven command always starts with 'mvn pitest:' [OK]
Common Mistakes:
  • Using incorrect Maven goals like test:pitest
  • Confusing PIT commands with other plugins
  • Missing the 'mutationCoverage' goal
3. Given the following code snippet and its test, what will PIT report if the test does NOT fail after mutation?
public int add(int a, int b) { return a + b; }

Mutation changes '+' to '-'. The test asserts add(2,3) == 5.
medium
A. Mutation killed (test failed)
B. Syntax error in mutation
C. Mutation survived (test passed)
D. Test skipped due to mutation

Solution

  1. Step 1: Understand mutation effect

    The '+' operator is changed to '-', so add(2,3) returns -1 instead of 5.
  2. Step 2: Analyze test result

    If the test still passes, it means it did not detect the mutation, so mutation survived.
  3. Final Answer:

    Mutation survived (test passed) -> Option C
  4. Quick Check:

    Mutation survived = test missed bug [OK]
Hint: If test passes despite mutation, mutation survived [OK]
Common Mistakes:
  • Assuming mutation killed when test passes
  • Confusing mutation survival with syntax errors
  • Thinking mutation causes test to skip
4. You run PIT on a JUnit project but notice no mutations are detected. Which of the following is the MOST likely cause?
medium
A. Tests are missing or not executed during mutation testing
B. PIT does not support JUnit tests
C. Mutation testing always reports zero mutations
D. Code has no executable statements

Solution

  1. Step 1: Consider PIT and JUnit compatibility

    PIT supports JUnit tests, so PIT does not support JUnit tests is incorrect.
  2. Step 2: Analyze why no mutations detected

    If tests are missing or not run, PIT cannot detect mutations, causing zero mutations reported.
  3. Final Answer:

    Tests are missing or not executed during mutation testing -> Option A
  4. Quick Check:

    No tests run = no mutations detected [OK]
Hint: No tests run means no mutation detection [OK]
Common Mistakes:
  • Believing PIT doesn't support JUnit
  • Thinking mutation testing always reports mutations
  • Assuming code has no executable statements
5. In a JUnit project using PIT, you notice that mutation coverage is low even though your tests pass. What is the BEST way to improve mutation coverage?
hard
A. Ignore mutation coverage and focus on code coverage
B. Increase the number of mutations PIT generates
C. Disable mutation testing for complex classes
D. Add more tests that fail when code is mutated

Solution

  1. Step 1: Understand mutation coverage meaning

    Low mutation coverage means tests do not fail when code is changed (mutated).
  2. Step 2: Identify how to improve mutation coverage

    Adding tests that detect mutations (fail on changes) improves mutation coverage.
  3. Final Answer:

    Add more tests that fail when code is mutated -> Option D
  4. Quick Check:

    Better tests = higher mutation coverage [OK]
Hint: Stronger tests catch mutations, raising coverage [OK]
Common Mistakes:
  • Trying to increase mutations instead of test quality
  • Disabling mutation testing to hide low coverage
  • Ignoring mutation coverage in favor of code coverage only
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