Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Based on book "Effective Software Testing" by Dr. Maurício Aniche (ISBN9781633439931)

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.

Structure of book

✅ Format

All exercises follow Java 11 and Maven-based environments. Each solution includes:

  • solution_[problem name].md with analysis and explanation of a problem
  • Test files in JUnit 5
  • Source code fixes (if bugs are found)

📁 Folder Overview

part1JavaTests/

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/ with ExerciseName.java and ExerciseNameTest.java
  • solution_[problem name].md with:
    • Detected bugs and fixes
    • Test design rationale
    • Coverage reports
    • Mutation testing results

Tools Used:

  • Java 11
  • JUnit 5
  • Maven
  • JaCoCo
  • PIT + PIT JUnit5 Plugin

part2JavaTests/

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.


FuzzTesting/

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages