Thursday, July 31, 2008

An Introduction to Software Testing

Software testing is the process used to assess the quality of computer software. Quality is not limited to, the process of executing a program or application with the intent of finding software bugs.


Software Faults:The software faults occur through the following process. A programmer makes an error (mistake), which results in a defect (fault, bug) in the software source code. If this defect is executed, in certain situations the system will produce wrong results, causing a failure. Not all defects will necessarily result in failures. A defect can turn into a failure when the environment is changed. Examples of these changes in environment include the software being run on a new hardware platform, alterations in source data or interacting with different software.


Software Quality:Quality is not an absolute term; it is value to some person. With that in mind, testing can never completely establish the correctness of computer software. Functional dimensions of quality like Usability, Scalability, Performance, Compatibility, Reliability are highly subjective terms having significant value to one person but may be intolerable to the other.

Complexities in Software Testing:A problem with software testing is that testing all combinations of inputs and preconditions is not feasible when testing anything other than a simple product. This means that the number of defects in a software product can be very large and defects that occur infrequently are difficult to find during testing.

Approach to effective Software Testing:An effective approach to the process of testing of complex products involves "Investigation" or "Questioning" a product in order to evaluate it. Here "Questions" or "Investigations" are the activities which a tester tries to perform on the software product, and the product answers with its behavior in reaction to the probing done by the tester.

Software testing is successful only if used in association with "Verification" and "Validation"

"Verification" asks a question: Have we built the "Software - Right" (i.e. Does it match the specifications)?

"Validation" asks a question: Have we built the "Right – Software" (i.e. Is this what the customer wants)?


Objectives of Software Testing:
1) Testing is a process of executing a software program with the intention of finding an error.
2) A good test case is one that has a high probability of finding an as yet undiscovered error.
3) A successful test is one that uncovers an as yet undiscovered error.


Outcome of Software Testing:
Testing should systematically uncover different classes of errors in a minimum amount of time and with a minimum amount of effort. A secondary benefit of testing is that it demonstrates that the software appears to be working as stated in the specifications. The data collected through testing can also provide an indication of the software's reliability and quality. But, testing cannot show the absence of defect -- it can only show that software defects are present.

No comments: