Next Article in Journal
Modeling and Simulation of an Integrated Synchronous Generator Connected to an Infinite Bus through a Transmission Line in Bond Graph
Previous Article in Journal
On Modular b-Metrics
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

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

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.
Symmetry 2024, 16(10), 1334; https://doi.org/10.3390/sym16101334
Submission received: 19 July 2024 / Revised: 21 September 2024 / Accepted: 1 October 2024 / Published: 9 October 2024
(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.

2. Related Works

The aim of our work is to propose an approach to improve the efficiency of SRDT by introducing TE. Thus, we review related works in the literature that address (i) SRDT and the software reliability acceleration testing method, (ii) software testability and TE, and (iii) software fault injection.

2.1. SRDT and Software Reliability Acceleration Testing Method

i.
SRDT Method
US MIL-HDBK-781A specifies two reliability demonstration testing methods for the hardware products as standard procedures: PRST and fixed-duration testing (FDT) [11]. It is then recommended that reliability demonstration testing be applied to software systems as well to certify that the required level of reliability has been achieved [4]. SRDT is based on two risks, that is, prespecified producer and consumer risks, and this process determines the maximum number of software failures during testing. As an alternative, Tal et al. proposed single-risk sequential testing (SRST) based on PRST [13,31], which satisfies the consumer risk criterion, while PRST provides much less consumer risk than required.
From a Bayesian point of view, Martz and Waller proposed a zero-failure reliability demonstration testing method named Bayesian zero-failure (BAZE) reliability demonstration testing [30,32,33]. Then, the concept of zero-failure reliability demonstration testing was introduced into software products [4].
For software such as those used to control production lines and computer operating systems, where reliability is discussed in terms of mean time between software failures (MTBF) and the number of bugs remaining in the software, Sandoh [4,33] proposed a continuous model for SRDT. Cho [32] and Sandoh [30] then investigated a discrete model. But none of the models mentioned above had taken into account the damage size of software failures. As such, Sandoh [33] proposed a continuous model for SRDT that considers the damage size of software failures as well as the number of software failures in the test.
Thus, the relevant methods can be divided into two categories; one is fixed-duration testing methods, and the other is non-fixed-duration testing methods. In this paper, the research is only conducted in the context of fixed-duration SRDT.
ii.
Software Reliability Acceleration Testing Method
Though SRDT is recognized as an important means, its large number of test cases often become a bottleneck for its large-scale promotion and application in practice. Therefore, more and more researchers have carried out research on whether it is possible to accelerate the process of software reliability testing under the premise of maintaining its essential characteristics.
Chan et al. gave the definition of software accelerated stress testing, and explained the basic principles of accelerated testing in combination with hardware [34]. Based on the idea of importance sampling, Tang [35] and Hecht [36] proposed to increase the sampling of key or critical operations to accelerate the exposure of defects that affect system safety. The inclusion of coverage information is also one of the ideas of software reliability acceleration testing, and Chen [37] and Bishop [38] proposed a method to predict software failures using information such as decision coverage and dataflow coverage. The method uses “parameterization factors” to eliminate the execution time that neither increases coverage nor causes software failure during the testing process so as to solve the problem of the “saturation effect” of the testing method.
From the abovementioned studies, it can be seen that the traditional SRDT method is mainly based on the idea of statistics or Bayesian theory, and proposes a general SRDT scheme that is only for discrete-type software and continuous-type software. The existing software reliability testing acceleration methods are based on importance sampling, the introduction of coverage information, parameterization factors, and consideration of a saturation effect, but none of them consider the software quality attribute in the acceleration process, that is, software with different testabilities may require a different number of SRDT cases, which can be analyzed for a specific software, rather than treating all software as the same.

2.2. Software Testability and TE

i.
Definitions of Software Testability
Software testability is an important quality attribute that is of great significance for improving software design and testing efficiency and fundamentally improving software quality.
IEEE Software Engineering Standard Terminology and the ISO Quality Model give definitions of software testability as follows. Definition 1: whether a software system or component is easy to test and the performance of a software system or component that allows it to be adequately tested in accordance with the test criterion [21]. Definition 2: software attributes that need to be verified to confirm the correctness of the modified software system [39]. These two definitions are too abstract and lack operability. Therefore, the following definitions are given. Definition 3: the probability that a program will fail in a random black-box test when there is a defect in the program [40]. Definition 4: the ease with which software can be tested in a given test context [41]. Definition 5: the minimum number of test cases required to meet the adequacy requirements required by the testing criteria when testing software against these criteria [42].
The main differences between these definitions are as follows: first, whether testability is considered an internal or external quality property of the software; second, whether testability is measured by the probability of finding a defect in the test or the number of test cases in which the software meets the adequacy requirements of a given test criterion.
ii.
Metrics for Software Testability
Freedman proposed that the main factor affecting testability is the inconsistency of input and output, which is defined as the observability and controllability of the software, respectively. Testability was defined as the extension required to transform a piece of software to be observable and controllable, represented by a binary group [43].
Voas et al. believed that the main factor affecting testability is that some data information during software execution is not visible at the output end of the software, that is, the loss of information, including implicit information loss and explicit information loss. The implicit loss of information (two or more different input data producing the same output) makes it impossible to judge the corresponding input based on the output of the software. The ratio of the potential of the function definition domain to the output domain, known as the domain–range ratio (DRR), can roughly reflect the probability of implicit information loss. As the DRR increases, the potential for information loss increases, and the testability of the software declines [40].
McGregor et al. utilized the ratio between the output size of the method and the size of all potentially accepted inputs as a testability metric. The minimum testability measure for all methods in a class is used as a testability measure for that class [44]. Gao divided software testability into five sub-attributes: comprehensibility, test supportability, traceability, controllability, and observability. The area enclosed by the results of these five sub-attributes is used as a software testability measure [42].
Richard built a metric model based on the decomposition of the program control flow diagram. First, the number of test cases required for each subgraph is defined, and then the number of test cases required for the whole program to meet the coverage criterion is calculated according to the sequential structure, loop structure, and selection structure of the program, which is used as a testability measure of the whole software [45].
Nguyen et al. synthesized Freedman’s ideas of controllability and observability of programs or modules and dataflow analysis methods, and used information theory analysis methods and the analysis results of the dataflow in a program to determine the relationship between the input and output of each module in the program’s execution, as well as the output/input range of the program module itself, as a measure of controllability and observability [46].
Bruce used the hierarchy of inheritance trees and the coupling relationship between classes as a measure of testability for object-oriented (OO) programs [47]. Jungmayr measured testability by dependencies between classes [41]. Sohn utilized information entropy and fault tree analysis to calculate the testability of software or modules [48]. Khoshgftaar used neural networks to predict testability [49]. Bruntink predicted testability by analyzing the correlation between the source code and the test code for OO programs [50].
The defect/failure model reflects the dynamic behavior of the software during testing [51]. According to this model, a test that can find a defect should meet three basic conditions [51], that is, when the test executes a piece of code containing a defect, it will affect the state of the program, and the faulty state will be transmitted to the output.
Voas proposed a propagation–infection–execution (PIE) approach to measure testability. The shortcoming of the PIE method is that it is too complex. In order to take advantage of the PIE method while reducing its complexity, Jin et al. improved the PIE method based on software code structure, semantics, and input distribution assumptions [52]. Bruce estimated testability by sampling test data to calculate the probability of code execution, infection, and propagation of a statement in the test set [47].
iii.
Metrics for software TE
To measure the effectiveness of the test criterion is an important problem for software quality assurance. The test criterion defines the basic principle for the selection or generation of test cases, and specifies the basic requirement that the test set needs to meet when the software is adequately tested. However, there is currently no consistent way to represent the effectiveness of the test criterion. From a statistical point of view, any TE of a test set that satisfies a certain test criterion has some stability. However, for a single test set, the specific test cases contained in it depend on the experience and skill of the tester, and the test case generation has a large randomness, resulting in a certain randomness in the TE. There are two main ways to measure TE: the probability that at least one defect will be found by the test (P-measure) or the expected value by which the test will be able to find the defect (E-measure).
Frankl investigated the effectiveness of branch testing and dataflow testing at different coverage levels [53]. Hutchins argued that when the coverage level is less than 100%, there is the same level of coverage, but it covers different parts of the software, resulting in a change in the effectiveness measure, which may affect the analysis of the effectiveness of the criterion [54]. Moreover, the ability of a test to detect defects can only be maximized when the adequacy of the test reaches 100% of the criterion [55]. Kuball used the defect detection capability of the test set to represent TE [25]. From the abovementioned studies, it can be seen that there are certain conflicting research results in the field of software testability, e.g., a variety of definitions and measurement methods are given, and some definitions and measurement methods have been recognized by the industry.

2.3. Software Fault Injection

Software fault injection is currently an effective method to evaluate the reliability mechanism in a system [56]. The fault injection technology accelerates the failure process of the target system by injecting multiple faults into the target system, and then obtains the operating state of the system when the fault occurs by monitoring the system after the injection of faults, and then compares it with the normal operation state of the system so as to evaluate the correctness and effectiveness of the fault tolerance mechanism of the target system.
There are many ways to inject faults, such as destroying programs or data in memory; dynamically modifying code and data; changing the execution process and control flow and replacing code; reassembling code using traps; injecting faults with debug registers; and so on.
Fault injection can be used for fault detection, failure prediction, and acceptance testing. Program mutation is the main method of static fault injection in software, which is mainly used to evaluate the adequacy of the test set and the prediction of latent faults in the software [57,58,59]. For statistical fault injection, faults are randomly injected into the program according to the probability distribution, and then statistical tests are performed. As a result, this allows for a better simulation of the true distribution of software failures and statistical estimates. Kuball et al. used program mutation to obtain the fault detection capability of the test by statistical fault injection [25]. Leveugle et al. proposed to use the failure occurrence probability and fault interval [60,61] to statistically determine the number of faults injected.
From the abovementioned studies, it can be seen that there are certain research results in the field of software fault injection, and a variety of fault injection methods are given. Due to the particularity of the testability of software reliability test cases, it is necessary to use statistical fault injection instead of fault injection in general software testing.
In summary, dissimilar to the existing works, this paper presents the following:
  • TE is introduced into the SRDT method as an acceleration factor.
  • For discrete-type software and continuous-type software, corresponding demonstration test plans are established for cases of zero-failure and revealed nonzero failure.
  • Based on the statistical fault injection method, a quantitative estimation approach of software TE for SRDT is considered.

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.

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.
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 .
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.
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.
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
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.
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.
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.

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:
(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.
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.
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 shows that all the estimated TE values tend to be stable, as shown in Figure 6 and Figure 7.
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.
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.
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]
  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]
