You are currently viewing a new version of our website. To view the old version click .
Symmetry
  • Article
  • Open Access

9 October 2024

Improving the Efficiency of Software Reliability Demonstration Testing by Introducing Testing Effectiveness

,
and
1
School of Reliability and Systems Engineering, Beihang University, Beijing 100191, China
2
Science & Technology on Reliability & Environmental Engineering Laboratory, Beijing 100191, China
*
Author to whom correspondence should be addressed.
This article belongs to the Section Computer

Abstract

For highly reliable software systems, it is expensive, time consuming, or even infeasible to perform reliability testing via a conventional software reliability demonstration testing (SRDT) plan. Moreover, in the traditional SRDT approach, the various characteristics of the software system or test sets are not considered when making the testing schemes. Some studies have focused on the effect of software testability on SRDT, but only limited situations were discussed, and many theoretical and practical problems have been left unresolved. In this paper, an extended study on the quantitative relation between test effectiveness (TE) and test effort for SRDT is proposed. Theoretical derivation is put forward by performing statistical analysis for the test suite according to TE. The combinations of all the cases of zero-failure and revealed nonzero failure, as well as discrete-type software and continuous-type software, are studied with the corresponding failure probability models constructed. That is, zero-failure and nonzero failure, as well as discrete-type software and continuous-type software, respectively, constitute the symmetry and asymmetry of SRDT. Finally, we illustrated all the models and performed applications on the Siemens program suite. The experimental results show that within the same limitation of requirements and confidence levels, this approach can effectively reduce the number of test cases and the test duration, i.e., accelerate the test process and improve the efficiency of the SRDT.

1. Introduction

With the development of network and computing technology, more and more software applications are being applied to various fields of society, such as systems-of-systems (SoSs), cyber–physical systems (CPSs), and distributed systems [1]. With the increasing demand for software system reliability, reliability demonstration testing serves as a solution for validation and acceptance testing [2]. That is, SRDT is an important representative testing method for evaluating whether a software system has achieved a certain level of reliability at a given level of confidence, and for helping people make decisions on delivery or acceptance [3,4]. The relevant methods can be divided into two categories; one is fixed-duration testing methods, such as Laplace’s rule of succession [5], TRW [6], Bayesian [7], life testing [8] and Bayesian zero-failure (BAZE) testing [9,10]. Another is non-fixed-duration testing methods, such as probability ratio sequential testing (PRST) [11] and the t-distribution method [12]. In this paper, the research is only conducted in the context of the fixed-duration SRDT method.
However, traditional SRDT based on the number of failures depends on the testing of large samples, which is not feasible for highly reliable software systems [13,14]. How to reduce the sample size is currently a challenge that needs to be solved in the field of SRDT. Most existing SRDT methods assume that the same number of statistical test cases is needed for different software systems to reach the same expected reliability level under the same confidence limit [15], i.e., statistical test sets with the same number of test cases have the same statistical power, and do not consider the effect induced by the characteristics of the software system itself. This may be somewhat counterintuitive, as we often assume that high-quality software may require fewer test cases. In contrast, many researchers have introduced software products or process measurements into reliability evaluation, e.g., code coverage [16,17], which has improved the accuracy of evaluation models.
Moreover, since the 1990s, software testability has received much more attention in software engineering [18,19,20] and has been introduced into software reliability evaluation. Software testability is regarded as the ability or degree to which a software supports testing in a given test context, which is always represented by the probability of the fault detection rate [21,22,23]. Since testability could affect test implementation efficiency, it could also affect reliability testing. Chen et al. [24] has demonstrated that testability affects the number of test cases needed to achieve a given reliability level; that is, if a software has better testability, fewer test cases will be needed for certain reliability assurance targets.
Based on the concept of software testability, Kuball et al. suggested as a concept to extract a test set’s different properties, which are brought into quantitative reliability assessment to base a reliability estimate on those properties. For example, they propose a model to combine the fault detection power of a given test set with the statistical power of the test set, i.e., they want to employ as much information as possible on the software product, test set, and operational environment. They propose a method that can be used to analyze the influence on a reliability measure of any given test set, and also point that further considerations are deserved on how their concepts could be exploited when the number of statistical test cases required to obtain a specified reliability target is very large [25]. They conducted such research because they had previously completed a relatively complex statistical testing task. Not only did they summarize the difficulty and key techniques of statistical testing but this also prompted them to think about another question: whether they could discover as many different characteristics of the test set as possible [26,27,28]. Kuball et al. demonstrate the effectiveness of statistical testing in terms of error detection when compared to other testing techniques, employed using the example of a Programmable Logic System (PLS) [26]. They explore the applicability of statistical (software) testing (ST) to the example of a real safety-related software application and discuss the key points arising in this task, highlighting the unique and important role ST can play within the wider task of software verification [27]. They also present an experience report that describes the successful application of statistical software testing to a large-scale real-world equipment replacement project. A total of 395 statistical tests with no failure were achieved, providing at least 98% confidence that the safety claim was met [28].
In our previous work [29], we found Kuball et al. provided an interesting idea in [25], so we attempted to introduce their concept into our SRDT plan to reduce the minimum sample size. By comparing the number of SRDT sets considering TE with that of traditional approaches without considering TE, we proved that conventional statistical methods and Bayesian priori statistical methods are conservative estimation methods, assuming that TE is equal to zero [29]. To the best of our knowledge, we were the first to explicitly introduce testability as a factor into the quantitative expression of the SRDT plan.
However, in [29], we only give the mathematical expression for a zero-failure SRDT plan, and we do not give an expression considering a nonzero failure SRDT plan, e.g., r = 1,2,… The reason is that [25] only gives input space models with zero or nonzero cases; they do not give an input space model at r = 1,2,… Based on the above ideas, this paper attempts to construct an input space model of r = 1,2,…, and then explicitly introduces the expression of TE into the SRDT mathematical expression with r = 1,2,… Although there are many ways to accelerate software reliability testing, to the best of our knowledge, we are the first to conduct such research. Due to space limitations, you can refer to the review on the SRDT method in [30] to reach such conclusions. To address the aforementioned issues, we have made several contributions to our work, including the following:
  • We propose the principle of introducing TE into SRDT under zero and nonzero fault conditions, and provide mathematical derivations of the models for both scenarios.
  • We provide an improved SRDT framework integrated with a uniform measurement of TE, which takes into account both discrete-type and continuous-type software, both with zero-failure situations and failure-revealed situations.
  • We give the estimation method of TE based on the statistical fault injection, which considers the statistical characteristics of the software reliability test case set.
  • We conduct a numerical case study on the Siemens program suite to demonstrate the practical application and effectiveness of our proposed method. In total, seven programs are taken into consideration and the experimental results provide evidence for its potential to improve software demonstration testing efficiency.
The remainder of this paper is structured as follows. In Section 2, we outline the background and related works in the field of SRDT. In Section 3, we describe the principle of the SRDT approach, introducing TE in the cases of zero-failure and revealed failures, respectively, and present the estimation method of TE based on the statistical fault injection method, together with the improved SRDT framework. In Section 4, we demonstrate the practical application of our method through a numerical case study of the Siemens program suite. Finally, in Section 5, we outline our conclusions and identify potential future research directions.

3. Proposed Method

This paper is mainly divided into three parts as follows: the modeling of introducing TE into SRDT, taking into account both zero and nonzero failure conditions, the estimation method of TE, and the SRDT framework integrated with TE. Figure 1 illustrates the research framework of this paper. From this section onward, the improved SRDT method will be studied according to the research ideas shown in this framework.
Figure 1. Research framework.

3.1. TE-Introduced SRDT in the Case of Zero-Failure (TE-SRDT-0F)

3.1.1. Conventional SRDT Process

The conventional SRDT procedure is shown in Figure 2.
Figure 2. Conventional SRDT procedure.
From Figure 2, we note that the key step in SRDT is determining the statistical scheme for a given demand, i.e., an upper confidence limit and the expected value for reliability. Therefore, first, we introduce the principle of SRDT integrated with TE and then describe how to determine the statistical scheme and how to estimate TE. It should be noted that in this paper, we aim to provide an improved SRDT scheme by introducing TE, so our research is only focused on the “Test plan phase”, as shown in Figure 2.

