The most commonly used methodology for validating the quality of software is testing. Conceptually, testing is simple. In practice, however, testing has two key limitations: it is expensive, often amounting to over a half of the development cost, and ineffective, often failing to find crucial bugs that can cause significant damage.
This project addresses these limitations by developing a novel test automation framework based on test summaries -- abstract properties of desired tests. Developers write summaries as logical constraints that define desired inputs and properties to check, and the tools perform testing against dense suites that are likely to find many bugs. The project develops: (1) core algorithms for effective systematic testing, which generate high quality inputs, perform deep white-box checking, and synthesize executable test oracles; (2) optimization strategies for efficient systematic testing, which scale it to large applications; (3) incremental techniques for supporting evolution, which provide efficient test updates with respect to code changes; and (4) infrastructure support for enhancing usability, which assists developers with writing test summaries. Case studies using a variety of applications are used for evaluation.
Systematic testing using test summaries will substantially increase test coverage and accuracy, which will significantly improve software quality. The PI's industrial collaborations and participation in UT's Executive Masters program enable a swift technology transfer to industry.