A Direct Symbolic Execution of SQL Code for Testing of Data-Oriented Applications
Micha\"el Marcozzi, Wim Vanhoof, Jean-Luc Hainaut

TL;DR
This paper introduces a direct symbolic execution method for SQL code within applications, enabling automatic test data generation that includes valid database content, improving testing of data-oriented software.
Contribution
It presents a novel symbolic execution approach for database manipulation code integrated with traditional program analysis, using relational constraints and SMT solvers.
Findings
The approach generates meaningful test data including valid database content.
The method is scalable and more efficient with Z3 solver compared to Alloy.
Experimental results demonstrate effective test data generation in reasonable time.
Abstract
Symbolic execution is a technique which enables automatically generating test inputs (and outputs) exercising a set of execution paths within a program to be tested. If the paths cover a sufficient part of the code under test, the test data offer a representative view of the program's actual behaviour, which notably enables detecting errors and correcting faults. Relational databases are ubiquitous in software, but symbolic execution of pieces of code that manipulate them remains a non-trivial problem, particularly because of the complex structure of such databases and the complex behaviour of SQL statements. In this work, we define a direct symbolic execution for database manipulation code and integrate it with a more traditional symbolic execution of normal program code. The database tables are represented by relational symbols and the SQL statements by relational constraints over…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Software Reliability and Analysis Research · Software Engineering Research
