-So let's talk more about testing, as we said a - -2
-little earlier in the lesson, testing means executing the program on - -3
-a sample of the input domain, that is of all - -4
-the possible input data and I really want to stress that - -5
-this sample is tiny sample of the input domain. There - -6
-are two important aspects of testing that I'm want to mention here, - -7
-there first one is that testing is a dynamic technique. And - -8
-what that means is that the program must be executed in - -9
-order to perform testing. The second important point is that - -10
-testing is an optimistic approximation. And what does it mean - -11
-to be optimistic? Well, it means that the program under - -12
-test is exercised with a very small subset of all the - -13
-possible inputs as we just said. And this is done - -14
-under the assumption that the behavior with any other input - -15
-is consistent with the behavior shown for the selected subset - -16
-of input data, that is why it is an optimistic approach. - -17
-Another concept that I want to mention explicitly, is the - -18
-concept of successful test. And I'm going to do that, - -19
-using another quote. This one from Goodenough and Gerhart - -20
-in their paper Towards a Theory of Test Data Selection, - -21
-and what the quote says is that a test - -22
-is successful if the program fails. And this might sound - -23
-counterintuitive, but the point here is that testing cannot - -24
-prove the absence of errors, but only reveal their presence. - -25
-If a set of tests does not produce any failure, we are either in the extremely - -26
-unlikely case of a correct program, or in - -27
-the very likely situation of a bad set of - -28
-tests that are not able to reveal failures of the program. And that is why we - -29
-say that the test is successful if you - -30
-can show that there are problems in the program. -- cgit 1.4.1