Even in small programs the number of possible logical paths can be enormous. Take a program about 100 lines long, with a couple of nested loops executing 20 times each. There are approximately 1014 possible paths that may be executed. At one test per millisecond, that would be 3170 years alone!
Exhaustive Testing is Impossible.
Exhaustive Testing Example
The functional domain of the following function consists of values true and false:
Void PrintBoolean (bool error)
{
if (error)
cout << “true”;
else
cout << “false”;
cout << endl;
}
It makes sense to apply exhaustive testing to this above function, because there are only two possible input values.
Void PrintInteger(int intValue)
{
cout << intValue;
}
It is not practical to test this above function by running it with every possible data input as the number of elements in the set of int values is clearly too large.
[Source]

