Testing process deals with large amounts of data and the data it involves describes the test conditions and represents the medium through which tester influences the software. Test data is the most pivotal part of functional testing. One needs to have the complete understanding about the definition of test data and its importance before jumping onto the test case creation.
Test Data and its Importance: The input to any software program is called Test data. It represents the data that affects the execution of a specific module or the data that gets affected by the execution process. Test data can be used for positive testing to verify whether a given input to a given function produces an expected output. It can also be used for negative testing to verify if the given software program can handle extreme, unusual or unexpected input. While working with the poor test data, it could be challenging to test all the possible scenarios that could hamper the software quality.
Depending upon the testing environment, one needs to create "Test Data" most of the times or atleast identifying a suitable test data for your test cases. Usually test data is created in synchronization with the test case it is considered to be used for. Test Data can be generated manually, mass copy of data from production to testing environment or from client systems, automated test data generation tools.
Typically test data generation should be done before beginning the test execution as it gets difficult to perform test data management. A lot of testing environments require pre-steps or test environment configurations for creating test data which is very time consuming. If test data generation is performed being in test execution phase then testing deadline may exceed. Test data management techniques have several approaches and must be used depending upon the scenario. Following are the possible strategies:
# Manual Test Data Generation: The manual test data creation covers all the essential test cases carefully. It is a straight forward approach to create test data. Different type of test data is used to test several scenarios such as valid/invalid test data, null test data and performance test data. When full test coverage is demanded, standard test data is insufficient. Manual test data creation requires no additional resources to be implemented. It encourages the testers to create different data sets with the help of their skills and judgments. The time consumed in this process needs to be considered as it is a part of testing the application.
Some of the demerits of manual test data generation should not be overlooked. Manual entry of test data is a time-consuming process. More number of resources are required in order to add the required data.
# Automated Test Data Generation: The major factor for considering automated testing over manual testing is the 'speed'. Automated data generation tools help to speed up this process and reach high volumes of data. Tools such as Selenium help to input the test data into the system faster. APIs can also be used to pump the system with data. Accuracy along with speed is achieved through automated test data creation. Automated test data can be pumped in during non-working hours which ultimately reduces the level of human interaction saving a lot of time, generating high volume data that too accurately.
High cost of automation tools is responsible for minimal use of automation inspite of increased availability of updated technology. Also, it takes a lot of efforts to understand the system with specific frameworks. Therefore, automation requires skilled resources which leads to the hiring of new ones or training of the older ones. In both the cases, it increases the company's cost.
# Back-end Data Injection: This technique requires the back-end servers to compromise with the database. Test data that is stored at the database can be used directly to update the existing databases, thereby acquiring large volumes of data through SQL queries. This leads to the elimination of front-end data entry and maintains data integrity. Back-end data injection ensures rapid and effective data injection into the system. This process requires lesser technical expertise as compared to automated test data generation techniques. It acts as an ideal technique as it allows the creation of back-dated entries which is not possible with manual as well as automated test data generation techniques.
Although back-end data injection approach is quite simple but it could be disastrous if not implemented correctly. To understand the flow within the system, domain expertise is pivotal to prevent data related issues.