3.1.2. SRDT Introducing TE in the Case of Zero-Failure

a.
The Basic Principle in the Case of Zero-failure
Let P denote a program, T denote a test set, and φ T denote TE [25,29]. φ T = P r ( T   d e t e c t s f a c t t h a t P i s f a u l t y ) , where φ T represents the probability of the test set, revealing failures in the execution of P if there are faults left in P , and P r ( . ) represents the probability of a random event. Suppose N test cases are implemented and no failures are found, i.e., the failure number r = 0 , and the test time is T a . We use to represent the result, so = {the number of test cases is N , the number of failures is 0, and the total test duration is T a }. Ω is defined as the program space, consisting of all possible programs P , and P is any mutation version derived from P . Suppose P G is a faultless version of the program, i.e., a mutation version with a zero fault derived from P ; obviously, P G is also in Ω . Then, we divide Ω into two subsets, A 0 and A 1 , as shown in Figure 3. A 0 is the set of programs P with the following property: P contains faults, which cannot be revealed by executing T , so A 0 = { P | P Ω ,   f a u l t P , 0 f a i l u r e s b y T } , where f a u l t P means faults contained in program P , and 0 failures by T means test set T cannot reveal failures. A 1 is the set of programs P with either of the following properties: P contains faults, test set T can reveal at least 1 failure, or P is correct. It is denoted as A 1 = { P | P Ω ,   f a u l t P , 1 f a i l u r e a t l e a s t } P G . Therefore, we have
P r ( P A 1 | φ T , ) = φ T
P r ( P A 0 | φ T , ) = 1 φ T
where P r ( P A i | φ T , ) , and ( i = 0 , 1 ) indicates the probability that P belongs to A i . P r ( P A 0 | φ T , ) indicates the probability that P contains faults but cannot be revealed by executing T , and P r ( P A 1 | φ T , ) indicates the probability that P contains faults and can be revealed by executing T .
Figure 3. The division of program space Ω in the case of zero-failure [29].
We note that can occur under the following conditions: (1) P A 0 , for which the failure rate or failure probability distribution is unknown; (2) P A 1 , and P = P G . Let A r ( r = 0 , 1 ) denote the events P A 0 , P A 1 , and let f ( θ | , φ T ) indicate the conditional probability density function of the failure rate for continuous-type software or failure probability for discrete-type software given the observation of and the probability φ T . Then, we have
f ( θ | , φ T ) = f ( θ , A 0 | , φ T ) + f ( θ , A 1 | , φ T )
The first term on the right side of (3) is
f ( θ , A 0 | , φ T ) = f ( θ , A 0 , , φ T ) Pr ( , φ T ) = f ( θ | A 0 , , φ T ) Pr ( A 0 | , φ T ) Pr ( , φ T ) Pr ( , φ T ) = f ( θ | A 0 , , φ T ) Pr ( A 0 | , φ T ) = f ( θ | A 0 , , φ T ) ( 1 φ T )
The second term on the right side of (3) is
f ( θ , A 1 | , φ T ) = f ( θ , A 1 , , φ T ) Pr ( , φ T ) = f ( θ | A 1 , , φ T ) Pr ( A 1 | , φ T ) Pr ( , φ T ) Pr ( , φ T ) = f ( θ | A 1 , , φ T ) Pr ( A 1 | , φ T ) = f ( θ | A 1 , , φ T ) φ T
Substituting (4) and (5) into (3), we have
f ( θ | , φ T ) = f ( θ | A 0 , , φ T ) ( 1 φ T ) + f ( θ | A 1 , , φ T ) φ T
where f ( θ | A 0 , , φ T ) is the conditional probability density function of the failure rate or failure probability when event P A 0 occurs. Thus, given the observation of , i.e., r = 0 , the probability density function of the failure rate or failure probability is expressed by a Bayesian posterior distribution with no a priori information f ( θ | A 0 , , φ T ) .
For continuous-type software, we have [7,30]
f ( θ | A 0 , , φ T ) = G a m m a ( 1 , T a ) ( θ )
For discrete-type software, we have [7,30]
f ( θ | A 0 , , φ T ) = β ( 1 , N + 1 ) ( θ )
For f ( θ | A 1 , , φ T ) , P = P G , which means that the software contains no faults and the failure rate or failure probability is 0, i.e., the probability of event θ = 0 is 1. We use the d e l t a -distribution to approximately express the distribution of the failure rate or failure probability [25]:
δ ( θ ) = { 1 / ε θ [ 0 , ε ] , ε > 0 , ε 0 0 θ [ 0 , ε ]
Therefore, for continuous-type software, the failure rate density function introducing TE in the case of zero-failure is
f ( θ | , φ T ) = G a m m a ( 1 , T a ) ( θ ) ( 1 φ T ) + δ ( θ ) φ T
For discrete-type software, the failure probability density function introducing TE in the case of zero-failure is
f ( θ | , φ T ) = β ( 1 , N + 1 ) ( θ ) ( 1 φ T ) + δ ( θ ) φ T
Given the reliability demand of SRDT ( θ 0 , C ) , where θ 0 is the expected failure rate or failure probability and C is the upper confidence limit, from (6), the following can be derived to obtain the TE-SRDT-0F scheme:
P r ( θ θ 0 ) = 0 θ 0 f ( θ | , φ T ) d θ = 0 θ 0 f ( θ | A 0 , , φ T ) ( 1 φ T ) + f ( θ | A 1 , , φ T ) φ T d θ C
b.
Using TE-SRDT-0F to Make a Test Plan
(1)
Test Plan with TE-SRDT-0F for Continuous-type Software (TE-SRDT-0F-CS)
Let λ indicate the failure rate for continuous-type software. In the case of zero-failure, the probability density function of the failure rate λ with respect to the introduced TE is f ( λ | , φ T ) = G a m m a ( 1 , t ) ( λ ) ( 1 φ T ) + δ ( λ ) φ T . For the given demand ( λ 0 , C ) (where λ 0 is the expected failure rate and C is the upper confidence limit), we can obtain the minimum test time T a for TE-SRDT-0F-CS from (12), which is the minimum value of t in the following formula:
Pr ( λ λ 0 ) = 0 λ 0 f ( λ | , φ T ) d λ = 0 λ 0 G a m m a ( 1 , t ) ( λ ) ( 1 φ T ) d λ + 0 λ 0 δ ( λ ) φ T d λ = ( 1 φ T ) 0 λ 0 G a m m a ( 1 , t ) ( λ ) d λ + φ T = ( 1 φ T ) ( 1 e t λ 0 ) + φ T C
Therefore, we have
t 1 λ 0 ln ( 1 C 1 φ T )
From (14), the minimum test time T a is
T a = 1 λ 0 ln ( 1 C 1 φ T )
When TE is not considered, for continuous-type software in the case of zero-failure, the probability density function of failure rate λ is f ( λ ) = G a m m a ( 1 , t ) ( λ ) . For the given demand ( λ 0 , C ) , the demanded T a is the minimum value of t in (16).
Pr ( λ λ 0 ) = 0 λ 0 f ( λ ) d λ = 0 λ 0 G a m m a ( 1 , t ) ( λ ) d λ = 1 e t λ 0 C
which means that T a is
T a = 1 λ 0 ln ( 1 C )
From (15) and (17), we note that the SRDT without considering the TE is a special case in which φ T is 0. For (15), suppose φ T is an independent variable and T a is a dependent variable, which means that T a is a function of φ T . To compute the derivation of φ T , we have
T a = 1 λ 0 1 φ T 1 C 1 C ( 1 φ T ) 2 = 1 λ 0 ( 1 φ T )
because λ 0 > 0 , 0 φ T < 1 , T a < 0 . This means that T a is a decreasing function of φ T . T a decreases as φ T increases. When φ T = 0 , T a reaches the maximum value of 1 λ 0 ln ( 1 C ) . Therefore, the demanded SRDT time with introduced TE is shorter than that without considering TE. Table 1 shows the relationship between the SRDT time and the reliability demand in the case of zero-failure and when TE is introduced.
Table 1. The relationship between test time T a and ( λ 0 , C , φ T ) in the case of zero-failure.
Obviously, the conventional test plan without introducing TE is a special case in which φ T = 0 . Taking λ 0 = 0.001 C = 0.99 as an example, the test time in the conventional scheme is 4605; for the TE-introduced scheme, suppose φ T = 0.5 , and the test time is 3912, which is a 15.1% reduction. Supposing φ T = 0.9 , the test time is 2302, which is a 50% reduction.
(2)
Test Plan with TE-SRDT-0F for Discrete-type Software (TE-SRDT-0F-DS)
Let λ indicate the failure rate for continuous-type software. In the case of zero-failure, the probability density function of the failure rate λ with respect to the introduced TE is f ( λ | , φ T ) = G a m m a ( 1 , t ) ( λ ) ( 1 φ T ) + δ ( λ ) φ T . For the given demand ( λ 0 , C ) (where λ 0 is the expected failure rate and C is the upper confidence limit), we can obtain the minimum test time T a for TE-SRDT-0F-CS from (12), which is the minimum value of t in the following formula.
Let p indicate the failure probability for discrete-type software. From (11), we know that the density function of p in the case of zero-failure is f ( p | , φ T ) = β ( 1 , n + 1 ) ( p ) ( 1 φ T ) + δ ( p ) φ T . For the given demand ( p 0 , C ) (where p 0 is the expected value for failure probability and C is the upper confidence limit), we can obtain the minimum number of test cases for TE-SRDT-0F-DS from (12), which is the minimum value of n in the following formula:
Pr ( p p 0 ) = 0 p 0 f ( p | , φ T ) d p = 0 p 0 β ( 1 , 1 + n ) ( p ) ( 1 φ T ) d p + 0 p 0 δ ( p ) φ T d p = ( 1 φ T ) 0 p 0 β ( 1 , 1 + n ) ( p ) d p + φ T = ( 1 φ T ) ( 1 ( 1 p 0 ) n + 1 ) + φ T C
Therefore, we have
n ln ( 1 C 1 φ T ) / ln ( 1 p 0 ) 1
From (20), the minimum number of test cases is
N = [ ln ( 1 C 1 φ T ) / ln ( 1 p 0 ) ]
where [.] represents rounding.
When TE is not considered, for discrete-type software, in the case of zero-failure, the density function is f ( p ) = β ( 1 , n + 1 ) ( p ) . For the given demand ( p 0 , C ) , the demanded test case number is the minimum value of n in (22).
Pr ( p p 0 ) = 0 p 0 f ( p ) d p = 0 p 0 β ( 1 , n + 1 ) ( p ) d p = 1 ( 1 p ) n + 1 C
which means that N is
N = [ ln ( 1 C ) / ln ( 1 p 0 ) ]
From (21) and (23), we note that SRDT without considering TE is a special case in which φ T = 0. For (21), let Y = ln ( 1 C 1 φ T ) / ln ( 1 p 0 ) and suppose φ T is an independent variable and Y is a dependent variable, which means that Y is a function of φ T . To compute the derivation of φ T , we have
Y = 1 ln ( 1 p 0 ) 1 φ T 1 C 1 C ( 1 φ T ) 2 = 1 ( 1 φ T ) ln ( 1 p 0 )
because 0 < p 0 < 1 , 0 φ T < 1 , Y < 0 . This means that Y is a decreasing function of φ T . Y decreases as φ T increases. When φ T = 0 , Y reaches the maximum value of ln ( 1 C ) ln ( 1 p 0 ) . Therefore, the number of test cases with introduced TE is lower than that without considering TE. Table 2 shows the relationship between the number of test cases and the reliability demand in the case of zero-failure and when TE is introduced.
Table 2. Relationships between the number of test cases N and ( p 0 , C , φ T ) in the case of zero-failure.
Obviously, the number of test cases decreases dramatically after considering the TE.

3.2. TE-Introduced SRDT in the Case of Revealed Failures (TE-SRDT-F)

3.2.1. The Basic Principle in the Case of Nonzero Failure

In the case of revealed failures, the program space Ω is divided, as shown in Figure 4. Here, P , T , and φ T have the same meanings as in Section 2.1. Let N be the test case number, r be the revealed failure number ( r > 0), and T a be the total test time. We still use to describe the test results, that is, = { N tests, r failures, and r 0 ; the total test time is T a }. According to , φ T is discomposed as follows: φ 1 = P r ( T detects 1 failure in P ), φ 2 = P r ( T detects 2 failures in P ), , φ r = P r ( T detects r failures in P ), and φ r + 1 = P r ( T detects r + 1 failures at least in P ). According to the definition of φ T , the following equation holds:
φ T = i = 1 r + 1 φ i
Figure 4. Division of program space Ω in the case of revealed failures.
Then, Ω is divided into r + 2 subsets, A 0 , A 1 , A 2 , , A r , A r + 1 , as shown in Figure 4. A 0 is the set of programs P with the following property: P contains faults that cannot be revealed by executing T , denoted as A 0 = { P | P Ω ,   f a u l t P , 0 f a i l u r e b y T } . A i ( i = 1 , 2 , , r ) is the set of programs P with the following property: P contains faults, and test set T can reveal i failures, denoted as A i = { P | P Ω ,   f a u l t P , i f a i l u r e s b y T } . A r + 1 is the set of programs P with either of the following properties: P contains faults, test set T can reveal at least r + 1 failures, or P is correct, denoted as A r + 1 = { P | P Ω ,   f a u l t P , r + 1 f a i l u r e s b y T a t l e a s t } P G .
Therefore, we have
P r ( P A i | φ T , ) = φ i ( i = 1 , 2 , , r , r + 1 )
P r ( P A 0 | φ T , ) = 1 i = 1 r + 1 φ i
where P r ( P A i | φ T , ) ( i = 0 , 1 , 2 , , r + 1 ) indicates the probability that P belongs to A i . P r ( P A 0 | φ T , ) indicates the probability that P contains faults but cannot be revealed by T , and P r ( P A i | φ T , ) ( i = 1 , 2 , , r + 1 ) indicates the probability that P contains faults and can reveal i failures by T .
We note that can occur under the following conditions: (1) P A 0 and the failure rate or failure probability distribution is unknown; (2) P A i ( i = 1 , 2 , , r ) and the failure rate or failure probability distribution is unknown; and (3) P A r + 1 and P = P G . Let A r ( r = 0 , 1 , 2 , , r , r + 1 ) denote the events P A 0 , P A 1 , , P A r + 1 , and let f ( θ | , φ T ) indicate the conditional probability density function of the failure rate for continuous-type software or the failure probability for discrete-type software given the observation of and φ T . Then, we have
f ( θ | , φ T ) = f ( θ , A 0 | , φ T ) + i = 1 r f ( θ , A i | , φ T ) + f ( θ , A r + 1 | , φ T )
The first term on the right side of (28) is
f ( θ , A 0 | , φ T ) = f ( θ , A 0 , , φ T ) Pr ( , φ T ) = f ( θ | A 0 , , φ T ) Pr ( A 0 | , φ T ) Pr ( , φ T ) Pr ( , φ T ) = f ( θ | A 0 , , φ T ) Pr ( A 0 | , φ T ) = f ( θ | A 0 , , φ T ) ( 1 i = 1 r + 1 φ i )
The second term on the right side of (28) is
i = 1 r f ( θ , A i | , φ T ) = i = 1 r f ( θ , A i , , φ T ) Pr ( , φ T ) = i = 1 r f ( θ | A i , , φ T ) Pr ( A i | , φ T ) Pr ( , φ T ) Pr ( , φ T ) = i = 1 r f ( θ | A i , , φ T ) Pr ( A i | , φ T ) = i = 1 r f ( θ | A i , , φ T ) φ i
The third term on the right side of (28) is
f ( θ , A r + 1 | , φ T ) = f ( θ , A r + 1 , , φ T ) Pr ( , φ T ) = f ( θ | A r + 1 , , φ T ) Pr ( A r + 1 | , φ T ) Pr ( , φ T ) Pr ( , φ T ) = f ( θ | A r + 1 , , φ T ) Pr ( A r + 1 | , φ T ) = f ( θ | A r + 1 , , φ T ) φ r + 1
By substituting (29), (30), and (31) into (28), we have
f ( θ | , φ T ) = f ( θ | A 0 , , φ T ) ( 1 i = 1 r + 1 φ i ) + i = 1 r f ( θ | A i , , φ T ) φ i + f ( θ | A r + 1 , , φ T ) φ r + 1
where f ( θ | A i , , φ T ) ( i = 0 , 1 , 2 , , r ) indicates the conditional probability density function of the failure rate or failure probability. Thus, given the observation of , i.e., the failure number is r at most, the probability density function of the failure rate or failure probability is expressed by a Bayesian posterior distribution with no a priori information f ( θ | A 0 , , φ T ) .
For continuous-type software, we have
f ( θ | A i , , φ T ) = G a m m a ( 1 + r , T a ) ( θ ) ( i = 0 , 1 , 2 , , r )
For discrete-type software, we have
f ( θ | A i , , φ T ) = β ( 1 + r , 1 + N r ) ( θ ) ( i = 0 , 1 , 2 , , r )
where f ( θ | A r + 1 , , φ T ) indicates the conditional probability density function of the failure rate or failure probability when event P A r + 1 occurs. When P = P G , which means that the software contains no faults, the failure rate or failure probability is 0, i.e., the probability of event θ = 0 is 1. We use the d e l t a -distribution to approximately express the distribution of the failure rate or failure probability:
δ ( θ ) = { 1 / ε θ [ 0 , ε ] , ε > 0 , ε 0 0 θ [ 0 , ε ]
Therefore, for continuous-type software, the probability density function in TE-SRDT-F is
f ( θ | , φ T ) = G a m m a ( 1 + r , T a ) ( θ ) ( 1 i = 1 r + 1 φ i ) + i = 1 r G a m m a ( 1 + r , T a ) ( θ ) φ i + δ ( θ ) φ r + 1
For discrete-type software, the failure probability density function in TE-SRDT-F is
f ( θ | , φ T ) = β ( 1 + r , 1 + N r ) ( θ ) ( 1 i = 1 r + 1 φ i ) + i = 1 r β ( 1 + r , 1 + N r ) ( θ ) φ i + δ ( θ ) φ r + 1
Given the reliability demand ( θ 0 , C , r ) , where θ 0 is the expected failure rate or failure probability, C is the upper confidence limit, and r is the maximum failure number permitted in the SRDT, from (32), the following formula can be derived to obtain the TE-SRDT-F scheme:
Pr ( θ θ 0 ) = 0 θ 0 f ( θ | , φ T ) d θ = 0 θ 0 f ( θ | A 0 , , φ T ) ( 1 i = 1 r + 1 φ i ) d θ + 0 θ 0 i = 1 r f ( θ | A i , , φ T ) φ i d θ + 0 θ 0 f ( θ | A r + 1 , , φ T ) φ r + 1 d θ C

3.2.2. Using TE-SRDT-F to Make a Test Plan

a.
Test Plan with TE-SRDT-F for Continuous-type Software (TE-SRDT-F-CS)
Let λ indicate the failure rate of continuous-type software. In the case of revealed failures, the probability density function of the failure rate λ with respect to the introduced TE is
f ( λ | , φ T ) = G a m m a ( 1 + r , t ) ( λ ) ( 1 i = 1 r + 1 φ i ) + i = 1 r G a m m a ( 1 + r , t ) ( λ ) φ i + δ ( λ ) φ r + 1
For the given demand ( λ 0 , C , r ) (where λ 0 is the expected value for the failure rate, C is the upper confidence limit, and r is the maximum failure number permitted), we can obtain the minimum test time T a for TE-SRDT-F-CS from (38), which is the minimum value of t in the following formula.
Pr ( λ λ 0 ) = 0 λ 0 f ( λ | , φ T ) d λ = 0 λ 0 G a m m a ( 1 + r , t ) ( λ ) ( 1 i = 1 r + 1 φ i ) d λ + 0 λ 0 i = 1 r G a m m a ( 1 + r , t ) ( λ ) φ i d λ + 0 λ 0 δ ( λ ) φ r + 1 d λ = ( 1 i = 1 r + 1 φ i ) 0 λ 0 G a m m a ( 1 + r , t ) ( λ ) d λ + i = 1 r ( φ i 0 λ 0 G a m m a ( 1 + r , t ) ( λ ) d λ ) + φ r + 1 = ( 1 φ r + 1 ) 0 λ 0 G a m m a ( 1 + r , t ) ( λ ) d λ + φ r + 1 C
Therefore, we have
0 λ 0 G a m m a ( 1 + r , t ) ( λ ) d λ C φ r + 1 1 φ r + 1
When TE is not considered, for continuous-type software, in the case of revealed failures, the probability density function of failure rate λ is f ( λ ) = G a m m a ( 1 + r , t ) ( λ ) . For the given demand ( λ 0 , C , r ) , the demanded T a is the minimum value of t in (41).
Pr ( λ λ 0 ) = 0 λ 0 f ( λ ) d λ = 0 λ 0 G a m m a ( 1 + r , t ) ( λ ) d λ C
From (40) and (41), we note that the difference between the test plan with introduced TE and the test plan without considering TE lies in the significance level, i.e., the former is C φ r + 1 1 φ r + 1 , whereas the latter is C . According to C φ r + 1 1 φ r + 1 < C ( C ( 0 , 1 ) , φ r + 1 ( 0 , 1 ) ) , which indicates that the test plan with the introduction of TE decreases the significance level, the minimum test time with the introduction of TE is shorter than that in conventional SRDT without considering TE. Table 3 shows the relationship between the test time and reliability demand in the case of 1-failure and when TE is introduced.
Table 3. The relationship between test time T a and ( λ 0 , C , φ T ) in the case of r = 1 .
Obviously, the conventional test plan without introducing TEs is a special case in which φ 2 = 0 . After TE is introduced, the test time is shorter than that of the conventional approach, which indicates that we can reduce the required test time by introducing TE.
b.
Test Plan with TE-SRDT-F for Discrete-type Software (TE-SRDT-F-DS)
Let p indicate the failure probability for discrete-type software. From (37), we know that the density function of p in the case of revealed failures is
f ( p | , φ T ) = β ( 1 + r , 1 + n r ) ( p ) ( 1 i = 1 r + 1 φ i ) + i = 1 r β ( 1 + r , 1 + n r ) ( p ) φ i + δ ( p ) φ r + 1
For the given demand ( p 0 , C , r ) , we can obtain the minimum number of test cases for TE-SRDT-F-DS from (38), which is the minimum value of n in the following formula.
Pr ( p p 0 ) = 0 p 0 f ( p | , φ T ) d p = 0 p 0 β ( 1 + r , 1 + n r ) ( p ) ( 1 i = 1 r + 1 φ i ) d p + 0 p 0 i = 1 r β ( 1 + r , 1 + n r ) ( p ) φ i d p + 0 p 0 δ ( p ) φ r + 1 d p = ( 1 i = 1 r + 1 φ i ) 0 p 0 β ( 1 + r , 1 + n r ) ( p ) d p + i = 1 r ( φ i 0 p 0 β ( 1 + r , 1 + n r ) ( p ) d p ) + φ r + 1 = ( 1 φ r + 1 ) 0 p 0 β ( 1 + r , 1 + n r ) ( p ) d p + φ r + 1 C
Therefore, we have
0 p 0 β ( 1 + r , 1 + n r ) ( p ) d p C φ r + 1 1 φ r + 1
When TE is not considered, for discrete-type software, in the case of revealed failures, the density function for the failure probability is f ( p ) = β ( 1 + r , 1 + n r ) ( p ) . For the given demand ( p 0 , C , r ) , the number of demanded test cases is the minimum value of n in (44).
P r ( p p 0 ) = 0 p 0 f ( p ) d p = 0 p 0 β ( 1 + r , 1 + n r ) ( p ) d p C
From (43) and (44), we note that the difference between the test plan that introduced TE and that without considering TE lies in the significance level, i.e., the former is C φ r + 1 1 φ r + 1 , whereas the latter is C . According to C φ r + 1 1 φ r + 1 < C ( C ( 0 , 1 ) , φ r + 1 ( 0 , 1 ) ) , the scheme introducing TE leads to a reduction in the significance level, so the minimum number of test cases required is lower than that in the conventional scheme. Table 4 shows the relationship between the number of test cases and the reliability demand in the case of 1-failure and the introduced TE.
Table 4. Relationships between test case numbers N and ( p 0 , C , φ T ) .
Obviously, the conventional test plan without introducing TE is a special case in which φ 2 = 0 . After TE is introduced, the test case number is less than that of the conventional approach, which indicates that we can reduce the demanded test case number by introducing TE.
In order to clearly show the results of mathematical derivation, we summarize the traditional scheme and the proposed schemes in this paper, which are shown in Table 5.
Table 5. Schemes for SRDT under different conditions.

3.3. Estimation of TE by Statistical Fault Injection

3.3.1. The Basic Principle of Statistical Fault Injection

Let Ω be the space of all possible programs P , and let P be any mutation version derived from P except for the fact that each P contains a different set of possible faults. Suppose P G is a mutation version with zero faults derived from P , i.e., P G is a faultless version; obviously, both P and P G belong to Ω .
Thus, the estimation of TE mainly includes the following three steps:
(1)
Generate faults based on program mutation, and construct a fault pool Θ , which contains all possible faults.
(2)
Randomly select faults from Θ according to the probability distribution of faults and inject them into P so that we can obtain a new program containing seeded faults, that is, the mutation program P . Thus, the faults inserted in P have the same statistical distribution characteristics as those in the original program P . Here, the mutation program’s construction approach is called statistical fault injection. We used this approach to construct Ω , consisting of mutation programs P .
(3)
Estimate the TE according to the implementation of test set T on the set P .
The process above is based on the following hypothesis:
(1)
All failures induced by seeded faults can propagate to the output stage.
(2)
Before fault injection, faults present in the original program P cannot be detected by T .
(3)
Each seeded fault is independent and corresponds to one revealed failure not masked or compensated by another failure [25].
The seeded faults in P have the same statistical distribution as those in P , and the faults already present in P cannot be revealed by T , so the original faults do not contribute to the TE of T . Therefore, the performance of T on P is equivalent to the performance of T on P G plus random fault sets F S i . The performance of T on F S i simulates the performance of T on P , which is a random realization of P G by inserting faults with the same statistical distribution as P . Since P is any version with random faults based on P G , observing how T performs on F S i is equivalent to how T performs on P .
For the TE-SRDT-0F scheme, we only need to compute φ T . We divide the set P into two subsets, S 1 and S 2 . S 1 indicates the subset containing P whose faults can be revealed by T , and S 2 indicates the subset containing P whose faults cannot be revealed by T . We compute the frequency of P falling into S 1 , which can be used as the estimated value of φ T .
For the TE-SRDT-F scheme, suppose that r is the maximum failure number permitted, and we need to compute φ r + 1 . We divide the set of P into r + 2 subsets, that is, S i ( i = 0 , 1 , 2 , , r + 1 ) , where S 0 indicates the subset of P whose faults cannot be revealed by T . S i ( i = 1 , 2 , , r ) indicates the subset of P that can only have i failures detected by T , and S r + 1 indicates the subset of P that can have r + 1 failures detected at least. We compute the frequency of P falling into S r + 1 , which can be used as the estimated value of φ r + 1 .

3.3.2. Estimation Method by Statistical Fault Injection

The estimation procedure is as follows.
1.
A software fault pool is constructed.
Here, we only consider code faults, excluding system function faults or requirement faults, as they finally embody themselves in code.
2.
The mutation program P is constructed.
We randomly pick faults from the fault pool to create P , which includes the following steps:
(1)
Determine the probability distribution of faults in P . It can be obtained from prior information or can conform to existing hypotheses. Generally, we suppose that it conforms to a Poisson distribution or exponent distribution.
(2)
Randomly determine the number M i of faults to be injected according to the probability distribution.
(3)
Randomly pick M i faults from the fault pool.
(4)
Seed faults into the actual program P , which now becomes the carrier for the newly generated set of faults.
3.
The value of TE is estimated according to the following test scenarios.
a.
In the case of zero-failure, the estimation of φ T is as follows.
Three scenarios arise in the process of testing P by T :
(1)
We apply T , and one failure occurs. The cause of this failure can be traced back to one of the newly inserted faults in the fault set F S i . This means that F S i can be detected by T , i.e., P belongs to S 1 , denoted as X ( F S i ) = 1 .
(2)
We apply T , and one failure occurs that cannot be traced back to any of the newly inserted faults in F S i . Therefore, it is a fault introduced by the dependence between newly inserted faults and those in the original program P . In this case, the detected “real” fault is removed, and the experiment is started again with a new improvement P .
(3)
We apply T , and no failure occurs. This means that T fails to reveal faults in F S i . Obviously, P belongs to S 2 , denoted as X ( F S i ) = 0 .
We repeat Step 1 to Step 3 until all the mutation programs are tested by T . Then, we obtain the following estimate for φ T [25]:
φ ^ T = i = 1 F X ( F s i ) / F
b.
In the case of revealed failures, the estimation of φ r + 1 is as follows:
Let φ i ( i = 0 , 1 , 2 , , r + 1 ) indicate the number of P falling into S i and initialized to zero.
Three scenarios arise in the process of testing P by T :
(1)
When we apply T and k ( k 0 ) , failures occur. All causes of these failures can be traced back to the newly inserted faults in the fault set F S i . This means that F S i can be detected by T and that the failure number is k . When k r , P falls into set S k , denoted as φ k = φ k + 1 . When k > r , P falls into S r + 1 , denoted as φ r + 1 = φ r + 1 + 1 .
(2)
We apply T , and no failure occurs. This indicates that T fails to reveal faults in F S i , i.e., P falls into S 0 , denoted as φ 0 = φ 0 + 1 .
(3)
We apply T , and m failures occur, and at least one cause of one failure cannot be traced back to the newly inserted faults in F S i . Therefore, it is a fault introduced by the dependence between new inserted defects and those in the original program P . In this case, the detected “real” fault is removed, and the experiment is started again with a new improvement P .
We repeat Step 1 to Step 3 until all the mutation programs are tested by T . Then, we obtain the following estimate for φ i :
φ ^ i = φ i F (   i = 1 , 2 , , r , r + 1 )
If the sample size F is large enough, according to the law of large numbers from probability theory, (48) will converge to the real TE value. In real situations, we should determine the value of F according to the corresponding resources. From the above process, we can obtain the estimated value of φ i ( i = 0 , 1 , 2 , , r + 1 ) . Here, we need to estimate φ r + 1 .

3.4. SRDT Framework Introducing TE

The procedure of SRDT introducing TE is given in Figure 5, which includes the following steps:
Figure 5. The framework of SRDT with introduced TE.
(1)
Identify the type of software, discrete-type software or continuous-type software.
(2)
Introduce the given reliability demand according to the maximum failure number r , and determine which type of plan to use, zero-failure plan or revealed-failure plan.
(3)
For the zero-failure plan, estimate the value of φ T ; for the revealed-failure plan, estimate the value of φ r + 1 .
(4)
For discrete-type software, according to the zero-failure plan or revealed-failure plan, determine the minimum test case number by the TE-SRDT-0F-DS plan or TE-SRDT-F-DS plan, respectively. For continuous-type software, the minimum test time is determined by the TE-SRDT-0F-CS plan or TE-SRDT-F-CS plan.
(5)
Build the testing environment.
(6)
Construct the operational profile and generate the corresponding number of reliability test cases according to Step 4.
(7)
Execute test cases and collect failure data.
(8)
Make decisions on acceptance or rejection.

4. Case Study

4.1. Experimental Setup

We chose the Siemens program suite as the subject program. It is the most commonly used testing suite in the field of software defect localization research. It can be downloaded from SIR (Software Infrastructure Repository http://sir.unl.edu/portal/index.php (accessed on 1 August 2024)).
Researchers at Siemens wanted to learn about the effectiveness of the fault detection coverage criteria. Therefore, they created a base version by manually seeding defects, usually by modifying a single line of code in the program. Their goal was to introduce defects on the basis of existing experiments as much as possible. Ten people were involved in seeding defects, most of them with no knowledge of each other’s work. The result of this effort was the generation of multiple mutation versions for each of Siemens’ seven standard programs, each containing a single defect.
It should be noted that the Siemens program suite is the subject of this example verification, but the model is not restricted to the content of the verification, which is used just because it is widely cited in the field of software testing. This method is applicable to any software.
For each program, the original package contains a certain number of original faults, as shown in the column ”Number of faults” in Table 6. The original file states that each defect can be detected by at least 3~350 test cases in the test pool in the Unix environment. Here, the experimental environment is a Windows operating system and GCC compiler.
Table 6. The features of the Siemens program suite.
All program information is given in Table 6.

4.2. Experimental Procedure

Here, the experiment focuses on Step 1 to Step 4 shown in Figure 5 to illustrate the application steps of the method proposed in this paper, that is, how to determine the SRDT scheme according to the software type and reliability requirements and obtain the estimate of the TE through the statistical fault injection method so as to obtain an explicit improved method and results. The remaining Step 5 to Step 8 are the same as the traditional software reliability testing methodology, so they are omitted here.
First, we used the “Tcas” program as the subject program and then obtained all test results from the Siemens program suite.
Some of the faults and test cases are selected as our fault pool and test case pool, respectively, denoted as Ep and Tp. The fault pool contains 34 faults and is labeled V1-V34. The test case pool contains 870 test cases and is labeled t1–t870. Then, 15 mutation programs P are constructed, that is, F = 15 . The procedures are described as follows:
Firstly, we adopt the Akiyama model [62] M ^ = 4.86 + 0.018 × L (where L equals the line of code) to obtain the potential failure number of “Tcas”, M ^ 7 . Then, we use the Poisson distribution as the uniform distribution of residual faults. Therefore, the probability density function is P r ( M i = k ) = λ k k ! e λ ( k = 0 , 1 , 2 , ) , where λ = 7 .
According to the Poisson distribution, 15 numbers are randomly selected: 3, 6, 4, 7, 5, 6, 8, 6, 7, 5, 8, 4, 6, 7, and 7.
The mutation program P , which contains the same number of faults as the above random numbers, is selected. The details of the inserted faults of P are shown in Table 7.
Table 7. Mutation programs of the “Tcas” program.
The test set T was used to test the 15 mutation programs, as well as the number of mutation programs P i in which inserted faults were detected and counted. The TE was estimated by the above approach, and the size of the test set was adjusted until a steady TE value was reached. The test case numbers of the test sets T were set to 100, 150, 200, 250, 300, 350, and 400. The TE value was computed in the cases of the zero-failure scheme and one-revealed-failure (i.e., r = 1 ) scheme. Therefore, the number of mutation programs for which at least one defect was detected, denoted as K1, was counted, and the number of mutation programs for which at least two faults were detected, denoted as K2, was counted. The test results and TE estimate values are shown in Table 8.
Table 8. Test results.
Table 8 shows that all the estimated TE values tend to be stable, as shown in Figure 6 and Figure 7.
Figure 6. The fitting diagram of φ ^ T for Tcas.
Figure 7. The fitting diagram of φ ^ 2 for Tcas.
According to the TE values in Table 7, we present the TE-SRDT-0F-DS and TE-SRDT-F-DS (in the case of failure number r = 1 ) schemes. The results are shown in Table 9.
Table 9. The minimum test case number of the TE-SRDT for the “Tcas” program.
From Table 9, the experimental results show that within the same limitations of reliability requirements and confidence levels, this approach gives the required number of tests with no failures, 25,648, compared to 46,049 with the traditional method, which greatly reduces the number of test cases required, but achieves the same level of confidence and reliability. When one failure is allowed, this approach gives a number of 42,166 compared to 66,380 for the traditional approach, so this approach greatly reduces the number of test cases required while achieving the same level of confidence and reliability. That is, the proposed method can effectively reduce the number of test cases, i.e., accelerate the testing process and improve the efficiency of the SRDT.
The test results for the other six programs are shown in Table 10 and Table 11. The corresponding fitting diagrams are shown in Figure 8, Figure 9, Figure 10, Figure 11, Figure 12, Figure 13, Figure 14 and Figure 15.
Table 10. All test results for the Siemens program suite.
Table 11. Effect of TE on the minimum number of test cases for the Siemens program suite.
Figure 8. The fitting diagram of φ ^ T for Totinfo.
Figure 9. The fitting diagram of φ ^ 2 for Totinfo.
Figure 10. The fitting diagram of φ ^ T for Replace.
Figure 11. The fitting diagram of φ ^ 2 for Replace.
Figure 12. The fitting diagram of φ ^ T for Schedule1.
Figure 13. The fitting diagram of φ ^ T for Schedule2.
Figure 14. The fitting diagram of φ ^ T for Printtoken1.
Figure 15. The fitting diagram of φ ^ T for Printtoken2.
From Table 10 and Table 11, the method gives the same conclusions for the other six programs. In addition, it can be seen that the TE of different programs is different, and the higher the TE, the smaller the number of test cases required, that is, the greater the increase in test efficiency. This once again proves that it is not reasonable to perform the same number of statistical tests on all software without distinction.

4.3. Discussion of Experimental Results

(1)
Impact of TE on SRDT plan
Take TCAS for example, which is shown in Table 8.
i.
If TE and prior information are not considered, the required number of tests with no failures is N = [ ln ( 1 C ) / ln ( 1 p 0 ) ] = 46,049 for p 0 = 0.0001 and C = 0.99 . For φ ^ T = 0.87 , for the given ( p 0 , C ) = ( 0.0001 , 0.99 ) , according to Equation (43), then the required number of tests with no failures is N = 25,398, and the test case number reduction percentage is 44.8%.
ii.
If TE and prior information are not considered, the required number of tests with one failure is N = 66,380 for the given ( p 0 , C ) = ( 0.0001 , 0.99 ) . For φ ^ T = 0.87 , then the required number of tests with one failure is N = 41,866, and the test case number reduction percentage is 36.9%.
The same conclusions can be found in the other six programs, which are shown in Table 10. Thus, the experimental results show that within the same limitation of requirements and confidence levels, this approach can effectively reduce the number of test cases, i.e., accelerate the test process and improve the efficiency of the SRDT.
(2)
Stability of TE
From Table 8 and Table 10, it can be seen that when the test set T is continuously updated to make the test set larger and larger, its ability to find injected defects becomes stronger, and TE eventually tends to a stable value.
i.
For the TCAS program, when the number of test cases in the test set is 100, the TE is estimated to be 0.067. When the numbers of test cases in the test set is 150 and 200, the TE is estimated to be 0.4 and 0.67, respectively. When the number of test cases in the test set is 250, the TE is estimated to be 0.87, and then it stabilizes at 0.87. When the test case set contains more than 250 test cases, e.g., 300, 350, or 400 test cases, the TE tends to stabilize at 0.87.
ii.
For the Totinfo program, when the numbers of test cases in the test set is 50, 100, 150, and 200, the TE is estimated to be 0.267, 0.467, 0.533, and 0.533, respectively. When the number of test cases in the test set is 250, the TE is estimated to be 0.733, and then it stabilizes at 0.733. When the test case set contains more than 250 test cases, e.g., 300, 350, or 400 test cases, the TE tends to be stable at 0.733.
The same conclusions can be found in the other five programs, which are shown in Table 10 and Figure 8, Figure 9, Figure 10, Figure 11, Figure 12, Figure 13, Figure 14 and Figure 15. Therefore, the experimental results indicate that TE has a certain degree of stability and will eventually approach a stable value.
(3)
Additional comments
In this paper, we believe that the original program P is a faultless version of the program P G with some defects. Then, we create a large number of mutation versions P through fault injection technology, which are also P G version-based programs with random defects F S i . Thus, it can be assumed that the mutation program P contains defects with the same statistical distribution characteristics as the original program. The test on the mutation program P is considered to be similar to the test on the original program.
However, the reduction in the number of test cases is different for different programs. This is because different programs have different testability, which is an intrinsic quality property of the program, but is reflected in the outward manifestation of TE of the test set. For example, if some defects of a program require more test cases than others, the testability of a program with the former defects is essentially lower than that of a program with the latter. This confirms that it is not appropriate for programs with different levels of testability to use the same number of statistical test cases to reach the same expected reliability level.

5. Conclusions and Future Work

This paper extends the research on the introduction of TE to the SDRT approach, as it provides a quantitative assessment of testability as an indicator of the statistical power of the test set. First, we suggest the principle of the SDRT approach introducing TE in the case of zero-failure by modeling the program space division according to the test set, and then propose a detailed form of determining the test effort based on the Bayesian prior distribution. Second, we present the principle and determining form of the SDRT approach introducing TE in the case of revealed failures, which is considered an ongoing issue in many studies. Then, the estimation method of TE by statistical fault injection is studied further by combining the different cases of zero-failure and revealed failures, and the uniform framework of the improved SRDT is proposed for both failure conditions and different software types, i.e., discrete-type software and continuous-type software. Finally, a case study on the Siemens program suite is presented to describe the implementation procedures and validate the testing efficiency of the improved testing method.
Future work should address the limitations of our approach to enhance its effectiveness. Apparently, the additional testing effort for generating prior test cases and estimating the value of TE are some disadvantages of the improved testing approach. Therefore, we should consider the balance between profits (testing efficiency improvement) and costs (i.e., additional testing effort) according to the actual conditions. Moreover, the detailed statistical fault injection method needs to be studied further, and additional hypotheses should be discussed and formulated further.

Author Contributions

Conceptualization, Q.L.; data curation, Q.L.; methodology, Q.L., L.Z. and S.L.; project administration, Q.L.; resources, Q.L.; software, Q.L.; supervision, Q.L., L.Z. and S.L.; validation, Q.L.; writing—original draft, Q.L.; writing—review and editing, Q.L., L.Z. and S.L. All authors have read and agreed to the published version of the manuscript.

Funding

This research was partially supported by the National Natural Science Foundation of China under the project titled “Fault behavior modeling and fault prediction of space-complex electromechanical systems based on causal networks”, grant number “52375073”.

Data Availability Statement

Data are contained within the article.

Acknowledgments

The authors would like to thank the editor and referees for their valuable comments.

Conflicts of Interest

The authors declare no conflicts of interest.

References

  1. Salama, M.; Bahsoon, R. Analysing and modelling runtime architectural stability for self-adaptive software. J. Syst. Softw. 2017, 133, 95–112. [Google Scholar] [CrossRef]
  2. Li, M.; Zhang, W.; Hu, Q.; Guo, H.; Liu, J. Design and Risk Evaluation of Reliability Demonstration Test for Hierarchical Systems with Multilevel Information Aggregation. IEEE Trans. Reliab. 2016, 66, 135–147. [Google Scholar] [CrossRef]
  3. Zheng, H.; Yang, J.; Zhao, Y. Reliability demonstration test plan for degraded products subject to Gamma process with unit heterogeneity. Reliab. Eng. Syst. Saf. 2023, 240, 1.1–1.15. [Google Scholar] [CrossRef]
  4. Sandoh, H. Reliability demonstration testing for software. IEEE Trans. Reliab. 1991, 40, 117–119. [Google Scholar] [CrossRef]
  5. Feller, W. An Introduction to Probability Theory and Its Applications. Am. Math. Mon. 1971, 59, 265. [Google Scholar] [CrossRef]
  6. Thayer, T.A.; Lipow, M.; Nelson, E.C. Software Reliability; North-Holland: Amsterdam, The Netherlands, 1978. [Google Scholar]
  7. Miller, K.W.; Morell, L.J.; Noonan, R.E. Estimating the probability of failure when testing reveals no failures. IEEE Trans. Softw. Eng. 1992, 18, 33–43. [Google Scholar] [CrossRef]
  8. Mann, N.R.; Schafer, R.E.; Singpurwalla, N.D. Methods for Statistical Analysis of Reliability and Life Data; Wiley: New York, NY, USA, 1974. [Google Scholar]
  9. Martz, H.F.; Waller, R.A. A Bayesian zero-failure (BAZE) reliability demonstration testing procedure. J. Qual. Technol. 1979, 11, 128–138. [Google Scholar] [CrossRef]
  10. Rahrouh, M. Bayesian Zero-Failure Reliability Demonstration; Durham University: Durham, NC, USA, 2005. [Google Scholar]
  11. MIL-HDBK-781A: Reliability Test Methods, Plans and Environments; US Department of Defence: Washington, DC, USA, 1996.
  12. Chen, G. Reliability test and estimation for 0-1 binary systems with unknown distributions. Reliab. Rev. 1995, 15, 19–25. [Google Scholar]
  13. Tal, O.; MoCollin, C.; Bendell, A. Reliability Demonstration for Safety-Critical Systems. IEEE Trans. Reliab. 2001, 50, 194–203. [Google Scholar] [CrossRef]
  14. Tal, O.; Bendell, A.; Mccollin, C. Comparison of methods for calculating the duration of software reliability demonstration testing, particularly for safety-critical systems. Qual. Reliab. Eng. Int. 2000, 16, 59–62. [Google Scholar] [CrossRef]
  15. Kececioglu, D. Reliability and Life Testing Handbook; Prentice Hall: Englewood Cliffs, NJ, USA, 1993. [Google Scholar]
  16. Malaiya, Y.K.; Li, N.; Bieman, J.; Karcich, R.; Skibbe, B. The relation between software test coverage and reliability. In Proceedings of the Fifth IEEE International Symposium on Software Reliability Engineering, Monterey, CA, USA, 6–9 November 1994; pp. 186–195. [Google Scholar]
  17. Chen, H.; Lyu, M.R.; Wong, W.E. An empirical study of the correlation between code coverage and reliability estimation. In Proceedings of the Third IEEE International Software Metrics Symposium, Berlin, Germany, 25–26 March 1996; pp. 133–141. [Google Scholar]
  18. Bertolino, A.; Strigini, L. On the use of testability measures for dependability assessment. IEEE Trans. Softw. Eng. 1996, 22, 97–108. [Google Scholar] [CrossRef][Green Version]
  19. Yang, M.C.K.; Wong, W.E.; Pasquini, A. Applying testability to reliability estimation. In Proceedings of the Ninth International Symposium on Software Reliability Engineering, Paderborn, Germany, 4–7 November 1998; pp. 90–99. [Google Scholar]
  20. Voas, J.M.; Miller, K.W. Software Testability: The New Verification. IEEE Softw. 1995, 12, 17–28. [Google Scholar] [CrossRef]
  21. ANSI/IEEE Standard 610.12-1990; IEEE standard Glossary of software Engineering Terminology. IEEE Press: New York, NY, USA, 1990.
  22. ISO/IEC25010; Systems and Software Engineering—Systems and Software Quality Requirements and Evaluation (SQuaRE)-System and Software Quality Models. International Standard Organization: Geneva, Switzerland, 2011.
  23. Hamlet, D.; Voas, J. Faults on its Sleeve: Amplifying Software Reliability Testing. In Proceedings of the 1993 ACM SIGSOFT International Symposium on Software Testing and Analysis, Cambridge, MA, USA, 28–30 June 1993; pp. 89–98. [Google Scholar]
  24. Chen, W.; Untch, R.H.; Gregg, R.H. Can fault-exposure-potential estimates improve the fault detection abilities of test suites? J. Softw. Test. Verif. Reliab. 2002, 4, 197–218. [Google Scholar] [CrossRef]
  25. Kuball, S.; May, J. Test-adequacy and statistical testing combining different properties of a test-set. In Proceedings of the 15th International Symposium on Software Reliability Engineering, Saint-Malo, Bretagne, France, 2–5 November 2004; pp. 161–172. [Google Scholar]
  26. Kuball, S.; Hughes, G.; May, J. The Effectiveness of Statistical Testing when Applied to Logic Systems. Saf. Sci. 2004, 42, 369–383. [Google Scholar] [CrossRef]
  27. Kuball, S.; May, J.H.R. A discussion of statistical testing on a safety-related application. Proc. Inst. Mech. Eng. Part O J. Risk Reliab. 2007, 221, 121–132. [Google Scholar] [CrossRef]
  28. Gough, H.; Kuball, S. Application of Statistical Testing to the Data Processing and Control System for the Dungeness B Nuclear Power Plant (Practical Experience Report). In Proceedings of the 2014 Tenth European Dependable Computing Conference, Newcastle, UK, 13–16 May 2014. [Google Scholar] [CrossRef]
  29. Li, Q.-Y.; Li, H.-F.; Wang, J. Study on the relationship between software test effectiveness and software reliability demonstration testing. In Proceedings of the 2010 3rd International Conference on Computer Science and Information Technology, Wuxi, China, 4–6 June 2010. [Google Scholar] [CrossRef]
  30. Ma, Z.; Zhang, W.; Wu, W.; Wang, J.; Liu, F. Overview of Software Reliability Demonstration Testing Research Method. J. Ordnance Equip. Eng. 2019, 40, 118–123. [Google Scholar]
  31. Tal, O. Software Dependability Demonstration for Safety-Critical Military Avionics System by Statistical Testing. Ph.D. Thesis, Nottingham Trent University, Nottingham, UK, 1999. [Google Scholar]
  32. Cho, C.K. An Introduction to Software Quality Control; Wiley: New York, NY, USA, 1980. [Google Scholar]
  33. Sawada, K.; Sandoh, H. Continuous model for software reliability demonstration testing considering damage size of software failures. Math. Comput. Model. 2000, 31, 321–326. [Google Scholar] [CrossRef]
  34. Chan, H.A. Accelerated stress testing for both hardware and software. In Proceedings of the Annual Reliability and Maintainability Symposium, Los Angeles, CA, USA, 26–29 January 2004; pp. 346–351. [Google Scholar]
  35. Tang, D.; Hecht, H. An approach to measuring and assessing dependability for critical software systems. In Proceedings of the 8th International Symposium on Software Reliability Engineering, Albuquerque, NM, USA, 2–5 November 1997; pp. 192–202. [Google Scholar]
  36. Hecht, M.; Hecht, H. Use of importance sampling and related techniques to measure very high reliability software. In Proceedings of the Aerospace Conference Proceedings, Big Sky, MT, USA, 18–25 March 2000; pp. 533–546. [Google Scholar]
  37. Chen, M.H.; Lyu, M.R.; Wong, W.E. Effect of code coverage on software reliability measurement. IEEE Trans Reliab. 2001, 50, 165–170. [Google Scholar] [CrossRef]
  38. Bishop, P.G. Estimating residual faults from code coverage. In Proceedings of the 21st International Conference on Computer Safety, Reliability and Security, Catania, Italy, 10–13 September 2002; pp. 10–13. [Google Scholar]
  39. ISO/IEC 9126-1:2001; Software Quality Attributes, Software Engineering-Product Quality, Part 1:Quality model. International Organization of Standardization: Geneva, Switzerland, 2001.
  40. Voas, J.M. Factors that Affect Software Testability. In Proceedings of the 9th Pacific Northwest Software Quality Conference, Portland, OR, USA, 7–8 October 1991; pp. 235–247. [Google Scholar]
  41. Jungmayr, S. Improving Testability of Object-Oriented Systems. Ph.D. Thesis, de-Verlag im Internet Gmbh, Berlin, Germany, 2004. [Google Scholar]
  42. Gao, J.; Shih, M.C. A Component Testability Model for Verification and Measurement. In Proceedings of the 29th annual International Computer Software and Application Conferences(COMPSAC’ 2005), Edinburgh, UK, 26–28 July 2005; pp. 211–218. [Google Scholar]
  43. Freedman, R.S. Testability of software components. IEEE Trans. Softw. Eng. 1991, 17, 553–564. [Google Scholar] [CrossRef]
  44. McGregor, J.; Srinivas, S. A Measure of Testing Effort. In Proceedings of the Conference on Object-Oriented Technologies, Toronto, ON, Canada, 17–21 June 1996. [Google Scholar]
  45. Richard, B.; Monica, M. Measures of testability as a basis for quality assurance. Softw. Eng. J. 1990, 5, 86–92. [Google Scholar]
  46. Nguyen, T.B.; Delaunay, M.; Robach, C. Testability Analysis For Software Components. In Proceedings of the International Confefence On Software Maintenance’2002 (ICSM’02), Montreal, QC, Canada, 3–6 October 2002; pp. 422–429. [Google Scholar]
  47. Lo, B.W.; Shi, H. A preliminary Testability Model for Object-Oriented Software. In Proceedings of the International Conference on Software Engineering: Education & Practice, Dunedin, New Zealand, 26–29 January 1998; pp. 330–337. [Google Scholar]
  48. Sohn, S.; Seong, P. Quantitative evaluation of safety critical software tastability based on fault tree analysis and entropy. J. Syst. Softw. 2004, 73, 351–360. [Google Scholar] [CrossRef]
  49. Khoshgoftaar, T.M. Predicting testability of program modules using a neural network. In Proceedings of the 3rd IEEE Symposium on Application Specific Systems and Software Engineering Technique, Richardson, TX, USA, 24–25 March 2000; pp. 57–62. [Google Scholar]
  50. Bruntink, M.; Deursen, A.V. Predicting class testability using object-oriented metrics. In Proceedings of the 4th International Workshop on Source Code Analysis and Manipulation (SCAM’04), Chicago, IL, USA, 15–16 September 2004. [Google Scholar]
  51. Voas, J.M. PIE: A Dynamic Failure-Based Technique. IEEE Trans. Softw. Eng. 1992, 18, 717. [Google Scholar] [CrossRef]
  52. Lin, J.C.; Lin, S.W.; Ian-Ho. An estimated method for software testability measurement. In Proceedings of the 8th International WorkShop on Software Technology and Engineering Practices (STEP’97), London, UK, 14–18 July 1997. [Google Scholar]
  53. Frankl, P.G.; Iakounenko, O. Further empirical studies of test effectiveness. In Proceedings of the 6th ACM SIGSOFT International Symposium on Foundations of Software Engineering, Lake Buena Vista, FL, USA, 3–5 November 1998; ACM Press: New York, NY, USA, 1998; pp. 153–162. [Google Scholar]
  54. Hutchins, M.; Foster, H.; Goradia, T.; Ostrand, T. Experiments on the effectiveness of dataflow and controlflow-based test adequacy criteria. In Proceedings of the 16th International Conference on Software Engineering, Sorrento, Italy, 16–21 May 1994; IEEE Press: New York, NY, USA, 1994; pp. 191–200. [Google Scholar]
  55. Frankl, P.G.; Weiss, S.N. An experimental comparison of the effectiveness of branch testing and data flow testing. IEEE Trans Softw. Eng. 1993, 19, 774–787. [Google Scholar] [CrossRef]
  56. Stott, D.T.; Ries, G.; Hsueh, M.C.; Iyer, R.K. Dependability analysis of a high-speed net work using software-implemented fault injection and simulated fault. IEEE Trans Comput. 1998, 47, 108–119. [Google Scholar] [CrossRef]
  57. Hamlet, R. Testing programs with the aid of a compiler. IEEE Trans. Softw. Eng. 1977, 3, 279–290. [Google Scholar] [CrossRef]
  58. DeMillo, R.; Lipton, R.; Sayward, F. Hints on test data selection: Help for the practicing programmer. IEEE Comput. 1978, 11, 34–43. [Google Scholar] [CrossRef]
  59. Howden, W.E. Weak mutation testing and completeness of test sets. IEEE Trans. Softw. Eng. 1982, 8, 371–379. [Google Scholar] [CrossRef]
  60. Leveugle, R.; Calvez, A.; Maistri, P.; Vanhauwaert, P. Statistical Fault Injection: Quantified Error and Confidence. In Proceedings of the Design, Automation & Test in Europe Conference & Exhibition, Nice, France, 20–24 April 2009; pp. 502–506. [Google Scholar]
  61. Leveugle, R.; Calvez, A.; Maistri, P.; Vanhauwaert, P. Precisely Controlling the Duration of Fault Injection Campaigns: A Statistical View. In Proceedings of the 2009 4th International Conference on Design & Technology of Integrated Systems in Nanoscal Era, Cairo, Egypt, 6–9 April 2009; pp. 149–154. [Google Scholar]
  62. Nanda, M.; Jayanthi, J.; Rao, S. An Effective Verification and Validation Strategy for Safety-Critical Embedded Systems. Int. J. Softw. Eng. Appl. 2013, 4, 123–142. [Google Scholar] [CrossRef]
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Article Metrics

Citations

Article Access Statistics

Multiple requests from the same IP address are counted as one view.