Test data management is a key factor in efficient testing. You need to specify all the data a test requires to be executed effectively and you will need to ensure that all that data will be available during each execution of the test. If you can’t provide adequate test data, your testers will have to find or create their own test data each time they execute a test, making the result of the test highly dependent on their interpretation. Automated tests, however, won’t run at all if you don’t provide the required test data.
Looking at automated tests you have the chance to integrate your test data management into your test automation framework. But what would an effective process of such an integration look like?
Professional test data management is not achieved by simply providing a database with some test data for your system under test. You need to ensure repeatability of tests, independency of tests, realistic test data, archivability of results, compliance with data privacy laws, extensibility for new tests, … and, of course, comprehensibility.
Together with my colleague Barbara Göller, I wrote an article to illustrate the process we are currently implementing for one of our customers. The process combines the use of production data as well as synthetic data and involves the customer to gain realistic test data. The (German) article Keine Daten? Keine Tests! Effizientes Testdatenmanagement was published in OBJEKTspektrum – Testing/2016.
By using said approach, the test data required by a test is programmatically created in the arrange part of the automated test. The test data creation API is provided for the language of the test automation (here: C#) thus providing a seamless integration into the automated test.
Note that only data required specifically by the test needs to be specified giving the source code a documenting aspect. Everything that is not specified but required by the system under test respectively the underlying databases is handled by the framework.