Sunday, February 27, 2011

TESTING PRINCIPLES. . . .

In the premise of software testing, there are few guidelines or testing principles, which appears to be quite obvious but often overlooked. Let’s discuss these testing principles. 

1.A necessary part of the test case is the definition of the output of expected data 

While designing test cases, it is quite important to describe the output or expected result on the basis of given input, along with input data execution environment is also quite important to analyze output data. As it is said, that testing is destructive process and testers tries to break the code by giving expected or un-expected input to the system but still it is human psychology that it still desires to see the correct result, So if proper output is not defined then one can consider un desired output as desired output of the system. 

2.A programmer should avoid testing his own program 

Software design and development is a constructive job and Software testing on the other hand, breaks the code, so it is not possible for the software developer to change his mind set overnight from constructive activity to destructive testing activity, because he can’t bring himself into frame of mind of exposing errors.
Secondly, along with psychological problem, it can be possible that programmer is not fully aware about the software specification or misunderstood the specification. If it is the case, that programmer will have the same misunderstanding while testing his own program.

This does not implies that programmer cannot test his own program; rather quality of software would be great if programmer tests his code by executing test cases, but testing is more effective and successful if performed by some other party. 

3.Test cases should be written for valid and expected, invalid and unexpected input conditions 

It is common practice that while testing, testers concentrate on valid and expected input conditions, and neglect the invalid and unexpected input conditions. But it is observed that most of errors in production come from the unusual and unexpected data input. And frequency of errors is great when testing with invalid and unexpected input conditions. 

4.Examining a program 

Examining a program to see if it does not do what it is supposed to do is only half of the battle; we also have to see if program does what it is not supposed to do. For example if Program generates ticket in ticket reservation system, it should be make sure that it does not generate duplicate ticker or ticker without charging fare amount. 

5.Avoid throwing test cases

Do not throw test cases until the program life has ended, when we create test cases to test a specific functionality of a module, effort is there to create test cases to cater all scenarios. But after testing if the test cases are thrown away, it would create difficulty when we have to re-test the program it mean the effort we put for creating test cases will be lost so maintaining the repository of test cases is a good practice. 

I read these testing principles from the "The Art Of Software Testing" by Glenford Myer 



No comments:

Post a Comment