Friday, November 12, 2010

Software Testing

Definition:

Software Testing is the process of executing a program or system with the intent of finding errors.

Defects in software:

Most of the defects in software are design errors, not manufacturing defects.

Software bugs will almost always exist in any software module with moderate size, because the complexity of software is generally intractable.

Finding defects in software:

Discovering the design defects in software, is equally difficult, for the same reason of complexity.

For a realistic software module, the complexity can be far beyond.

A further complication has to do with the dynamic nature of programs.

If a failure occurs during preliminary testing and the code is changed, the software may now work for a test case that it didn't work for previously.

But its behavior on pre-error test cases that it passed before can no longer be guaranteed. To account for this possibility, testing should be restarted.

An interesting analogy parallels the difficulty in software testing with the pesticide, known as the Pesticide Paradox.

Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffectual.

By eliminating the (previous) easy bugs you allowed another escalation of features and complexity, but his time you have subtler bugs to face, just to retain the reliability.

The barrier is largely determined by the strength of the techniques we can wield against ever more complex and subtle bugs.

Software Testing is broadly deployed in every phase in the software development cycle.

Testing is usually performed for the following purposes:

  • To improve quality
  • For Verification & Validation (V&V)
  • For reliability estimation



No comments:

Post a Comment