FMIMOBSTER (Functional Mockup Interface Model Based Tester) is a tool that applies the principles of model based testing to improve the conformance of Functional Mockup Units to the Functional Mockup Interface Standard.

Claudio Gomes c3b68c9f08 updated license to MIT 6 years ago
lib eefcb19962 initial import 6 years ago
project eefcb19962 initial import 6 years ago
src eefcb19962 initial import 6 years ago
.gitignore eefcb19962 initial import 6 years ago
LICENSE c3b68c9f08 updated license to MIT 6 years ago
README.md eefcb19962 initial import 6 years ago
build.sbt eefcb19962 initial import 6 years ago

README.md

FMIMOBSTER

FMIMOBSTER (Functional Mockup Interface Model Based Tester) is a tool that applies the principles of model based testing to improve the conformance of Functional Mockup Units to the Functional Mockup Interface Standard.

This is a command line application that tests an FMU. It uses the a slightly modified version of the tool [modbat] to generate random walks in a graph that represents all possible interactions with an FMU.

Such graph looks like the following.

fmi

Each edge refers to a method that is implemented in a Scala class.

The graph is enriched with state machines from other files. For example:

free

You can see the files used to created the state machine in [graphs].

If, during a test, the unexpected happens, the tool produces a error trace and a seed, that allows for the reproducibility of the test.

Installing and Running the App

Download the app jar.

Run the following, for the list of commands:

java -jar FMUAnalyzer-assembly-X.Y.jar --help

where X.Y denotes the app's version.

Experiment Workflow

To run the model based testing on an FMU in path path/to/fmu.fmu, the following command is used:

java -D"org.slf4j.simpleLogger.defaultLogLevel=trace"  -jar .\FMUAnalyzer-assembly-X.Y.jar mbt -d path/to/fmu.fmu -n 10 -l 10 -o "results"

where

-n is the number of random walks to produce
-l is the maximum number of self-loops executed
-o is the results folder
X.Y denotes the app's version

While the app supports running a command in a directory of FMUs, it is advised to run the app for each FMU individually, and in a separate process. This is because some FMUs might crash the java process, which means the other FMUs did not get tested.

Unfortunately, the app does not spawn separate processes for each walk.

Setup Dev Env

This is a simple sbt project.

See build.properties and build.sbt for sbt and scala versions.

The following will produce the jar of the app.

sbt assembly