Donald Maffly, Huron Consulting Group
Even in today’s modern software engineering world, there still exist obstacles that confound testers’ ability to generate test data—data that is complex and precise but also that can be generated in mass quantity quickly.
In data warehouse applications, which typically contain copious historical data, it is very cumbersome and time consuming to generate data through the ‘front door’ of these systems via import files and simulated user interaction. This approach can also have the shortcoming of not easily allowing application testers to land data on precise points called for in functional testing.
Furthermore, third party data generation tools, while excelling at generating copious data, generally don’t provide application testers customization hooks that are powerful and expressive enough to generate meaningful data—particularly data where relationships are complex and where understanding of the data requires application knowledge (e.g. business logic) not found in a database schema.
To address this problem, we have taken an approach using constraint logic programming; it is loosely inspired by prior work done in the area of Reverse Query Processing (RQP). The general idea is that if a tester can write a SQL SELECT query for the test data s/he targets, then using RQP the tester has the tool to generate data sets that fit that query.