*Diploma thesis*

(Original Title:Konzeption und Implementierung eines Verfahrens zur Analyse von Modellverfeinerungen und zur Testdatenerzeugung)

**Abstract**

Model based testing is a technique that constructs test cases for a software system from
models created during the design phase. It is intended to be a efficient way to find suitable
test suites during early stages of development.

Gradually refining an initial coarse model towards a complete description of the system
is a quite common approach. This raises the question, how efficiently model based test
suites from coarse models uncover software faults compared to those derived from more
detailed models. In this context, a relation between a testcase from a coarse model and
test cases based on a refined model is wanted.

First, the term refinement of a model is defined as a special case of generally changing a
model. In order to provide a certain level of universality, this definition is first constructed
for directed multigraphs. A set of criteria that discriminate a refinement from other classes
of changes of graphs is introduced for that purpose.

That concept is afterwards transfered to UML behavior diagrams. To achieve this, models
are intuitively assigned an underlying graph. Two models represent a refinement if
their underlying graphs fulfill the criteria of the refinement of graphs and if, additionally,
some further criteria are fulfilled by those elements of a model that have no direct representation
in the underlying graph. These are, for example, triggers, guards and effects. The
definition is designed to be transitive. That means that a refinement of a refined model is
also a valid refinement of the original model.

Now, that the refinement of models is defined, a relation between paths through a coarse
model and paths through a corresponding refined model can be established. That relation
also implies a relation between the test cases that cover these paths.

The process of deducing the corresponding test cases for a fine model from a given test
case in a coarse model according to that relation is called concretizing test case generation.

Three different variants of implementing the concretizing test case generation are presented.
An application of those to some UML diagrams is described. Properties of the
incremental test case generation in general and the advantages of each variant are discussed.

**Author: **Alexander Reuß

**Tutor: **Dipl.-Inf. Dirk Wischermann

**In Cooperation with: **AFRA GmbH Erlangen