Part 2: The Importance of Test Data Management for Development and Operations
In my previous blog on The Importance of Test Data Management for DevOps Part 1, I discussed how Test Data Management tools complement test management and automation tools to support DevOps.
I discussed the following key capabilities of Test Data Management that fills the gaps left by test automation solutions:
- Sensitive Data Protection
- Test data generation
- Test data maintenance
- Test data coverage analysis
- Test data lifecycle management
- Support for collaboration
- Self-service for testers
- Integration with Test Automation and DevOps tools
I also discussed the first three key capabilities in more detail in Part 1 of my blog. Here, I will continue to discussion on the rest of the key capabilities.
Test Data Coverage Analysis
While test path coverage analysis is quite common, the associated analysis for test data coverage is not often done. Both are needed. Otherwise, how would you know if your test cases and data cover all scenarios? You need to be able to analyze and visualize the completeness of your test data and based on the analysis, augment your test data set accordingly, with additional production data or with synthetic data.
The complement to test data coverage analysis is Test Data Optimization. It is typical to optimize your test environments to ensure good but optimized coverage of the combination of the software and hardware stack you support (e.g. server operating system, database type, browsers, etc.). However, optimizing the set of test data you use is just as important to improve test efficiency.
Test Data Lifecycle Management
Test data goes through its lifecycle as it’s created, manipulated, augmented, used in test runs, and reset. A Test Data Warehouse supports the test data lifecycle management by enabling testers to run their test cases and once the test data has been modified, reset the test data with the original set that was stored in the test data warehouse so that they can rerun test cases.
As the production application goes through its lifecycle, the test data sourced from production may become stale and need to be refreshed with new test data from production systems.
A Test Data Warehouse simplifies the process of augmenting the test environment after a refresh with additional test data sets by maintaining the test data augmentation.
Support for Collaboration
As multiple testers are using a single test environment to execute their set of test cases, they need to have test data isolation within their environment so that they’re not running multiple test cases against the same test data segment. Otherwise, test run inconsistencies can occur as collisions happen. To enable collaboration, testers should be able to reserve and isolate their test data set from being used by other testers within the same environment.
Testers may also need to collaborate with other functions, such as DBAs, and test data architects to request additional test data to be created, augmented, or provisioned. An automated workflow to track requests and task lists to be worked on by users and roles can significantly increase productivity.
Self Service for Testers
Although test environment and test data provisioning is usually done by a database administrator or test data architect, testers also need to become more self-sufficient to provision their own test data sets to speed up testing. To enable more self-service, testers need to be able to:
- Find and reuse test data sets that have been created before by himself or other testers
- Request for test data to be provisioned from other sources or generated by test data architect.
- Reset their test data from the original stored in the test data warehouse
- Register and reserve test data they’re using to test within their test environment to prevent collision and usage by other testers
- Tag and label their test data with the associated test case names so that they can easily find it for later reuse.
All of these services for testers can increase test productivity. These services may be offered through a portal for testers. Such a portal also supports collaboration among testers as well as between testers, test data architects, and DBAs.
Integration with Test Automation and DevOps Tools
Multiple tools are used for source code control, build automation, maintaining test cases, maintaining test data, test automation, and continuous integration. All these tools need to be used together and in a connected manner to improve test productivity. Integration between test data management and test automation tools enable association of test cases with test data sets and finding the right test data from a test data warehouse within a test automation tool.
As a set of test cases are run when code is checked in, the associated test data should be automatically pulled for the test run. Similarly, during regression tests during builds and integration testing, test data association and automation becomes seamless with integration across these tools.
Test data automation through test data management goes hand-in-hand with test automation to speed up application software delivery. Test data generation, maintenance, coverage analysis and optimization, collaboration support, self-service for testers, and integration across the various test and DevOps tools are some of the key capabilities required for effective test data management. Last but not least is the need for sensitive data protection in development and test environments using Persistent Data Masking.
For more information, watch our archived webinar “Power DevOps Efficiency and Automation with Seamless Data Management“