| Software reliability is a key measure of the quality of software system, the computing of software reliability depends on the software reliability model and failure data. Existing methods to compute the software reliability use the testing data of inputs and outputs, however, these data are not able to truly reflect the internal information of the software. For example, testing can’t reveal the case that one input has multiple faults. The software reliability computed by this way can’t reflect the whole behavior of software.We propose the method of computing software reliability based on program invariants. Program invariants reflect the internal properties of program and depict the whole behavior of software. In this paper, we use a set of test cases to execute the software system and dynamically obtain program invariants with Daikon, and then extract the failure data from these invariants; finally we compute the software reliability based on Nelson model. Besides, in the past, people extracted the failure data with the assumption that they have already known the correct program when calculating the software reliability; however, in fact, people often don’t know the correct program. This paper also attempts to collect the failure data when we don’t know the correct program. We filter the test cases with collecting the program coverage information, and then dynamically obtain program invariants in order to optimize failure data. We conduct experiments using Siemens benchmark programs; we also compute software reliability with traditional methods, and compare the result of our method with it, which validates the feasibility and effectiveness of our methods.The contributions of this paper are listed below:We extract failure data with program invariants, which is able to more truly reflect the whole behavior of software.We propose to use program invariants to compute software reliability, the result is more accurate, and we compare it with the traditional method of computing software reliability, validate its feasibility.We calculate the software reliability when we don’t know the correct program; the experimental results show that our approach is effective. |