Testing Techniques, Error, Bug and Defect

Software Testing
Testing is a process to find bugs, find them as early as possible, and make sure they get fixed.

Testing Types
1. White box testing (Also known as Clear Box Testing, Glass Box Testing, Open Box Testing and Structural Testing): Used to test internal based application.
 
2. Black box testing (Also known as Skin Box Testing, Closed Box Testing and Behavioral Testing): Used to test functional based or requirement based application.
 
3. Gray box testing: Used to test web applications. It is a combination of both White box & Black box testing.

Testing Techniques (Testing approach)

The most popular Black box testing techniques are:
1. Equivalence Partitioning
2. Boundary Value Analysis
3. Cause-Effect Graphing
4. Error-Guessing

The White-Box testing techniques are:
1. Statement coverage
2. Decision coverage
3. Condition coverage
4. Decision-condition coverage
5. Multiple condition coverage
6. Basis Path Testing
7. Loop testing
8. Data flow testing
Software Testing Check List
Sometimes testers confused when they have assigned any testing task for any product. They dont know from where they should start the testing. To keep this in mind, I have collected information from many websites. Also I have put my inputs and updated the information in simple form. I have created a Checklist for website testing as well as Checklist for Desktop application Testing. 

Checklist covers the following points:
Step 1 - User Interface Testing (GUI Testing)
Step 2 - Functionality Testing
Step 3 - Interface Testing
Step 4 - Compatibility Testing
Step 5 - Security Testing
Step 6 - Performance testing

Equivalence Partitioning
Equivalence partitioning is a software testing related technique with the goal:
1. To reduce the number of test cases to a necessary minimum.
2. To select the right test cases to cover all possible scenarios.
Following example of a function has the pass parameter "month" of a date. The valid range for the month is 1 to 12, standing for January to December. This valid range is called a partition. In this example there are two further partitions of invalid ranges. The first invalid partition would be <= 0 and the second invalid partition would be >= 13.

........ -2 -1 0 1 ....................... 12 13 14 15 ...............
------------------------------------------------------
invalid partition 1 valid partition invalid partition 2

It is sufficient to select one test case out of each partition to check the behavior of the program. The values within one partition are considered to be "equivalent". Thus the number of test cases can be reduced considerably. Equivalence partitioning is no stand alone method to determine test cases. It has to be supplemented by boundary value analysis.

Boundary Value Analysis
Boundary value analysis is a software testing related technique to determine test cases covering known areas of frequent problems at the boundaries of software component input ranges.

To set up boundary value analysis test cases you first have to determine which boundaries you have at the interface of a software component. This has to be done by applying the equivalence partitioning technique. Boundary value analysis and equivalence partitioning are inevitably linked together. For the example of the month in a date you would have the following partitions:

......... -2 -1 0 1 ...................... 12 13 14 15 .....
-------------- ---------------------------------------
invalid partition 1 valid partition invalid partition 2

Applying boundary value analysis you have to select now a test case at each side of the boundary between two partitions. The boundary value analysis can have 6 text cases: n,n-1,n+1 for the upper limit and n,n-1,n+1 for the lower limit.  


Error and Bug

1. Error/bug/defect/mistake are human intraction which produce an incorrect result.
Fault: Fault is a stage of software which is caused by an error/bug/defect/mistake.
Failure: It is a deviation of software from its expected delivery or service.
For eg.
you are driving a car and you are on road while on driving now there is two way on the road
a) left: mumbai
b) right: delhi
now you have to go to delhi it means you have to turn the stearing to the right, but by mistake you turn the stearing to the left, from that position that is called as "Error" because human intraction is there. and now Fault is there till you will not reach the mumbai, but when you reach mumbai that is a final stage which is called "Failure" becoz you had to reach delhi but now you are in Mumbai.
2. Differences in terms
a. Error: the mistakes made by developer in coding.
b. Bug: Found problem in application By Tester

c. Defect: Found problem in application By Customer after release


Difference Between Bug, Error, Defect and Issue
a. Bug: A software bug is an error, flaw, mistake, failure, or fault in a program that prevents it from behaving as intended (e.g., producing an incorrect result). Most bugs arise from mistakes and errors made by people in either a program's source code or its design, and a few are caused by compilers producing incorrect code.

b. Error: The mistake made by developer in coding.

c. Defect: Defect is something which is in the requirement document and it is not implemented or it is implemented in a wrong way.

d. Issue: Issue is something which is not all above, Some issues are there like site is slow, session related problems, security problems etc.