Equivalence partitioning or equivalence class partitioning (ECP) is a software testing technique that divides the input data of a software unit into partitions of equivalent data from which test cases can be derived. In principle, 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. An advantage of this approach is reduction in the time required for testing software due to lesser number of test cases. Equivalence partitioning is typically applied to the inputs of a tested component, but may be applied to the outputs in rare cases. The equivalence partitions are usually derived from the requirements specification for input attributes that influence the processing of the test object. The fundamental concept of ECP comes from equivalence class which in turn comes from equivalence relation. A software system is in effect a computable function implemented as an algorithm in some implementation programming language. Given an input test vector some instructions of that algorithm get covered, ( see code coverage for details ) others do not. This gives the interesting relationship between input test vectors:- is an equivalence relation between test vectors if and only if the coverage foot print of the vectors are exactly the same, that is, they cover the same instructions, at same step. This would evidently mean that the relation cover would partition the domain of the test vector into multiple equivalence class. This partitioning is called equivalence class partitioning of test input. If there are equivalent classes, only vectors are sufficient to fully cover the system. The demonstration can be done using a function written in C: int safe_add( int a, int b ) { int c = a + b; if ( a > 0 && b > 0 && c <= 0 ) { fprintf ( stderr, "Overflow (positive)!\n" ); } if ( a < 0 && b < 0 && c >= 0 ) { fprintf ( stderr, "Overflow (negative)!\n" ); } return c; } On the basis of the code, the input vectors of are partitioned. The blocks we need to cover are the overflow in the positive direction, negative direction, and neither of these 2. That gives rise to 3 equivalent classes, from the code review itself. To solve the input problem, we take refuge in