on Monday 13th of November at 10:00 I will defend my Ph. D. thesis
entitled "Modeling Examples to Test and Understand Software".
The defense will take place in room 003 in the IWI building on
Engehaldenstrasse 8, 3012 Bern. Please find the abstract below.
After the defense, there will be an apero in the Cafeteria of the
building S14 on Schutzenmattstrasse 14.
Everybody is cordially invited to the defense and to the apero.
With best regards
Software Composition Group
One of the oldest techniques to explain abstract concepts is to provide
concrete examples. By explaining an abstract concept with a concrete
example people make sure that the concept is understood and remembered.
Examples in software can be used both to test the software and to
illustrate its functionality. Object-oriented programs are built around
the concepts of classes, methods and variables, where methods are the
atoms of the functionality. But the meta-models of object-oriented
languages do not allow developers to associate runnable and composable
examples with these concepts and particularly not with methods.
Unit tests on the other hand, assure the quality of the units under test
and document them. Not being integrated into the language, unit tests are
not linked explicitly to their units under test which makes it
unnecessarily difficult to use them for documenting, typing and debugging
software. In addition they are not composable making it hard to develop
higher level test scenarios in parallel with higher level objects.
In this thesis we analyze unit tests to learn about implicit dependencies
among tests and from tests to the methods under test.
We develop a technique to partially order unit tests in terms of their
covered methods, which reveals possible redundancies due to the lack of
composability. We show how partial orders can be used to debug and to
We then develop a taxonomy based on several case studies revealing that a
high fraction of unit tests already implicitly focuses on single methods.
We show that the rest of the tests can be decomposed into commands
focusing on single methods.
We build a meta-model based on our findings of analyzing test
interdependencies which establishes how tests can be explicitly linked to
their method under test and how they can be composed to form higher-level
We explain how the problems of missing links between tests and units under
test are solved using our meta-model. Furthermore, we implemented the
meta-model and a first user interface on top of it to give first evidence
of how our model supports the developer.
Show replies by date