Know the Wonderful Equation of Software Testing

This article explains various constituents of software testing process. Different definitions given by industry experts along with levels of testing have been explained.
Industry experts usually conclude the definition of software testing as:

Software Testing = Software Verification + Software Validation

Going by this equation, let us try to see the answers to some of the prime questions aimed to elaborate the concept a bit deeper.

What software Testing is?
Testing is very important but an expensive activity. It is more than just running a program with the intention of finding faults. Every project is a new project with different parameters. No single yardstick may be applicable in all circumstances. This is a unique and critical area with altogether different problems. Since principles of software are not fully understood, software testing is essentially an art which describes the adequacy of the software quality. More complex is our software, more difficult becomes its testing. The prime objective of software testing is ascertaining its reliability by way of structured verification / validation activities & this can be termed as quality assurance as well.

We can use software testing as a generalized metric for quality. Depending upon the project time frame, financial constraints & quality expectations, software testing activities can be planned.

What is the Testing Process?
Software testing is an important phase of Software Development Life Cycle (SDLC). We execute the program with given inputs and note down the observed outputs. These are then compared with the expected outputs. If there is a match between observed and expected outputs then the program is said to be as per user's specifications, else there is something wrong somewhere in the program. It is seen that in complex and large software projects 40% to 70% of development time is spent on testing. It is partly intuitive but largely systematic.

Distinct Levels of Testing: Following five primary levels of testing have been defined

1) Debugging: It is defined as the successful correction of a failure.

2) Demonstrating: The process of showing that major features work with typical input.

3) Verifying: The process of finding as many faults in the application under test (AUT) as possible.

4) Validating: The process of finding as many faults in requirements, design and AUT.

5) Preventing: To avoid errors in development of requirements, design and implementation by self-checking techniques, including "test before design".

Various industry experts have provided different definitions of testing that are described as under

Definition - 1: (As per IEEE 83a) "Testing is defined as the process of exercising or evaluating a system or system component by manual or automated means to verify that it satisfies specified requirements".

Definition - 2: (As per Myers) "Software testing is defined as the process of executing any program or a system with an intent of finding errors in it."

Definition - 3: (As per Hetzel) "Software testing involves an activity aimed at evaluating a capability or an attribute of any program or a system and determining that it meets the required results"

Remember that Testing is not a process which:

a) Demonstrates that errors or defects are absent.

b) Demonstrates that the program is functioning correctly according to the intent.

c) Establishes adequate confidence in the program that it will do what it is expected to do.

Thus all these statements are ambiguous, reason being – bound with the blocks of such guidelines, we develop a natural tendency to operate our system in a conventional/normal way so that it functions well. Unintentionally our natural instinct of feeding correct or normal testing data compels us due to which the system does not fail. Moreover it is very difficult to certify that the system has become free of defects at any particular stage – the reason being it is virtually impossible to find out all the defects in any system with 100% accuracy.

Hence in nutshell, it can be said that - "Testing is an activity aimed at identifying errors."

Testing can be either of the following:

a) Positive Testing: means an application is operated, as it should have been. Check if it functions normally. It involves use of legally correct or proper test data, which includes testing at boundary condition data values to confirm if the test fails or not. Actual test results are compared with the results expected by us. Here we see if the results are in order or not & whether the application behaves correctly or not?

b) Negative Testing: means an application is to be operated & tested under abnormal conditions to see if the system crashes or fails or not. It involves use of illegal or incorrect test data with an aim to cause the system misbehavior Intentionally so that we are able to detect the defects. In short, here we see that whether our system performs the way it should not. Or whether it fails to behave in a manner the way it is expected to?"

c) Positive aspect of Negative Testing: The prime objective of testing effort is to unearth the errors or defects well before the actual user discovers them. Sometimes this may be a cause of embarrassment for the testers or even the code-developers. A key attribute of a good tester is that he is able to make a system fail successfully. A good tester’s attitude must be destructive & must have a mentality to always hunt for negative aspects in any system. A tester attitude of a tester is exactly in contrast with that of a developer or an author, who is always expected to be positive & constructive.

Keywords: Software Testing, Software Verification & Validation, QuickTest Professional, Positive Testing, Negative Testing, V&V

Software Testing Genius - A Storehouse of Complete Knowledge on Software Testing & QA under one Roof.

By Yogindernath Gupta
Published: 9/5/2009
 
How would you react to the quality of this article
Excellent explanation of the concept
Would like to read more articles from this author
Fairly good
Use the feedback form below to submit your comments.
Your Comments:
Your Name:
Use the form below to email this article to your friends.
Recipient Email Address:
 Separate multiple email addresses by ;
Your Name:
Your Email Address: