Thursday, February 17, 2011

Methods / Approaches to find Software Defects

The fact is that there is no shortcut to find defects in any application but there are few Methods / Approaches to make you easier to find those hidden dfects.


Before looking into that, we have a look at the Defect diffinations:


Software Defects are of 3 type:


1. Error: A human error which gives incorrect results.
2. Fault: Manifestation of Human error is - Fault.
3. Failure: Execution of fault is a Failure or a defect in the application or we can say application is not working as per the requirements.


Now a days Software testing has got a vital importance in Software Industry.To give a confidance to the client / customer / Product owner, saying product is working fine as per the requirements and to reduce post production customer issues, Cost to fix post production issues.


Software Methods / Approaches to find the defects in software application are: White Box testing, Black box testing and Gray box testing.
In block box testing method, various approaches are involved and thease can be implimented in various testing levels like :

1. Unit testing
2. Integration testing
3. System testing
4. System integration testing
5. Regression testing
6. Acceptance testing
7. Alpha testing
8. Beta Testing


The Testing Approaches are:


Equivalence partitioning: In this software testing technique, we divide the input data of a software unit into partitions,from which test cases can be derived. In principle, test cases are designed to cover each partition at least once. This techinique is impleimeneted along with Boundary value analysis.


Boundary value analysis: In this technique, we take boundary values of a input data.
Eg: In english monthly calaneder: 12 months.
- As per quivalence partitioning and Boundary value analysis:
-2 -1 0 1 2 ...10 11 12 13 14


All-pairs testing: All-pairs testing or pairwise testing is a combinatorial software testing method that, for each pair of input parameters to a system (typically, a software algorithm), tests all possible discrete combinations of those parameters. Using carefully chosen test vectors, this can be done much faster than an exhaustive search of all combinations of all parameters, by "parallelizing" the tests of parameter pairs. The number of tests is typically O(nm), where n and m are the number of possibilities for each of the two parameters with the most choices.


This Techinique is mainly used to reduce test scripts with effective test coverage when input parameters are having more variables.
You can have a look at this example at:
http://www.slideshare.net/ushakannappan/all-pairs-testing-technique


Traceability matrix: It is a document / Matrix which maps the requirements against test cases. By preparing a tracebility matrix, we ensure we have covered all the functionalities. By using this method we will test each every functionality without miss, there is more probability to find defects.


Exploratory testing: Exploratory testing does not have specific test cases. It is purely based on personal freedom and Individual tester's responsiblity. Here there is more scope to explore different mothods to find defects.


There are few other Adhoc methods:

1. Domain Knowledge:
I have read many Testing blogs, they say as Domain Knowledge isnot required for testers, I also agree but not fully. When we have a command on the Application Domain, we can find functional issues along with technical issues.



Also we can suggest/find few ideas / flaws in the requirements. This is an additional advantage to a teser having domain knowledge.


2. Architecture of the Application: When a Tester has an idea on the architecture of the application, it would be easy estimate the defects in those integrating points. when a application is having is many integrating points, there would be a chance to get more defects at the stage of INT testing also in E2E is missed out.


3. Analysing the defect Pattern: Most of the bugs are in gregarious in nature. they like to stay as groups. Every bug as its own characteristics. One bug can make malfunctioning many functionalities. SO observe the pattern how the defect has occured. Based on the footstep of the defect, we can find few more similar defects.


4. Key Board Functionality: Tester should test the application using Key board and mouse operations. There is chance application can fail when you use key board functions.


5. Break the rule: Always dont go as per the test scripts. It is difficult to cover 100% testing in any application using test scripts. SO always do adhoc / monkey testing in such a way others(Users) dont do. Allocate some time for Monkey testing every day when you are doing testing. Scope to get many defects.


6. Defect History: If you are testing the enhancements in the existing application and you are new to it, then have a look at the exting bug reports either in QC or in some defect management tool. You will get an idea how defects are found.


7. Experience in Development: It would be an adventage if a tester has an experience in Development so that he could be knowing where developers will do mistakes. This is having less probability.


8. Browser Capability: if the application is a internet based, we should test the browser compatability.


I will be happy if these above points are usefull and helping yoou to test application effective and to find more defects.

Source: Wikipedia.org

No comments: