| Path: Eric's Site / Informative / Snippets | (Site Map) |
For almost all tests, they cannot ensure that software is completely correct. Only exhaustive tests or formal proofs can do that. The only thing tests prove is that the software got acceptable results in the specific situations in which you tested it. There could be plenty of bugs if you change the input or change the environment.
Since we cannot find lack of bugs, we instead to try find bugs, and we regard failure to find bugs as an indication that bugs are not greatly present. The quality of this indication depends on how hard and well we sought bugs. That is why it is important to remember that testing is seeking bugs, not seeking correctness. The better you seek bugs, the better your tests are.
Suppose you had a seizure and were rushed to the hospital. They do some tests, and none of them show a problem. Should the doctors say you are healthy and send you home? You would be in serious trouble them, because you have a serious problem, and they did not treat it. Negative tests do not mean you are healthy; it means they do not know what the problem is. A positive test result would help you a lot, because it would tell the doctors what treatment you need.
— Herman Goering to Gustave Gilbert, during a break in the Nuremberg trials, 18 April 1946
| Path: Eric's Site / Informative / Snippets | (Site Map) |