Have you ever asked a tester what the biggest hurdle is when handling a new project for a client? In my experience, test data preparation is never one of the answers. But, should it be?
Most (if not all) testers would agree that:
Good Product=Good Testing… and Good Testing=Good Test Data
Therefore, Good Product = Good Test Data
This simple logic implies that test data is an important factor to a project’s success. For example, one of our clients had a dedicated test data prep team signaling that they clearly understood the benefits of producing good test data. The emergence of test data management procedures and tools in recent times also indicates that test data preparation is an important and at times, challenging task.
So if test data prep is important, then why do testers never think of it as a challenge until they encounter a problem? Following are some pointers to help better prep your test team:
Learning before executing
What is the difference between data and information? Simply put, information is data with meaning attached. If testers input data into the system without understanding the reasoning behind it, the data will be ineffective. So what does the tester need to know?
There are four critical areas:
- Learning the domain: A new domain always poses a great challenge for a tester as it is difficult to know what a norm is and isn’t for the application being tested. Through past experience, I found that asking questions that will relate the test case to how it is performed in real-time is helpful. Our team documents the findings and shares with each other.
- Learning the terminology: Companies generally use numerous abbreviations in their documentation. It is difficult for a resource to grasp these without any external help and use it effectively while still trying to stick to the deadlines. To help learn the terminology, our team creates a quick reference document.
- Learning the tool: When our SDLC team began working on the engagement, we were challenged by having to learn old technology to access a database (AS400). As we progressed within the project, we learned to document the commands, function keys and queries which increased our efficiency and productivity.
- Finding interdependency with other systems: Some tests require the data to flow from the upstream system which we have no control over. Therefore, the tester needs to collaborate with other client departments and work together to get the appropriate data in the required form.
Using test data:
Just because the testers have become informed and effective, doesn’t mean testing will be easy. Here are some common data problems that may be encountered during testing:
Data inconsistencies: Scripts and documentation provided to the tester are usually outdated, requiring the tester to spend a sufficient amount of time clarifying and updating information prior to testing.
Multiple data types: The test data may not be simple and straightforward. You may need to learn new terminologies, patterns, standards, etc. Some scenarios may not even be possible to test in the test environment. In this instance, the tester will need to devote a good amount of time to understand the scenarios and come up with a new and efficient way to prepare the data.
Manipulating test data: The access to manipulate the data, in many projects, is under a single coordinator, therefore, the tester will not always be able to manipulate the data, as required. At SDLC, one of our teams had to learn AS400 to manipulate the data in the test database before figuring out what specifically needed to be changed. Significant amount of time was spent on learning the databases names, table relations, column data, and their correspondence to the application, their properties and constraints. After several training sessions, our team was able to pick it up and test with ease.
Inefficient processes: Another challenge that we faced was dealing with inefficient processes. By challenging the client’s current process and introducing a new, more efficient model, our team was able to produce a quicker way for testers to fill in accurate data and therefore, accurate test data in a single step, which was a vast improvement from the old method.
Meeting the challenge – although you can (and probably will) run into some of these challenges, here are some tips to help you tackle them:
Be creative: Collaboration between testers for test data preparation may not always be feasible. At SDLC, when we test a client application we typically use barcodes as test data and exchange data amongst the testers to increase efficiency while still retrieving good coverage. We also set up a pre-test environment where we manipulate the data to make permutations and combinations of different pieces of the barcode, providing a vast selection of barcodes to use.
Developing new tools to enhance efficiency: At SDLC, we have a high performing development team that created a simulator which fabricated all of the processes that happened in the up-stream system. Using this tool, we had ready customized data without having to be dependent upon other teams. We also used a barcode generator which took care of the hidden logics and made barcode generation easier.
Reusability: Prepare data in a way that it can be reused. A normal practice in the IT industry is to switch between servers for releases and many times the data will remain in a way that might meet your requirement. By proactively saving the information with appropriate naming conventions, you will be able to build the data again with fewer efforts.
Preparing for the future
Documenting: Document important sections of application details, procedures, queries, and glossaries into a quick fact sheet and training document that can be shared with the team. At times, full documentation may be overwhelming for newbies in the field. In that case, the quick fact sheet will serve as a way to answer common questions more efficiently.
Data management: As the application and testing teams grow bigger, it is best practice to formulate a way to manage the test data in an effective manner. Each industry standard will not be applicable to all cases, therefore, processes may need to be customized to meet project requirements. Look for gaps and ways to overcome them.
Test data preparation is a critical component of the entire preparation process and it is important to any quality assurance process. Adopting a good mix of forethought, creativity and best industry practices is the best way to avoid those ever-present challenges and create an efficient process.
Poornima Kanthaprasad is a Consultant at SDLC Partners, a leading provider of business and technology solutions. Please feel free to contact Poornima at firstname.lastname@example.org with any questions on this blog post or to further discuss software testing.