Updated: Jan 19
Finding bugs is one of the main tasks testers have as part of their role. To succeed in this task, the testing process must include two sides:
The Positive side
Test the application against the preliminary requirements and specifications; these tests will determine if the application performs as expected.
The Negative side
While the positive side of testing is crucial, the negative side is sometimes even more critical; during these tests, we will validate that the application can handle failures or any abnormal situations that can cause unnecessary risks or affect the requirements and specifications.
Covering these two aspects is mandatory for the success of any testing process; a good tester will always aim to combine both positive and Negative test scenarios to make sure that the user can use the software without any risk.
So what is “Negative” testing anyway?
Negative testing is a testing process where the tester will use invalid data as an input to the application functionalities. During these tests, the tester will validate whether the application can handle this type of input and if the application behaves as expected and defined in the preliminary requirements and specifications.
Goals of Negative testing
It is essential to understand the real purpose of negative testing, and why you must combine them in any testing process, this list will allow you to understand what negative testing is all about:
Validate that the application will not do anything that it is not supposed to do.
Validate how the software will recover from failures caused by invalid data.
To determine under which scenarios the application can crash.
Identification of the weaknesses points of the application.
Validate that the application can handle abnormal situations where the user uses an invalid input (Notifications, Response time, Errors, Logs….).
Validate the different aspects that are not documented in the positive requirements and specifications.
Negative testing process
Knowledge Gathering - The tester will gather all information needed to design the negative test cases; during this activity, the tester should read the application documentation, review the application design, and collect all info that he can use before designing the test cases.
Test Design - Based on the information gathered in the first activity, the tester has the relevant information that he can now use to design the negative test scenarios, including the testing data that he will use throughout the test process.
Test Execution - The tester will run the tests and report any incident found during this process.
Examine the Test Results - Once all tests are done, the test results are reviewed and analyzed to determine if further tests are needed.
Advantages of Negative testing
Negative testing will allow you to increase the confidence in the product, the quality of the application is always determined by both positive and negative scenarios.
Using negative testing, we can show that the application does not work.
Negative testing will demand more creativity and thinking from the testers to think about test cases not specified in the basic requirements and specifications.
Once a negative scenario that caused the application to fail is fixed, we will remove one more risk that will increase the stabilization of the software.
Negative testing will allow us to understand the limitations of the application.
We can use Negative testing in all layers of testing (Unit, component, integration, system, and End-to-End).
Negative tests are used to cover many aspects that are not covered in positive testing.
Negative testing will gracefully handle errors and notifications that may pop up to the user.
When to stop Negative Testing?
There is no “End” date to stop negative testing; similar to any other testing process, you will stop testing only when the risks are removed. No remaining issues are affecting the user experience and the application's stability.
Another testing stopper that is well known is the project deadlines. Although you may have thousands of test cases, you will never succeed in running them all due to the time limitations and the release commitments; therefore, you will need to prioritize your tests to find the most critical issues in the specified available time frame.
Why can you not ignore Negative testing?
If you read all paragraphs above, you probably understand that you cannot perform a test process that includes both “Positive” and “Negative” testing. To enhance the importance of the negative side, let's review a few more examples:
Negative testing will allow you to find unique problems for a specific integration.
Positive testing will not allow you to understand how external artifacts can affect the application functionality (Low Disk Space, Low Memory, Low Bandwidth, Service crushes, etc.)
As many exceptions are found and removed, the better quality, you achieve.
Negative testing will allow us to improve the notifications in case of failures.
If you fail to find a software exception, the system will be released if no problem has been found; this can lead to a significant issue on all system levels.
Using negative testing, we will enforce the application guidelines and demands; these enforcements will prevent unnecessary and unexpected scenarios if the customer interacts with the application.
Negative testing will allow you to stop the application execution in case of a failure until the problem is fixed.
If you run only “Positive” scenarios, you will fail to understand the application's Upper and lower limits.
A small problem that we fail to find during the testing cycles can (and probably will) accelerate and become a significant issue.