A interesting discussion on Linkedin concerning tools, strategies or techniques required for data-intensive application prompted me to respond as follows:
The following is what I would suggest as part of the high-level strategy.
- Install the db / dbs based on instructions received from dev team(s) (as will be sent to the customer) and as per the db schema(s) (both used by test team as available in version control).
- Ensure that scripts for putting static data (reference data required with code to start transaction processing) is available as such or via excel sheets to ensure a consistent setup. For multiple interfacing applications/modules ensure sequencing (of say inserts) is tested. Ensure availability of roll-back scripts to mitigate failure.
- Ensure availability of data which is close to production and representative to ensure consistent behaviour but not so huge in size or complexity to risk problems during this early testing.
- If possible automate the above to allow quick and correct setup which works from day 1 hour 1 all the time.
- Write tests to sanity check the application with available data and ensure that the system broadly works. These scenarios would be high level business workflows (application specific and/or designed to check interfaces) expected to not fail at any time AND which exercises the data available.
- If applicable run relevant reports and save them for compare checks after every setup and run.
- If possible automate step 5 and 6.
- Have some queries (baselined over a period of time) recorded on specific tables to generate count of records which validate and express correctness. You may have 2 sets of these scripts – one after setup and another after initial tests.
ETL specific applications would entail checks which criss-cross across modules and application as a whole.
Tools maybe used based on project specifics.
Follow the complete discussion here