Probabilistic Abstract Interpretation and Statistical Testing (Extended Abstract)
Alessandra Di Pierro, Herbert Wiklicky · 2002
Although generally too weak to guarantee correctness, software testing is an indispensable technique for the validation of software systems. It can be used for example to assess how good software is, to find faults and thus improve the software, or for measuring the quality and reliability of reactive systems. One important phase of the testing process is test selection in which test scenarios are selected according to some given criteria. While in general test selection can involve quite elaborate considerations, for simple programs like controllers, embedded systems, etc. statistical testing, i.e. the random selection of test data is generally regarded as a feasible approach. The concrete task we consider here is to determine the probability that a reactive system’s response falls within a certain set of acceptable outputs, i.e. that it passes a certain test. We consider a test function t : X �→ B from the input space X of a program c onto B = {0, 1} which is 1 when c passes the test and 0 otherwise. The quality of the system is thus described by the expectation value E(t), i.e. the probability of a correct output. As pointed out before testing of a concrete system may not always be feasible and thus tests can be performed instead on an abstract system. In [5] the