Tips to Testers – Relevance of Test Data
To understand the relevance of Test Data for effective testing, we need to know the following.
(b) Test cases
(c) Test Data.
Testing : A typical definition for testing goes like this. “Testing is the process of executing a program with the intent of finding errors“.
What we understand is that it is a process to find out the quality of the application under test. In order to be really sure of the quality, we need to undertake testing with relevant test data. It is an intrinsic part of the testing process to ensure that the test data is up-to-date and relevant for the application/ module under test. When the test case and the test data appear mismatched, then we find situations wherein the application remains untested for certain scenarios. If the tester takes necessary precautions to ensure that the test data complements the test case, then we have a favorable scenario of having tested the application judiciously.
From the unit testing phase itself, it becomes pretty clear that the testing activity should have relevant test data. It confirms the successful working of the program with the valid and invalid data. So how do you ensure that the test data is accurate.
Test Cases : Test cases are created to test the application/ module/ program under test by evaluating every functionality/ feature and verify it against the requirements.
It is necessary to have a set of test cases that addresses the complete coverage for every feature. A typical definition for test cases is given as “A set of conditions or variables under which a tester will determine whether an application or software system is working correctly or not“. Therefore it becomes pretty clear for the tester to have an appropriate set of test cases.
Test Data : Test Data creation is done at the time of the test bed preparation which is considered as part of the test environment creation/ setup. Data is created in any form. Typical input forms for presenting data are SQL (from databases), text files, XML files, CSV files etc.. Data can be presented in different forms depending on the type of the test activity. Data can be presented for SQL testing, System testing, Stress testing and so on.
For the testing activity to begin and play an important role, it is important to have a first level set of test data. Preparing a set of test data which is accurate, appropriate is considered as part of the test setup process (which is referred to as the testbed preparation done during the test environment setup). The importance of test data can be gauged from the fact that inappropriate test data used for execution of the test cases may result in incorrect testing, which in turn reflects on the poor quality of the test.
It is therefore the responsibility of the tester to ensure that they have the right set of test data for the test execution.
An appropriate set of test data can be created by using the concepts of
– Equivalence Class Partitioning
– Boundary value analysis
– Error guessing
A set of test data pertaining to each class and the boundary class will ensure that the program/ application/ module works as expected and it tremendously reduces the effort from the testing perspective.
In most large scale projects, test data could be supplied by the customer and it is the responsibility of the testing team to ensure the integrity of the test data. If you are involved in the creation of test data, ensure that you have a relevant, appropriate and fresh data for your testing needs. A simple method used by testers is to create a set of test data for the first round of testing. Subsequent round of testing may warrant for the tester to append new set of data to the existing test data, so that you have a complete set that is both relevant and complete.
How do you prepare an appropriate set of test data?
Things to remember while creating test data
– TEst data should be appropriate
– Test data should effectively tackle every possible feature/ functionality of the application/ module/ program under test
– Creation of the test data should be cost effective from the time perspective
As discussed earlier, we have seen the importance of using classes for creating test data. WE shall however identify a few techniques to use test data effectively.
– Test the application initially without any data : This will ensure that nearly all the alert/ error/ validation messages are invoked and generated.
– Test the application using valid data : This will ensure that the application/ module/ program is working as per the requirements. Additionally it also ensures that proper functions are executed which ultimated results in data being saved into databases.
– Test the application using invalid data : This will ensure that the application/ module/ program generates negative behavior which is important for identifying deviations/ bugs. This test will also encompass testing for data with the incorrect format. E.g. In one of my project it was required to test the application using an input XML file which was provided in two formats. If the tester selects a format type and supplies the other input XML format, the application should respond by indicating the invalid input file type. hence it is very important to undertake the invalid data test.
– Test the application with boundary values : This will ensure that the features/ functions are working as desired at the boundary values (both lower and upper).
Additional testing can be done for
– Performance test (for Performance, Load, Capacity, Stress testing) : Typically these tests can only be done with large volume data hence it is usually done with client supplied data or which is system generated.
In a nutshell
– Test data is important and an inherent part of test environment setup.
– Use appropriate data to ensure complete and comprehensive coverage of your test cases.
– Testing a program/ module/ application can be undertaken successfully with the right set of test data.
– Rely on the concepts of class partitioning to effectively create a complete set of relevant test data.