Testing of Concurrent and Imperative Software using CLP

Elvira Albert


Testing is a vital part of the software development process. In static testing, instead of executing the program on normal values (e.g., numbers), typically the program is executed on symbolic variables representing arbitrary values. Constraints on the symbolic variables are used to represent the conditions under which the execution paths are taken. Static testing tools can uncover issues such as memory leaks, buffer overflows, and also concurrency issues. Due to its inherent symbolic execution mechanism and the availability of constraint solvers, Constraint Logic Programming (CLP) has a promising application field in static testing. In this talk, we will describe a fully CLP-based framework to static testing of a today's imperative language. We will also discuss the extension of this framework to handle actor-based concurrency, used in languages such as Go, ActorFoundry, Erlang, and Scala, among others.