The concept of robustness testing in computer science implies verifying whether a computer application is not generating any sort of unacceptable error condition. Fuzz testing is a technique that deals with robustness test for any software application, which is a way to inject random, unexpected input values to the system to verify whether the application crashes or if there’s any memory leak. Sometimes the inputs reflect certain behaviour that bring out some unexpected results which might divert our attention to some new aspect that may help us explore a new dimension.
The term 'robust' is synonymous with strength. So robustness testing is the way to assess the quality of a software product. It the process of verifying whether a software system performs well under stress conditions or not.
The method of carrying out robustness testing follows a set of conventions. A set of invalid inputs or odd/stressful environment is set up. Sometimes it so happens that on providing certain inputs the program may crash . It becomes significant to capture those errors and rectify it in accordance with the requirement specifications.
Hence suitable test cases are developed to perform testing in an appropriate test environment.
There are various approaches to this testing methodology. Let us understand the major ones as follows:
Robustness testing ensures that a software system qualifies as the end product for which it was meant for, hence serving the right purpose. As we know that a complete software system comprises of various components, such kind of testing ensures reducing cost and time required for efficient delivery of a software system.
So robustness testing is carried out somewhat like this- a combination of valid and invalid inputs is passed to the system and checked for the performance . So a system is tested and validated under different conditions .
It is a common phenomenon that a task needs to be carried out in a stipulated period of time. The same applies to robustness testing. As it's the end phase of the testing process, software testers are burdened with the task of conducting the test plans within a limited time span. So testers have to take special care to the choice of test cases, that is, it must not be repetitive and must serve a productive output.
Hence the execution of test cases must be wisely planned in accordance.
Robustness testing can be compared to a state machine wherein providing inputs to the machine delivers a certain kind of output to us, this output can be analysed and assessed to ensure whether it serves the functionality along with good performance. Robustness testing primarily focuses on non-functional aspects of a system under consideration.