Probably all the testers know what a negative testing is. I even think that it is a favorite type of software testing for many of us.
When you run a negative test, we check the behavior of the application, getting the input of incorrect data (for example, the characters in a field where numbers are expected) or in unusual situations (for example, if you turn off the printer while printing a document).
“Positive” testing is a test on the data or scenarios that correspond to the normal (regular, expected) behavior of the system.
The main goal of “positive” testing is to check that with the help of the system we can do that for which it was created.
“Negative” testing is a test on the data or scenarios that correspond to the abnormal behavior of the system being tested – various error messages, exceptions, “outrageous” condition, etc.
The main purpose of “negative” testing is to check the stability of the system to the influences of various kinds, an incorrect validation data set, testing the exception handling (as in the realization of software algorithms, and in the logic of business rules).
However, the work of implement “smoke” testing should be preceded by “positive” and “negative” tests.
“Smoke” testing is fast, shallow test, by the most common or typical scenarios, with a minimum of checks (just there was no smoke). It can run as a “positive” and the “negative” data.
Why “positive” testing is to order more important than the “negative”?
Assume that the system is highly resistant to the “bad” input data. Is this scary? Often it is not much. Users sooner or later learn how to bypass pitfalls, will not do “dangerous” or “unauthorized” activities, technical support will soon remember what problems typically arise from users and will give advice such as “in no case do not leave this field blank because …. ”
BUT – all this will not do if the system is not fulfilling its main purpose, if the users (customers) cannot solve their business problems, if they do everything right, introduce good data, but do not get the result. And advice what to do in this situation is impossible.
That is why the “positive” testing is much, much more important than “negative”.
Errors in the normal behavior that prevent users to perform business tasks costing in many times more than the occasional crashes related to the fact that someone has entered incorrect data.
However, this does not mean that the “negative” tests can be ignored because priority values remain unchanged not at all stages of life cycle.
Negative test often allows you to find more software bugs, but it becomes important only when all the positive tests have been made.