Navigation auf uzh.ch
A common technique in software engineering is functional testing (e.g. unit testing), whereas non-functional testing such as performance testing is less-well understood. Hence hardly any projects have a test suite that focusses on performance [1]. Benchmarks are hard to write, because developers have to know implementation internals of programming languages or their runtime environments (i.e. virtual machines) as well as rigorous performance measurement techniques to collect reliable results.
This master project’s goal is to either take an already existing test suite (e.g. JUnit test suite) or identify common paths through a method to test, and generate from those a good benchmark test suite. The students are expected to understand the problems of performance testing and differences to unit testing, in order to identify suitable unit test cases that serve as a basis for the benchmark generation. The second/alternative approach finds the "usual" path through a method, either from execution data (e.g., production system or unit test suite) or by applying symbolic execution, and generates a work load (parameter values) from it. The main outcome of the project should be a code generator that takes a functional test suite or a method set to be tested, and generates a performance test suite that can be used to assess software performance on a small granular level.
The main tasks of this project are:
This project is also available as a master thesis in reduced size and slightly different focus.
Posted: 12.3.2018
Contact: Christoph Laaber