Software testing

Software Testing Concepts
The name itself explains itself nicely. Imagine writing a school paper. What if you yourself had prepared the question for the paper, answered the question in a paper you had written, and finally you corrected the paper. I bet you would have given yourself full marks.

Testing of a particular product is especially encouraged to be done by an independent body/person who is not directly associated with the development of product itself. This gives the tester an unbiased view for testing the product thoroughly. Although I am writing these notes just for software testing the same principle applies to product testing for any industry, be it software or anything else from pencils to airplanes.

Why Testing is important ?
Testing plays a very important role in knowing how well the product has been built to match the required specifications. Just think on these two lines:
 * Have you built the product right
 * Have you built the product Rightly

Thinking over these two statements will give you the feeling that these are two questions that need to be answered if you want to insure the Quality of the product (software in this case). One question emphasizes on building the right product while the other emphasizes on laying down stringent processes so that you build the product right.

One question refers to building a product to meet the specific requirements, while other shows the road to build that product in a right manner. That is how the concept of Quality Assurance and Quality Control has come into picture. Quality Assurance builds a strong frame work of processes to build the right product, while Quality Control thoroughly checks/validates it to ensure it is working properly as per its functionality.

Timely
Testing is very important concept. The reason I stress Timely is because a stitch in time saves nine :) The earlier you find a bug, the sooner you can fix it and the eventually lesser components of the product are affected. Imagine building a mega story building and realize that you haven't tested enough in the process of building. Imagine you reach the construction of the 10th floor and you realize there is a problem with the 1st floor.  You will have to find a hiding place for yourself very soon if you land up in such situation. Try and map this with the process of software product development and you will realize the importance of timely identification and resolution of a bug.

Levels of testing

 * 1) Unit Testing, also known as Component Testing
 * 2) Integration Testing, also known as Component Integration Testing (CIT)
 * 3) System Testing
 * 4) System Integration Testing
 * 5) Acceptance Testing

Regression Testing may be cited as a separate level of testing, but is more accurately an activity which is performed at all levels of testing, where the goal is prove that new changes have not broken any existing (and previously tested) pieces of functionality in the system.

Resources

 * /Overview/
 * /Introduction/
 * /History of testing/
 * /Design technique/
 * /Laboratory course/
 * /Interaction/
 * /Test tools/
 * /Glossary/
 * /Literature/
 * /Results/
 * /Meeting place/