Sunday, December 27, 2009

Software Testing Fundamentals


Testing performed in most organizations, is a process designed to compensate for an ineffective software development process.  The objective of life cycle testing is to spend more effort testing right from the start of the project, and less time debugging the coding and testing phase of development.

What is primary role of software testing?
  • Determine whether the system meets specifications
  • Determine whether the system meets business and user needs
What is Defect
The purpose of testing is to find defects.  A defect is a variance from a desired product attribute.  Two categories of defects are
  1. Variance  from product specifications
  2. Variance from customer / user expectation
Variance from Product Specifications - The product build varies from the product specified.  For example, the specifications may say that A is to be added to B to produce C.  If the algorithm in the build product varies from that specification, it is considered to be defective.

Variance from Customer / user expectation - This variance is something that the user wanted, that is not in the build product, but also was not specified to be included in the build product.  The missing piece may be a specification or requirement, or the method by which the requirement was implemented may be unsatisfactory.

Defects generally fall into one of the following three categories:
  1. Wrong - The specifications have been implemented incorrectly.  This defect is variance from customer / user specification.
  2. Missing - A specified or wanted requirement is not in the built product. This can be a variance from specification, an indication that the specification was not implemented, or a requirement of the customer identified during or after the product was built.
  3. Extra - A requirement incorporated into the product that was not specified.  This is always a variance from specifications, but may the user of the product desire an attribute.  However, it is considered a defect.