Software Testing Principles

Software testing is an extremely creative and intellectually challenging task. When testing follows the principles given below, the creative element of test design and execution rivals any of the preceding software development steps.

  1. Testing must be done by an independent party.
    Testing should not be performed by the person or team that developed the software since they tend to defend the correctness of the program.

  2. Assign best personnel to the task.
    Because testing requires high creativity and responsibility only the best personnel must be assigned to design, implement, and analyze test cases, test data and test results.

  3. Testing should not be planned under the tacit assumption that no errors will be found.

  4. Test for invalid and unexpected input conditions as well as valid conditions.
    The program should generate correct messages when an invalid test is encountered and should generate correct results when the test is valid.

  5. The probability of the existence of more errors in a module or group of modules is directly proportional to the number of errors already found.

  6. Testing is the process of executing software with the intent of finding errors.

  7. Keep software static during test.
    The program must not be modified during the implementation of the set of designed test cases.

  8. Document test cases and test results.

  9. Provide expected test results if possible.
    A necessary part of test documentation is the specification of expected results, even if providing such results is impractical.


Cho C.-K.: An Introduction to Software Quality Control. The MITRE Corporation and the George Washington University, John Wiley & Sons Publication, New York, 1980.