Logic Programming; Answer-Set Programming; Mutation Testing; Random Testing; Structural Testing; Unit Testing; Program Annotations; Combinatorial Interaction Testing; Event-Sequence Testing; Programming Support
Answer-set programming (ASP) is a prominent approach for declarative problem solving with roots in non-monotonic reasoning, knowledge representation, and logic programming. As a problem solving paradigm, it means that properties of problem solutions are modelled using declarative rules so that an ASP solver can then be used to search for solutions which are referred to as answer sets. The success of ASP is witnessed by a large and indeed ever growing number of applications in various domains including planning, diagnosis, systems biology, configuration, language processing, and many more. While research so far focused more or less on theoretical foundations, solver technology, and applications, there is comparably little work on development support although this is a clear desideratum of the community. Testing is an essential part of every software development process, and no system for quality management can spare testing completely. Although it can be argued that the declarative nature of ASP reduces the need for testing to some extend, errors sneak also into ASP specifications and adequate methods for testing are required for ASP no less than for conventional imperative languages. Developing methods for systematic testing of ASP programs is therefore the foremost objective of this thesis. We lay down the foundations for testing answer-set programs, develop respective methods and methodologies, and evaluate the proposed approaches. As it turns out, many methods for testing ASP can be effectively realised using ASP itself. We go beyond testing for ASP and apply ASP-based methods to tackle challenging problems from the field of general software testing. In particular, we use ASP to address the problem of event-sequence testing which requires the generation of certain combinatorial designs that can be expressed using ASP quite conveniently.