This repository contains test suites for some examplary algorithms. My goal was to apply systematic and effective testing techniques to a set of Java exercises, leveraging specification-based testing, structural coverage, mutation analysis, and property-based methods.
All exercises follow Java 11 and Maven-based environments. Each solution includes:
solution_[problem name].mdwith analysis and explanation of a problem- Test files in JUnit 5
- Source code fixes (if bugs are found)
Purpose:
This folder includes 12 core Java exercises, each representing a separate problem to be tested and potentially debugged.
Testing Techniques Applied:
- ✅ Specification-based testing (Chapter 2)
- ✅ Structural testing (Chapter 3) using JaCoCo for line & condition coverage
- ✅ Mutation testing (Chapter 3) using PIT and the JUnit5 plugin
Structure per Exercise:
Each exercise has:
src/withExerciseName.javaandExerciseNameTest.javasolution_[problem name].mdwith:- Detected bugs and fixes
- Test design rationale
- Coverage reports
- Mutation testing results
Tools Used:
- Java 11
- JUnit 5
- Maven
- JaCoCo
- PIT + PIT JUnit5 Plugin
Purpose:
This folder contains additional or advanced exercises, allowing further exploration of intelligent testing techniques and broader application of test design principles.
Likely Focus Areas:
- Property-based testing (Chapter 5)
- Boundary testing
- Mocks, stubs, and fakes (Chapter 6)
- Mutation testing with complex logic
Goal:
To deepen testing experience beyond the required 12 problems in part1JavaTests.
Purpose:
Focuses on property-based and fuzz testing, using randomized input generation to uncover edge cases and assertion violations.
Key Concepts Covered:
- Automated test input generation
- Invariant and property checking
- Randomized stress testing
Tools & Techniques:
- Property-based frameworks, jqwik
- Random test generators
- Integration with existing JUnit test flows
