Pre-Proceedings of the 18th International Symposium on Logic-Based Program Synthesis and Transformation pages:104-120
Logic-Based Program Synthesis and Transformation edition:18 location:Valencia, Spain date:17-18 July, 2008
In this work, we consider the automatic generation of test
inputs for Mercury programs. We use an abstract representation of a program that allows to reason about program executions as paths in a control-ﬂow graph. Next, we deﬁne how such a path corresponds to a set of constraints whose solution deﬁnes input values for the predicate under test such that when the predicate is called with respect to these input values, the execution is guaranteed to follow the given path. In our approach, we use CHR to solve the constraints and generate the
corresponding test inputs. The method allows for algorithms constructing sets of paths (and hence the corresponding test inputs) guided by well-known test coverage criteria addressing structural properties of the code such as statement, branch or path coverage. The approach is similar to existing work for imperative languages, but has been considerably adapted to deal with the speciﬁcities of Mercury, such as symbolic data representation, predicate failure and non-determinism.