Figure 1. Research framework.
Figure 1. Research framework.
Symmetry 16 01334 g001
Figure 2. Conventional SRDT procedure.
Figure 2. Conventional SRDT procedure.
Symmetry 16 01334 g002
Figure 3. The division of program space Ω in the case of zero-failure [29].
Figure 3. The division of program space Ω in the case of zero-failure [29].
Symmetry 16 01334 g003
Figure 4. Division of program space Ω in the case of revealed failures.
Figure 4. Division of program space Ω in the case of revealed failures.
Symmetry 16 01334 g004
Figure 5. The framework of SRDT with introduced TE.
Figure 5. The framework of SRDT with introduced TE.
Symmetry 16 01334 g005
Figure 6. The fitting diagram of φ ^ T for Tcas.
Figure 6. The fitting diagram of φ ^ T for Tcas.
Symmetry 16 01334 g006
Figure 7. The fitting diagram of φ ^ 2 for Tcas.
Figure 7. The fitting diagram of φ ^ 2 for Tcas.
Symmetry 16 01334 g007
Figure 8. The fitting diagram of φ ^ T for Totinfo.
Figure 8. The fitting diagram of φ ^ T for Totinfo.
Symmetry 16 01334 g008
Figure 9. The fitting diagram of φ ^ 2 for Totinfo.
Figure 9. The fitting diagram of φ ^ 2 for Totinfo.
Symmetry 16 01334 g009
Figure 10. The fitting diagram of φ ^ T for Replace.
Figure 10. The fitting diagram of φ ^ T for Replace.
Symmetry 16 01334 g010
Figure 11. The fitting diagram of φ ^ 2 for Replace.
Figure 11. The fitting diagram of φ ^ 2 for Replace.
Symmetry 16 01334 g011
Figure 12. The fitting diagram of φ ^ T for Schedule1.
Figure 12. The fitting diagram of φ ^ T for Schedule1.
Symmetry 16 01334 g012
Figure 13. The fitting diagram of φ ^ T for Schedule2.
Figure 13. The fitting diagram of φ ^ T for Schedule2.
Symmetry 16 01334 g013
Figure 14. The fitting diagram of φ ^ T for Printtoken1.
Figure 14. The fitting diagram of φ ^ T for Printtoken1.
Symmetry 16 01334 g014
Figure 15. The fitting diagram of φ ^ T for Printtoken2.
Figure 15. The fitting diagram of φ ^ T for Printtoken2.
Symmetry 16 01334 g015
Table 1. The relationship between test time T a and ( λ 0 , C , φ T ) in the case of zero-failure.
Table 1. The relationship between test time T a and ( λ 0 , C , φ T ) in the case of zero-failure.
λ 0 φ T T a
C = 0.9 C = 0.95 C = 0.99
0.010230.26299.58460.52
0.5160.94230.26391.21
0.9--69.32230.26
0.00102302.592995.744605.18
0.51609.442302.593912.03
0.9--693.152302.59
0.0001023,025.8629,957.3346,051.71
0.516,094.3823,025.8639,120.24
0.9--6931.4823,025.86
0.000010230,258.51299,573.23460,517.02
0.5160,943.79230,258.51391,202.30
0.9--69,314.72230,258.51
Table 2. Relationships between the number of test cases N and ( p 0 , C , φ T ) in the case of zero-failure.
Table 2. Relationships between the number of test cases N and ( p 0 , C , φ T ) in the case of zero-failure.
p 0 φ T N
C = 0.9 C = 0.95 C = 0.99
0.010229298458
0.5160229389
0.9--68229
0.0010230129944602
0.5160823013910
0.9--6922301
0.0001023,02429,95546,049
0.516,09323,02439,118
0.9--693123,014
0.000010230,257299,571460,510
0.5160,942230,257391,200
0.9--69,314230,257
Table 3. The relationship between test time T a and ( λ 0 , C , φ T ) in the case of r = 1 .
Table 3. The relationship between test time T a and ( λ 0 , C , φ T ) in the case of r = 1 .
λ 0 φ 2 T a
C = 0.9 C = 0.95 C = 0.99
0.010388.98474.39663.84
0.5299.43388.98583.40
0.9--167.84388.98
0.00103889.734743.876638.36
0.52994.313889.735833.93
0.9--1678.353889.73
0.0001038,897.2147,438.6566,383.53
0.529,943.0838,897.2158,339.22
0.9--16,783.4738,897.21
0.000010388,972.02474,386.45663,835.21
0.5299,430.83388,972.02583,392.17
0.9--167,834.70388,972.02
Table 4. Relationships between test case numbers N and ( p 0 , C , φ T ) .
Table 4. Relationships between test case numbers N and ( p 0 , C , φ T ) .
p 0 φ 2 N
C = 0.9 C = 0.95 C = 0.99
0.010387472661
0.5298387580
0.9--167387
0.0010388947416635
0.5299338895831
0.9--16783889
0.0001038,89547,43666,380
0.529,94238,89558,336
0.9--16,78338,895
0.000010388,970474,384663,832
0.5299,429388,970583,389
0.9--167,834388,970
Table 5. Schemes for SRDT under different conditions.
Table 5. Schemes for SRDT under different conditions.
Failure NumbersTE StateSoftware Type
Continuous-Type SoftwareDiscrete-Type Software
Zero-failureTE is not considered T a = 1 λ 0 ln ( 1 C ) (17) N = [ ln ( 1 C ) / ln ( 1 p 0 ) ] (23)
TE is considered T a = 1 λ 0 ln ( 1 C 1 φ T ) (15) N = [ ln ( 1 C 1 φ T ) / ln ( 1 p 0 ) ] (21)
Nonzero failureTE is not considered 0 λ 0 G a m m a ( 1 + r , t ) ( λ ) d λ C (41) 0 p 0 β ( 1 + r , 1 + n r ) ( p ) d p C (44)
TE is considered 0 λ 0 G a m m a ( 1 + r , t ) ( λ ) d λ C φ r + 1 1 φ r + 1 (40) 0 p 0 β ( 1 + r , 1 + n r ) ( p ) d p C φ r + 1 1 φ r + 1 (43)
Table 6. The features of the Siemens program suite.
Table 6. The features of the Siemens program suite.
No.Program NameNumber of Code LinesNumber of FaultsTest Pool SizeSoftware Function Description
1Totinfo346231052Information measurement
2Schedule129992650Priority scheduling
3Schedule2297102710Priority scheduling
4Tcas138411608Contour line identification
5Printtoken140274130Lexical analysis
6Printtoken2483104115Lexical analysis
7Replace516325542Pattern replacement
Table 7. Mutation programs of the “Tcas” program.
Table 7. Mutation programs of the “Tcas” program.
No. of Mutation ProgramP1P2P3P4P5P6P7P8P9P10P11P12P13P14P15
Random number according to Poisson distribution364756867584677
Inserted fault number32202048391323391530121277
9133021742813782759175
2630291925226162840322663229
189112710472927232572524
15 26123212511237 32121
31 30 26172727 28 15133
17 21 30 4 2912
29 13
Table 8. Test results.
Table 8. Test results.
Test Case Number100150200250300350400
K1161013131313
φ ^ T = K 1 / F 0.0670.40.670.870.870.870.87
K20238131313
φ ^ 2 = K 2 / F 00.1330.20.5330.870.870.87
Table 9. The minimum test case number of the TE-SRDT for the “Tcas” program.
Table 9. The minimum test case number of the TE-SRDT for the “Tcas” program.
Program NameZero-Failure Test Plan Test   Plan   with   Revealed   Failure   r = 1
φ ^ T N T N EF φ ^ 2 N T N EF
Tcas0.8725,64846,04944.3%0.8742,16666,38036.5%
Notes: In Table 8, N T stands for the minimum test case number considering TE, N stands for the minimum test case number without considering TE, and EF indicates the test case number reduction percentage.
Table 10. All test results for the Siemens program suite.
Table 10. All test results for the Siemens program suite.
No.Program Name M ^ Ep’ SizeTp’
Size
φ ^ T Stable Value with Zero-Failure φ ^ 2 Stable Value with Revealed Failures
The Minimum Test Case Number φ ^ T The Minimum Test Case Number φ ^ 2
1Totinfo3205602500.7332500.333
2Schedule1182,0461,2000.467--
3Schedule2192,5281,6000.6--
4Tcas7348702500.873000.87
5Printtoken1163,7151,0000.533--
6Printtoken2193,0532,0000.615--
7Replace4283,6392,8000.82,0000.667
Table 11. Effect of TE on the minimum number of test cases for the Siemens program suite.
Table 11. Effect of TE on the minimum number of test cases for the Siemens program suite.
Program NameZero-Failure SchemeScheme with Failure Number r = 1
φ ^ T N T N EF φ ^ 2 N T N EF
Totinfo0.73332,59546,04929.2%0.33361,44866,3807.43%
Schedule10.46738,55846,04916.3%----
Schedule20.635,28746,04923.4%----
Tcas0.8725,39846,04944.8%0.8741,86666,38036.9%
Printtoken10.53337,43646,04918.7%----
Printtoken20.61534,88746,04924.2%----
Replace0.827,15646,04941.0%0.66751,54566,38022.3%
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.

Share and Cite

MDPI and ACS Style

Li, Q.; Zhang, L.; Liu, S. Improving the Efficiency of Software Reliability Demonstration Testing by Introducing Testing Effectiveness. Symmetry 2024, 16, 1334. https://doi.org/10.3390/sym16101334

AMA Style

Li Q, Zhang L, Liu S. Improving the Efficiency of Software Reliability Demonstration Testing by Introducing Testing Effectiveness. Symmetry. 2024; 16(10):1334. https://doi.org/10.3390/sym16101334

Chicago/Turabian Style

Li, Qiuying, Limeng Zhang, and Shuo Liu. 2024. "Improving the Efficiency of Software Reliability Demonstration Testing by Introducing Testing Effectiveness" Symmetry 16, no. 10: 1334. https://doi.org/10.3390/sym16101334

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop