Testing Data Consistency of Data-Intensive Applications Using QuickCheck

https://doi.org/10.1016/j.entcs.2011.02.010Get rights and content
Under a Creative Commons license
open access

Abstract

Many software systems are data-intensive and use a data management systems for data storage, such as Relational Database Management Systems (RDBMS). RDBMSs are used to store information in a structured manner, and to define several types of constraints on the data, to maintain basic consistency. The RDBMSs are mature, well tested, software products that one can trust to reliably store data and keep it consistent within the defined constraints.

There are, however, scenarios in which passing the responsibility of consistency enforcement to the RDBMS is not convenient, or simply not possible. In such cases, the alternative is to have that responsibility at the business logic level of the system. Hence, from the point of view of testing data-intensive applications, one of the most relevant aspects is to ensure correctness of the business logic in terms of data consistency.

In this article, we show how QuickCheck, a tool for random testing against specifications, can be used to test the business logic of an application to increase confidence on data integrity. We build an abstract model of the data containing the minimum information necessary to create meaningful test cases, while keeping its state substantially smaller than the data in the complete database. From the abstract model we automatically generate and execute test cases which check that data constraints are preserved.

Keywords

Software verification
Software testing
Model Based Testing
Software Tools
QuickCheck

Cited by (0)

1

This research was partly sponsored by three grants: FARMHANDS (MEyC TIN2005-08986 and XUGA PGIDIT07TIC005105PR), EU FP7 Collaborative project ProTest (grant number 215868), and AMBITIIONS (MICIN TIN2010-20959).