At STARWEST 2012, Rajini Padmanaban is delivering a session titled “The Art of Designing Test Data” and she recently spoke with TechWell Editor Noel Wurst to share her knowledge on this topic.
As Director of Engagement, Global Testing Services, at QA InfoTech, Rajini Padmanaban leads the engagement and relationship management for some of QA InfoTech's largest and most strategic accounts. Rajini has more than ten years of professional experience, primarily in the software quality assurance space.
Noel Wurst: What factors go into making test data truly “effective”?
Rajini Padmanaban: By definition the word “effective” means something that is successful in producing intended results. Test data is said to be effective when it is a set of inputs that are fed into a program to produce desired results. By “desired” I do not mean a test case that passes; it is a test case that passes or fails but helps us understand system behavior under the given scenario to verify whether it has been implemented correctly or not. Some of the core factors that make test data effective include:
1. Whether it gives us useful information about the system under test
2. Whether it helps us influence system behavior both positively and negatively, to simulate end user actions
3. Whether it helps us achieve the goal of the test under execution
Noel Wurst: You’ve recommended using a “reverse engineering process” for test data generation. How did you come to the conclusion that this was an effective strategy, and does it apply to multiple areas of testing?
Rajini Padmanaban: Good question. Test data creation precedes test execution. But it is very important to keep in mind what test data you need for a given scenario, what is the best way to create it, and is there scope for re-use - before you delve into actual creation. If you really look at this closely, it turns out to be a reverse engineering process where instead of randomly creating data and using it in your tests, the best way is to think about the test to be executed, is to understand its goal and align your test data creation effort with that goal. This not only helps you optimize and re-use your test data but also help you get the maximum returns on investment, by giving you the most meaningful information about the system under test. Such a reverse engineering process also helps you streamline your test efforts, and optimize your test execution time and costs. This strategy applies to all types of testing be it functional, UI, usability/accessibility, performance, security, globalization etc.
Noel Wurst: Is there a misconception that a high level of creative test data generation is going to take a significantly increased amount of time?
Rajini Padmanaban: There is an element of truth in such a misconception. Test data creation is an art and calls for careful upfront planning and thought process. That being said, the effort reduces or even plateaus over a period of time (across multiple releases of the same product), if one diligently reuses the data. The effort spent upfront is totally worth it in bringing in the required breadth and depth in test coverage. After every release, it is a good practice to clean and archive test data for subsequent re-use especially in areas such as functional and performance testing where large data sets are required. Such a choice on where, when and how to re-use test data can make this a less cumbersome yet very effective process in the overall test execution effort, over several releases.
Noel Wurst: Are there any algorithms that you employ to reduce the time it takes to generate a significant amount of test data?
Rajini Padmanaban: Depending on what type of test data you need and what tests you would use it on,