Automatically Generating Complex Test Cases from Simple Ones

PhD defense

My PhD work has focused on the problem of generating complex test cases automatically by exploiting information available in existing unit test cases. In the work, I explored several directions in the area of Software Testing and Analysis: analysis of software artifacts, program analysis, and automatic test case generation.

During my PhD I proposed, implemented and validated an approach FUSION for automatic generation of complex (integration) test cases by combining information extracted from simple (unit) ones.

Why is it important?

Test cases of different kind and granularity are important to test software systems thoroughly

Software projects produce many test cases of different kind and granularity to thoroughly check the system functionality, aiming to prevent, detect, and remove different types of faults. Simple test cases exercise small parts of the system aiming to detect faults in single modules. More complex integration and system test cases exercise larger parts of the system aiming to detect problems in module interactions and verify the functionality of the system as a whole.

Generating complex test cases is expensive and difficult

Test cases embody up to the half the overall software development cost and effort and the test case complexity comes at a cost – developing complex test cases is a laborious and expensive task that is hard to automate.

Modern applications are provided with many unit test cases that contain useful information

Test cases capture and represent the domain knowledge of software developer, her assumptions on the implicit and explicit interaction protocols in the system, and the expected behavior of different modules of the system in normal and exceptional conditions. Moreover, test cases capture information about the environment and the data the system operates on. As such, together with the system source code, test cases integrate important system and domain knowledge.

Solution

The core idea behind the approach comes from the study of many unit and integration test cases that revealed structural interrelations between them: Test cases contain information about object interactions that, when used appropriately, can reduce the effort to generate new test cases.

The approach defined in the PhD thesis leverages classic analysis techniques and generates effective integration test cases.

Dissertation committee

Research advisor: Prof. Mauro Pezzè, University of Lugano, Switzerland

Prof. Mark Harman, University College London, United Kingdom

Prof. Gregg Rothermel, University of Nebraska-Lincoln, USA

Prof. Mehdi Jazayeri, University of Lugano, Switzerland

Prof. Matthias Hauswirth, University of Lugano, Switzerland

Selected publications

Examples of integration faults

The following github repository stores some examples of real-life integration faults. Feel free to contribute with new examples.

Categories:

Updated: