Covana: Precise Identification of Problems in Pex

Xusheng Xiao, Tao Xie, Nikolai Tillmann, and Jonathan Halleux
North Carolina State University, USA; Microsoft Research, USA

Achieving high structural coverage is an important goal of software testing. Instead of manual producing tests that achieve high structural coverage, testers or developers can employ tools built based on automated test-generation approaches, such as Pex, to automatically generate such tests. Although these tools can easily generate tests that achieve high structural coverage for simple programs, when applied on complex programs in practice, these tools face various problems, such as the problems of dealing with method calls to external libraries or generating method-call sequences to produce desirable object states. Since these tools are currently not powerful enough to deal with these various problems in testing complex programs, we propose cooperative developer testing, where developers provide guidance to help tools achieve higher structural coverage. In this demo, we present Covana, a tool that precisely identifies and reports problems that prevent Pex from achieving high structural coverage. Covana identifies problems by determining whether branch statements containing not-covered branches have data dependencies on problem candidates.