Snippets

This page holds bits and pieces of various topics that I think are important but that I have not yet organized into essays or other presentations.

The Purpose of Testing is to Find Bugs

Principle

Testing is an important part of software development. In my first semester at college, we were taught that the purpose of testing is to find bugs, but few people seem to know this. Most people regard the purpose of testing as ensuring that software works.

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.

Practice

One of our engineer observed symptoms of a bad problem, but we could not reproduce it in a test. One person remarked that it was good that the software "passed" the tests. No, it was not good. We had a problem, and the tests failed to find it. That is bad.

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.

One Way Countries Go to War

"But, after all, it is the leaders of the country who determine the policy and it is always a simple matter to drag the people along, whether it is a democracy or a fascist dictatorship or a Parliament or a Communist dictatorship.... the people can always be brought to the bidding of the leaders. That is easy. All you have to do is tell them they are being attacked and denounce the pacifists for lack of patriotism and exposing the country to danger."

Herman Goering to Gustave Gilbert, during a break in the Nuremberg trials, 18 April 1946