Symbolic execution of NoSQL applications using versioned schemas
Hendrik Winkelmann, Herbert Kuchen · 2021
NoSQL databases can contain complex and heterogeneous data entries in a non-normalized fashion. Contrary to relational databases, often an explicit schema is optional and differently structured entities can be expected in the same data collection. If an explicit schema is absent, the consuming applications are forced to extract and make sense of the implicit schema without the support of the database itself. Automatic tools for systematic test case-generation currently do not support validating this error-prone procedure. To address this issue, we propose an approach applicable to NoSQL databases. We furthermore present a prototypical glass-box test generation tool, JaSoN, an extension of Symbolic Pathfinder for Java. JaSoN generates test cases for applications using MongoDB and accounts for different schema versions for entities of the same type. For this, the real MongoDB instance is replaced with a symbolic data store by mocking relevant MongoDB interfaces and combining this mock with custom Java bytecode.