Testing of Concurrent and Imperative Software using CLP
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.