DocumentationDescription - Mutation Analysis - Publications - Features - ToDoList
ParTeG is a test generation tool that is able to satisfy control flow-based coverage criteria as well as boundary-based coverage criteria. The basic algorithm is based on the satisfaction of control flow-based coverage criteria: A selected coverage criterion is transformed into a test model-specific set of test goals. Each test goal references a certain element of the test model, e.g. the test goals for state coverage reference a single state of a state machine, each. From each of these goals, a path to the state machine's initial state is searched. If such a path could be found, then the corresponding transition triggers are used to generate a concrete test case. On the search backwards, the encountered guard conditions are transformed into conditions about input parameters. These conditions are used to apply boundary-based coverage criteria.
ParTeG is an Eclipse plug-in. It can be called from different views or diagrams: the state machine in the EMF tree view, from inside the state machine diagram, and from the file of the state machine diagram. The following picture sketches the different points to call the plug-in.
I also created a small video to show the points from where it is possible to call ParTeG. The video has been created with the outdated version 1.2.2 of ParTeG.
A more detailled description can be found in the publications.
The fault detection ability of a test suite is often measured with mutation analysis of the system under test (SUT). In mutation analysis, several mutation operators are applied to the SUT. The corresponding erroneous versions are called mutants. There are several case studies that show a correlation between a test suite's fault detection ability of mutants and the fault detection ability of real faults. There are also some tools to automate the mutation.
ParTeG supports two ways of mutation analysis: The first kind uses a mutation factory that returns a list of mutants. To generate the corresponding test suite, select "Java Mutation Analysis" for the output format. Two of such mutation factories are contained in the provided examples. The second kind uses the external tool Jumble. Jumble measures the fault detection ability of a JUnit test suite. You can use ParTeG in combination with Jumble by selecting "JUnit 3.8" for the output format and by selecting the name of the test suite [SUT_name + "Test"]. The following video shows the application of several coverage criteria and the subsequent mutation analysis with ParTeG 1.2.2.
The following publications are a direct result of the development of or the work with ParTeG. If you are interested in one of the papers, please let me know.
2009, October: "Influencing Factors in Model-Based Testing with UML State Machines: Report on an Industrial Cooperation", Models conference 2009 (Model Driven Engineering Languages and Systems)
2008, September: "Partition-Oriented Test Generation", workshop MoTes (Model-based Testing), Munich, Germany
2008, June: "Reusing State Machines for Automatic Test Generation in Product Lines", Model-based Testing in Practice (MoTiP), Berlin, Germany
2008, April: "Quality of Automatically Generated Test Cases based on OCL Expressions", ICST 2008, Lillehammer, Norway, (best student paper)
2008, February: "Automatic Test Case Generation from UML Models and OCL Expressions", Test-workshop at SE 2008, Munich, Germany
2007, October: "Deriving Input Partitions from UML Models for Automatic Test Generation", MoDeVVa 2007, Nashville, TN, USA.
The following features are already implemented in ParTeG: automatic creation of input partitions even for multiple interacting input parameters, several different search strategies, test goal prioritization, test model adaptations, derivation of state machine along inheritance relations between classes, and flattening of composite states. ParTeG is able to satisfy the following coverage criteria: State Coverage, Transition Coverage, Decision Coverage, masking MC/DC, and Multiple Condition Coverage. They all can be combined with the boundary-based coverage criterion Multi-Dimensional and Multi-Dimensional (at boundaries). It also supports the output formats JUnit (3.8, 4.3), Java Mutation Analysis, and CppUnit. The following picture shows the mask of ParTeG.
Several issues of ParTeG are known. The presented ToDoList shows the plan for the future implementations: In the next few days, some examples to show the test generation with interacting input parameters are added. Furthermore, it is planned to create an extension point for arbitrary input or output definitions or to provide a generic XML output. In the distant future, I also plan to create a tutorial...
If you have any further suggestions, please write me an email.