A lot of test automation engineers get confused when it comes to Data Driven Testing (DDT)
- How tests should be structured?
- What seed data to use?
- When and How to load Data?
- When to flush data?
- How to bind test scripts with test data?
When and How to load Data?
Well, it is imporant to understand data scope in conjunction with the test case and the automation strategy to address the "WHEN" question. There are several ways to address this.
- DS1: Consider most of your data as "seed data" and load it upfront before actually kicking off your test automation. In this case, data cleanup is done after test scripts exit. This is the most preferrred strategy for Load & Performance testing. Data can be loaded directly into the database using SQL scripts or by running data suite. Data suite executes a set of test cases that takes care of loading and polulating the seed data.
- DS2: Load data for every test suite and cleanup at the end of the suite. Make sure environment is clean for the next suite to run.
- DS3: Load data for every test case. Every test is independent and takes care of its own data. This strategy is very cumbersome as the data is not leveraged among test cases.
- DS4: Combo Strategy. Load high level data (which is going to be used most often) upfront and leave rest of the data to every test case.
Note: Remember, in DDT, you only need to worry about the end-user-data. Auto generated information, like session-ids, does not need to be part of the DS, unless you plan to skip some steps. Your automation framework must provide mechanisms to pass auto-generated data across test cases and test suites.
Data Strategies can get really complex, and sometimes even more complex than your actual test cases. Try not to drift away too deep into fancy data strategies and loose sight of the real thing!