Files
Abstract
Testing is essential for quality assurance of database applications.To test the quality of database applications, it usually requirestest inputs consisting of both program input values andcorresponding database states. However, producing these tests couldbe very tedious and labor-intensive in a non-automated way. It isthus imperative to conduct automatic test generation helping reducehuman efforts.The research focuses on automatic test generation of both programinput values and corresponding database states for testing databaseapplications. We develop our approaches based on the DynamicSymbolic Execution (DSE) technique to achieve various testingrequirements. We formalize a problem for program-input-generationgiven an existing database state to achieve high program codecoverage and propose an approach that conductsprogram-input-generation through auxiliary query construction basedon the intermediate information accumulated during DSE'sexploration. We develop a technique to generate database states toachieve advanced code coverage criteria such as Boundary ValueCoverage and Logical Coverage. We develop an approach thatconstructs synthesized database interactions to guide the DSE'sexploration to collect constraints for both program inputs andassociated database states. In this way, we bridge variousconstraints within a database application: query-constructionconstraints, query constraints, database schema constraints, andquery-result-manipulation constraints. We develop an approach thatgenerates tests for mutation testing on database applications. Weuse a state-of-the-art white-box testing tool called Pex for .NETfrom Microsoft Research as the DSE engine. Empirical evaluationresults show that our approaches are able to generate effectiveprogram input values and sufficient database states toachieve various testing requirements.