Tool for generating and executing test cases.

Test models are expressed as Java programs, which the test generator executes based on annotations defined in the model. The test generator can be configured with different algorithms to generate tests in different ways.

The main point with this approach is to provide:

Example test model:

public class ExampleModel {
  private final Requirements req = new Requirements();
  private int counter = 0;

  public void start() {
    counter = 0;

  public boolean toDecreaseOrNot() {
    return counter > 1;

  public void decreaseState() {
    System.out.println("- " + counter);

  public boolean shallWeIncrease() {
    return counter > 0;

  public void increaseState() {
    out.println("+ " + counter);

The tests can then be executed by configuring the generator such as:

  public static void main(String[] args) {
    OSMOTester tester = new OSMOTester();
    tester.addModelObject(new ExampleModel());
    tester.setAlgorithm(new RandomAlgorithm());
    tester.setTestEndCondition(new Length(100));
    tester.setSuiteEndCondition(new Length(100));

This generates 100 tests, each with 100 steps. Each step is chosen randomly based on the set of enabled steps.


Currently the suggested method is to use the Maven repository. Either as a dependency or download the jar file from the repository. Dependency:


or direct link

The required core dependencies should be only Log4J2 (api and core jars). Some of the reports use Velocity, and some of the JUnit integration uses JUnit. But those should not be strict requirements if you do not use those features.


Some documentation exists here:


LGPL License