User:Maruthiram

Software testing:

Software testing is a process used to identify the correctness, completeness and quality of developed computer software.

Software testing can be stated as the process of validating and verifying that a software program/application/product:
 * meets the requirements that guided its design and development;
 * works as expected

Equivalence Class Partitioning:

Equivalence Class Partitioning is a software testing technique that divides the input data of a software unit into partitions of data from which test cases can be derived. Test cases are designed to cover each partition at least once. This technique tries to define test cases that uncover classes of errors, thereby reducing the total number of test cases that must be developed.

The valid range for the month is 1 to 12, representing 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

Boundary Value Analysis:

In boundary value analysis, test cases are generated using the extremes of the input domain, e.g. maximum, minimum, just inside/outside boundaries, typical values, and error values. BVA focuses on "corner cases".

Fuzz testing:

Fuzz testing or fuzzing is a software testing technique, often automated or semi-automated, that involves providing invalid, unexpected, or random data to the inputs of a computer program. The program is then monitored for exceptions such as crashes or failing built-in code assertions. Fuzzing is commonly used to test for security problems in software or computer systems.

Unit Testing: Unit testing is a method by which individual units of source code are tested to determine if they are fit for use. A unit is the smallest testable part of an application. The goal of unit testing is to isolate each part of the program and show that the individual parts are correct.

Black-Box Testing: If one performs testing only on the functional part of an application with out having any structural knowledge then that method of testing is known as Black-Box testing.

White-Box Testing: If one performs testing on the structural part of an application then that method of testing is known as white box testing.

Grey-Box Testing: If one performs testing on both the functional part as well as the structural part of an application then that method of testing as known as gray box testing.

Retesting vs Regression testing:

Retesting: Retesting is the act of repeating a test to verify that a found defect has been correctly fixed.

Regression testing: Regression testing is the act of repeating other tests in 'parallel' areas to ensure that the applied fix or a change of code has not introduced other errors or unexpected behavior.