Evaluation of constraint programming techniques for automated test case generation

Some glass-box test case generation tools (glass-box ATCG tools) use symbolic execution to gain insights into the internal structure of programs under test. In order to follow a particular control flow path through a given program during regular execution, a sequence of conditions must be fulfilled that corresponds to the jump conditions along the path. Consequently, every possible execution path through a computer program corresponds to an individual set of conditions. As a result, automated glass-box test case generation tools that are based on symbolic execution require constraint solving techniques, as each set of conditions can be formulated as a constraint system. In order to generate specific input data for test cases of feasible paths, the constraints need to be solved by a constraint solver, thus assigning valid values to the logic variables.

Multiple constraint solving techniques exist for different kinds of constraint programming. Correspondingly, many (open source as well as commercial) libraries exist that can be leveraged by programmers of imperative languages. The glass-box test case generation tool Muggl, which is developed at our chair, currently employs two constraint solvers from which the user can choose:

  1. "Muconst", a constraint solver that was developed with the Muggl use case in mind, and
  2. "JaCoP", a general-purpose open source constraint solver library which was adapted to Muggl.

A thesis would integrate one (bachelor) or more (master) additional constraint solver alternatives and perform an evaluation of the solvers' performance values in the context of automated test case generation.