coffee4j

Combinatorial Test and Fault Characterization Framework

coffee4j is a Java-based framework for combinatorial test input generation and fault characterization. It is based on a fast implementation of the well-known IPOG algorithm and supports constraint handling, robustness testing and fault localization. A JUnit 5 extension seamlessly integrates combinatorial test input generation, fault characterization and automated test execution.

Quick Start

To quickly start, use the following Maven dependency in your project.

<dependency>
  <groupId>de.rwth.swc.coffee4j</groupId>
  <artifactId>coffee4j-junit-engine</artifactId>
  <version>1.0.8</version>
</dependency>

Create a new JUnit 5 test as follows. The annotations on testGreetings indicate that it is a combinatorial test method, i.e. a test method which is executed several times with different values for its parameters. The static method model describes the input parameter model and the testing strength. Based on that model, test inputs are generated and the testGreetings method is executed once for each generated test input.

class GreetingsTest {

    private static InputParameterModel model() {
        return inputParameterModel("example-model")
                .positiveTestingStrength(1)
                .parameters(
                        parameter("Daytime").values("morning", "evening"),
                        parameter("FirstName").values("John", "Jane"),
                        parameter("LastName").values("Doo", "Foo")
                ).build();
    }

    @CombinatorialTest(inputParameterModel = "model")
    @EnableGeneration(algorithms = { Ipog.class })
    void testGreetings(
            @InputParameter("Daytime") String daytime,
            @InputParameter("FirstName") String firstName,
            @InputParameter("LastName") String lastName) {
        System.out.println("Good " + daytime + " " + firstName + " " + lastName);
    }
}

For more information, please refer to the Getting Started section and the Project Template.

 
The website is build with Jekyll using the Hydeout theme. Icon designed by Freepik from Flaticon. Disclaimer.