What is Test Data?
As the past decade has seen a great boom in technology and software, data or testing data has become a significant part of a tester’s life. From executing test cases to testing a software or application, a tester needs to input some data in order to get expected output. At times to load the application with data (Load Testing) or to check the break point (Stress Testing) of the application, huge data is required which can either be valid as well as invalid.
Hence, Test Data is the data that is required in executing the test cases properly and to verify the expected output in any software application under test. It represents data that affects or is affected by the execution of a specific module.
- Positive Test Data: which is typically used to verify that a given set of input provided to a given function produces expected results.
- Negative Test Data: Tests the ability of the program to handle unusual, extreme, exceptional or unexpected input.
- Poorly Designed Test Data: Tests that may not test all possible test scenarios which can hamper the quality of the software.
Importance of Test Data Management in Software Testing:
During software testing obsolete, absent or wrong test data can provide unreliable and incomplete results which can cause a tester to miss or overlook invalid defects and bugs. To ensure that the tester avoids such situations, Test Data Management is a tester’s best option as it allows them to keep a track of test data and ensure the quality of the test result. Other reasons that enhance the importance of Test Data Management are mentioned below:
- Depending on the Test Data used, testers can verify the expected results and the software behaviour in case of invalid input data. Thus having Test Data prepared is of utmost importance before the actual test execution.
- Test Data can be documented in any manner – Excel sheet, Word Document, Test File and many more. The data stored in an excel sheet can be entered manually while running test cases or can be examined automatically from file that use automation tools. It can also be used in order to challenge the ability of the application to respond to unusual, extreme or unexpected input.
- In the case of Domain testing, Test Data management is done in a systematic way, however in other cases like high-volume randomized automation testing, it is not much systematic.
Types of Test Data:
An ideal Test Data is the one which has all the combinations of data so that no defects or discrepancies are missed. Test data are classified into the following five types:
- Blank Data Test Data: Blank Files or no data refers to the files which do not contain any data. There is no input given to the application, which verifies that the application handles such exceptions and throws proper errors.
- Valid Test Data: These are the files that are valid and supported by the application. These give expected output when given as input.
- Invalid Test Data: These are all the unsupported file formats which are executed to see that application handles all of them properly without breaking and warns user with proper error message.
- Test Data to Check All the Boundary Conditions: These include data that has all possible combinations of boundary values. Boundary values basically include all those values which are just enough to be handled by application, if tester goes beyond them then application breaks.
- Huge Test Data: Huge Test Data are the Test Data that are used for Load, Performance and Stress testing. These cannot be made at the time of execution and should be prepared while making the test environment ready.
How to create and prepare Test Data?
To provide superlative test coverage, Test Data Management assists efficiently with edge cases. Furthermore, Test Data Management techniques have several possible approaches, depending on the scenarios at hand. Mentioned below are some of the approaches used to enjoy faster delivery of applications as well as for faster achievement of business goals.
1. Manual Test Data Generation:
Manual test data creation is often executed for carefully covering the essential test cases. This form of Test Data generation is quite a straightforward way of creating test data. Using this technique innumerable scenarios are tested with different varieties of test data such as:
- Null Test Data.
- Valid & Invalid Test Data.
- Data Set for Performances.
Benefits:"The major benefit of Manual Test Data creation is that it does not require additional resources to be factored in. Testers are often encouraged to create different data sets using their skills and judgments. The time taken also need not be factored in, as it is a part of testing the application."
2. Copying Production Data to Testing Environment
"Already existing & available data used in the development environment may be brought into use for testing application in the testing environment."
Note:Input data may also be copied and used from the legacy client system.
3. Using Automated Test Data Generation
The factor that differentiates Automated Test Data creation from Manual Test Data creation is the significant acceleration of ‘speed’. Data generation tools such as Selenium/Lean FT, help considerably to speed up this process and assist in reaching higher volume levels of data. Web service APIs can also be used to fill the system with data.
Accuracy with speed is one of the major advantages of Automated Test Data generation. Furthermore, one can fill the data during non-working hours, where human interaction is almost negated, saving a massive amount of time, generating more accurate data, and ensuring that the data in question is high in volume.
4. Back-end Data Injection
In this form of Test Data creation technique, the back-end serves which encompass the database, are required. Test data is stored at this database can be used to directly update the existing databases through SQL queries, thereby acquiring the voluminous data instantly. In order to avoid fiddling with database relationships that define data integrity, it is essential to be careful with this technique, even though this eliminates front-end entry data.
Back-end Data Injection provides swift data injection in the system and is relatively more effective technique. It also enables creation of backdated entries, which is a huge drawback in both, manual as well as automated test data generation techniques.
Here are some rules to test the application's usefulness:
- Favourable Test Data: Create test data, favourable to cost and time and also useful in identifying the bugs in all kinds of application.
- Setting Right Data: For responding the data accurately, create the right data to ensure that application do meet as per perquisites and also to know that data is saved in rightly manner.
- Setting Wrong Data:Defining and creating incorrect set of data is also important to check the behaviour of the application for negative values and so on.
- Creating a Large Amount of Data: Large amount of test data would be needed to perform testing types like performance, load and stress testing and regression testing.
- Negative Data: To check the creation of correct error message, the tester should execute the test cases in the default data set environment.
Exploring Different Types of Test Data Designs:
Test data can vary in different scenarios but a tester needs a particular set of it. With adequate test data, tester can design it well before the test. However, designing such data can be challenging at times, especially when you have limited amount of time for testing. It requires an utmost delicacy and unique touch to make it work. Furthermore, a well-designed data enable the tester to cover all the test scenarios easily. That is why it holds so much of importance and must be dealt properly before initiating a test.
Following are four of the most important types of Test Data to assist the tester overcome designing problems:
- Performance Test Data: Performance Testing is the type of testing which is performed in order to determine the system’s adaptability to various workloads. The main goal of this type of testing is to not find bugs, but to eliminate bottlenecks. An important aspect of performance testing is that, the set of sample data used in testing is very close to real or live data which is used on production. Such data can be collected from customers or else it can be at least in the form of a feedback.
Security Test Data: Tests performed in Security Testing are executed to determine whether the information system protects data from malicious impact. The required set of data that is designed in order to fully test software security cover the below mentioned topics:
- Capacity handled by the test.
- Security and confidentiality of user is maintained by the system or component.
- Reliability of the results produced for a given set of functions.
- Response time should be calculated after initiating a request to discover total time.
- Efficiency in terms of ratio of quantum of data processed to the amount of resources utilized to process.
White Box Test Data: White Box Testing is a technique which evaluates the code and internal structure of the program. For this type of testing, data is collected directly from the code. It covers all possible branches and paths and might even contain invalid parameters and argument combinations for Negative Application Program Interface (API) testing.
- Confidentiality test data ensures the information provided by the client is not shared with any outside party.
- Integrity test data determines that the information provided by or to the system is correct and authentic.
- Authorization test data ensures the rights of a specific user containing various options and user roles
- Authentication Test Data allows one to test the user login in multiple ways. It represents the process of establishing the identity of a user.
There are three main white box testing techniques:
Black Box Test Data: It is a bit tricky to design a test data for Black Box testing as the code might not suit Black Box conditions. The tester can design the data for test cases considering the data set categories mentioned below:
- Statement Coverage is the method of validating that each and every line of code is executed at least once.
- Branch Coverage is a testing method which when performed ensures that each branch from each decision point is executed.
- Path Coverage is a comprehensive technique and is even more powerful than Branch coverage. It ensures that all the paths of programs are traversed at least once.
- No Data checks the response of the system when no data is submitted
- Valid Data ensures the system response after the submission of valid test data.
- Invalid Data: When invalid test data is submitted, Invalid Data keeps a track of system response.
- Illegal Data takes cares of system response when the test data provided is in invalid format.
- Boundary Condition Data Set makes sure that test data is meeting bounding value conditions.
- Equivalence Partition Data Set: Test data qualifying your equivalence partitions.
- Decision Table Data Set guarantees that the test data qualifies your decision table testing strategy.
- State Transition Test Data Set are the test data meeting your state transition testing strategy.
- Use Case Test Data validates whether the test data is in-sync with your use cases.
However, before going into the data set categories, the testers initiate data gathering and analysing of the existing resources of the application under tester (AUT).
Read our related article Designing Your Test Data for Different Testing Types to gain more insight to the above stated test data designing.
Useful Tips on Test Data
Proper data for testing gives ease to identify the serious flaws and make them correct. It is highly important for a tester to stay alert and keep a constant eye in each phase of the development cycle for the appropriate re-evaluation of test data."
Creating complete software Test Data in compliance with the industry standards and the baseline documents of the undertaken project is amongst the core responsibilities of the tester. The more efficiently managed test data deploys reasonably bug free products for the real world users. Therefore, Test Data plays an extremely important role while executing test cases. A complete test data set makes testing easier and quicker for a tester, as they have access to the whole data to test application and find bugs. Furthermore, the tester should create his/her own test data additional to the existing standard production data which should be ideal in terms of cost and time.