Formalization of control-flow criteria of software testing Sergiy A. Vilkomir

Jonathan P. Bowen

South Bank University (SBU) Centre for Applied Formal Methods (CAFM) School of Computing, Information Systems and Mathematics (SCISM) 103 Borough Road, London SE1 0AA, UK Email: {vilkoms, bowenjp}@sbu.ac.uk URL: http://www.cafm.sbu.ac.uk/ Abstract This paper describes an approach to formalization of criteria of complex computer systems software testing. A brief review of control-flow criteria is introduced. As a formal language for describing the criteria, the Z notation is selected. Z schemas are presented for definitions of the following criteria: statement coverage, decision coverage, condition coverage, decision/condition coverage, full predicate coverage, modified condition/decision coverage, and multiple condition coverage. This characterization could help in the correct understanding of different types of testing and also the correct application of a desired testing regime.

1

Introduction

Software testing is one of the important methods of software quality, reliability and safety assurance. Importance of the software testing is increasing as a result of the extension of the computer system use in such safety-critical areas as nuclear power engineering, aviation, cosmonautics, and railway transport. Software testing criteria (or else, test data adequacy criteria or coverage criteria) play a large role of whole testing process. These criteria are used as [34]: • stopping rules that determines whether sufficient testing has been done that it can be stopped; • measurements of test quality when a degree of adequacy is associated with each test set; • generators, i.e. using for test data selection. Test sets are considered as equivalent if they are satisfied the same criterion. The use of testing criteria as regulatory requirements during software certification and licensing also has its own specific features. In the time of regulatory assessment, the stage of testing assessment is the most important where basic efforts of experts should be concentrated [31]. The methods and criteria of testing are traditionally divided into structural (or whitebox) and functional (or black-box) [20, 26]. Structural testing criteria, i.e. criteria which take into account an internal structure of the program, are in turn divided into data-flow 1

and control-flow criteria, although the combination of the two has been considered too [23, 30]. Data-flow criteria are based on the investigation of the ways in which values are associated with variables and how these associations can affect the execution of the program [34]. This group contains so-called all -uses, all -defs, all -p-uses and other criteria [12, 26]. Control-flow criteria examine logical expressions, which determine the branch and loop structure of the program. This group of criteria is considered in this paper. The paper is structured as follows. Section 2 presents a brief review of control-flow criteria. Well-known criteria – statement coverage, decision coverage, condition coverage, decision/condition coverage, multiple-condition coverage, as well as relatively new criteria – full predicate and modified condition/decision coverage (MC/DC) criteria are addressed. In the scientific literature, criteria definitions are basically informal (in natural language). Sometimes these definitions are not clear enough and it can lead to inaccurate understanding. In section 3 of this paper, the task of producing formal criteria definitions is considered. As a formal language for describing the criteria, the Z notation is selected, which is used recently not only in academic surroundings but also for industrial development of high-integrity systems such as safety-critical software [4].

2

Review of control-flow criteria

2.1

Informal definitions

The most simple control-flow criteria are known from the 1960s and 70s. The following are based on the well-known book by G. Myers [20]: • statement coverage (SC): every statement in the program has been executed at least once; • decision coverage (DC): every statement in the program has been executed at least once, and every decision in the program has taken all possible outcomes at least once; • condition coverage (CC): every statement in the program has been executed at least once, and every condition in each decision has taken all possible outcomes at least once; • decision/condition coverage (D/CC): every statement in the program has been executed at least once, every decision in the program has taken all possible outcomes at least once, and every condition in each decision has taken all possible outcomes at least once; • multiple condition coverage (MCC): every statement in the program has been executed at least once, and all possible combinations of condition outcomes in each decision have been invoked at least once. These definitions use concepts of ‘decision’ and ‘condition’. A decision is a program point at which the control flow can divide into various paths. An example of a decision is the IF-THEN-ELSE construction in Pascal and other imperative programming languages. A decision is a Boolean expression consisting of a one or several condition combined by logical connectives. A condition is an elementary Boolean expression (atomic predicate), which cannot be divided into further Boolean expressions. All the mentioned definitions involve the statement coverage criterion as a component part. This inclusion is slightly artificial because pure decision or condition coverage is not connected with statement coverage. The purpose of this inclusion is to establish the 2

following partial ordering of the control flow criteria: criterion A is stronger (subsumes) criterion B if every test set that satisfies A also satisfies B . Other relations between testing criteria have been also considered [11]. The multiple condition coverage criterion is the strongest and requires full searching of various combinations of conditions values. However, an excess of test cases can be required. If the number of conditions in a decision is equal to n, then the number of test cases to satisfy this criterion is 2n ; this is not normally possible in practice even for relatively moderate values of n. The other mentioned criteria are weaker and require considerably less test patterns. Thus, condition coverage requires two tests for each condition and the total quantity of tests equals 2n. However, in this connection, testing of combinations of conditions values is missing and such testing volume is not sufficient for safety-critical software [10]. An intermediate position between multiple condition coverage criterion and other criteria is taken up by modified condition/decision coverage (MC/DC) criterion: • MC/DC: every point of entry and exit in the program has been invoked at least once, every condition in a decision in the program has taken on all possible outcomes at least once, and each condition has been shown to independently affect the decision’s outcome. A condition is shown to independently affect a decision’s outcome by varying just that condition while holding fixed all other possible conditions [27]. As evident from the definition, MC/DC criterion requires achievement of statement coverage and condition coverage criteria combined with the requirement that each condition should affect the decision’s outcome. It means that the outcome of a decision changes as a result of changing a single condition [9]. This criterion requires testing of various (but not all) combinations of conditions values but the number of tests still grows by linear law. Full predicate coverage criterion [22] is similar to MC/DC but is weaker [1]. This criterion is based on the specifications and the original definition uses different terms (for example, ‘clause’ instead ‘condition’). But it is possible to reformulate it for uniformity with previously defined criteria and using a definition from [22] as a base: • full predicate coverage (FPC): every statement in the program has been executed at least once, and each condition in a decision has taken all possible outcomes where the value of a decision is directly correlated with the value of a condition. This means, a decision changes when a condition changes. Thereby, the distinction between full predicate coverage and MC/DC is that while varying a condition, it is not necessary to fix all other possible conditions. In this case it is easier to assemble test cases than for MC/DC. But on the other hand, the effect of varying a condition on a decision can be masked by the other conditions. The hierarchy of control-flow criteria is given in Figure 1. In addition to those mentioned above, other control-flow criteria has been introduced (for example, LCSAJ [33], DD-path [24], and Object Level [13] coverage criteria). Diagrams, which show interrelation between control-flow and data-flow criteria are considered in [13, 21, 25, 34].

2.2

An example

The following example illustrated the contents of the testing criteria for a decision, contained three conditions and realized the principle of the logical majorization ‘2 from 3’: the decision is true if and only if any two conditions are true. This principle is widely used for data processing in many safety-critical systems. Note, that this example of the use of 3

the testing criteria is given only for simplification of explanation and has no a practical sense because a number of the conditions is small and full searching of all test cases is easy achieved.

multiple condition coverage ?

modified condition/decision coverage ?

full predicate coverage ?

decision/condition coverage PP  PP  PP )  q

decision coverage

condition coverage

PP  PP   PP q )

statement coverage Figure 1: The hierarchy of control-flow criteria Let d be the decision and A, B , and C be conditions. Then d = (A ∧ B ) ∨ (A ∧ C ) ∨ (B ∧ C ) The values of conditions are 1 (TRUE) or 0 (FALSE). Let symbols of conditions be omitted when its value are specified. For example, let (1, 0, 1) be the same as A = 1, B = 0, and C = 1. Eight combinations of the values of the conditions exist: (1, 1, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1), (1, 0, 0), (0, 1, 0), (0, 0, 1), (0, 0, 0). The decision d equals 1 for the first four combinations and equals 0 for the other four combinations. The subsets of these combinations, satisfied each criterion, are considered below. For statement coverage, any one combination is sufficient because the value of the decision is determined in this case. For decision coverage, two combinations are sufficient, for which the decision has different values, e.g., (0, 1, 1) and (1, 0, 0), or (1, 1, 1) and (0, 0, 0). For the conditions coverage, two combinations are necessary for each condition and the condition should have different values for these combinations. For example, the pair (1, 0, 1) and (0, 1, 1) is suitable for condition A. Such pairs can coincide for various conditions. Thus, the pair (1, 0, 1) and (0, 1, 1) is also suitable for conditions B but not for C . In the pair (1, 1, 1) and (0, 0, 0) all conditions have different values so these two combinations satisfy the condition coverage. Any subset of combinations that satisfy both the decision and condition coverage also satisfy the decision/condition coverage, e.g., (1, 1, 0) and (0, 0, 1). For the multiple condition coverage, the set containing all eight combinations is required.

4

The full predicate coverage, like the condition coverage, requires two combinations for each condition and, in addition, requires various values of the decision for these combinations. So, the pair (1, 0, 1) and (0, 1, 1), which satisfies the condition coverage for the condition A, is not suitable for the full predicate criterion (d = 1 for both combinations). On the contrary, the pair (1, 0, 1) and (0, 1, 0) is suitable for the full predicate coverage because: • the decision equals 1 for the first combination; • the decision equals 0 for the second combination; • the values of all conditions are varying. These examples are brought together in Table 1. Each column represents a subset of combinations (marked ‘+’) satisfied the corresponding criterion.

combination number 1 2 3 4 5 6 7 8

A 1 1 1 0 1 0 0 0

values B C 1 1 1 0 0 1 1 1 0 0 1 0 0 1 0 0

DC d 1 1 1 1 0 0 0 0

CC

D/CC

+ + + + + +

MCC + + + + + + + +

FPC

+

+

Table 1: Combinations satisfied the DC, CC, D/CC, MCC, and FPC criteria The combinations, which satisfy the MC/DC criterion, are given in Table 2. The pair, suited for each condition, is marked ‘∗’.

combination number 1 2 3 4 5 6 7 8

A 1 1 1 0 1 0 0 0

values B C 1 1 1 0 0 1 1 1 0 0 1 0 0 1 0 0

d 1 1 1 1 0 0 0 0

variations A B C ∗

∗ ∗ ∗





MC/DC

+ + + +

Table 2: Combinations satisfied the MC/DC criterion For example, the combinations (1, 1, 0) and (0, 1, 0) are marked for the condition A because for these combinations: 5

• condition A changes its value; • other conditions (B and C ) do not change its values; • decision d changes its value. The subset of four combinations, marked ‘+’, satisfies the MC/DC criterion. The examples considered in this section display the requirements of the testing criteria but do not take into account the following factors: • dependence of the values of the conditions and decisions on input data; • dependence of the specific decision on its place in the computer program, i.e., on the values of other decisions in the program; • dependence of the conditions in the specific decision on each other, i.e., the possibility of one condition takes its value depending on the value of other conditions in this decision. More detailed example, taking into account all these factors, is addressed below in section 3.3 based on the formal definitions of the criteria.

3 3.1

Formalization of control-flow criteria in Z notation Basic concepts

The criteria such as full predicate coverage and modified condition/decision coverage are quite complicated and require additional explanation. Various understandings of these definitions are possible giving rise to ambiguity. To help alleviate this situation, the elaboration of formalized definitions of testing criteria, which describe criteria contents in rigorous mathematical form, is presented here. Formalization of certain criteria has been carried out using set theory [11], graph theory [23], predicate logic [18, 30], temporal logic [2]. In this paper, the Z notation is used for the formal definition of the criteria. The reasons for choosing the Z notation are follows. Z has been used for a number of digital systems in a variety of ways to improve the specification of computer-based systems [5]. A lot of textbooks on Z are now available [16, 19, 28]. The teaching of Z has become of increasing interest [3]. Concerning software testing, the Z notation has been used to derive tests from model-based specifications [8, 29], for the testing of abstract data types (modules, classes, package, clusters) [14], automatic test case generation [6, 7], the selection of test cases and evaluation of test results [15]. So, when Z is used for software development and testing, it is expedient to use testing criteria, also formulated in Z. The following two given sets are used further for definitions of testing criteria:

[INPUT , STATEMENT ] The first set is a set of possible values of input program variables. So, any i ∈ INPUT is a vector whose components are specific values of all input quantities. The second set is a set of all program statements. The further specification of the nature of these sets is not necessary for the creation of the criteria definitions. When the specific values of input variables are determined and the program is executed, usually only a part of program branches are involved, i.e. only a part of program statements are activated. Below path i is a set of program statements that are executed when the input variables value is i . 6

path : INPUT → P STATEMENT The set Bool , used for the determination of the value of conditions, contains only two elements – 0 and 1.

Bool == {0, 1} PartInput is a set of all non-empty subsets of INPUT , excluding the set INPUT . The abbreviation cond is introduced for the set of all possible conditions, which are considered as logical predicates on INPUT , i.e. for any i ∈ INPUT the value of a condition equals 0 (FALSE) or 1 (TRUE). The set of conditions will later be restricted and conditions linked with each specific decision will be used.

PartInput == P1 INPUT \ {INPUT } cond == INPUT → Bool The following schema1 describes the notion of ‘decision’. On the one hand, each decision is a statement of a program (variable decst). On the other hand, each decision is a logical predicate (the function value) on the subset decinput of input data, for which the executed path passes through this decision, i.e. decst ∈ path i . Correspondingly, decinput0 and decinput1 are the sets, where the function value (i.e., the value of the decision) equals 0 and 1 respectively. These sets partition the set decinput, i.e. their union equals decinput, and their intersection is the empty set. From the definition of PartInput, both of them are non-empty. Thereby, the decisions, which are either all 0 or all 1, are excluded from consideration. The reasons are that all such decisions are covered when the statement coverage criterion is satisfied and that ‘affect the decisions outcome’ (see above the definition of the MC/DC) and ‘the correlation with the value of a condition’ (see above the definition of the full predicate coverage) are impossible for such degenerate decisions.

dec decst : STATEMENT decinput : P1 INPUT decinput0, decinput1 : PartInput argdec : P1 cond value : cond decinput = {i : INPUT | decst ∈ path i } hdecinput0, decinput1i partitions decinput argdec = {c : cond | dom c = decinput ∧ ran(decinput C c) = Bool } dom value = decinput decinput1 = {i : INPUT | value i = 1}

The set argdec contains all conditions that are components of a given decision. Each conditions should takes both 0 and 1. This means that conditions that are either all 0 or all 1 are not considered. The reasons are the same as for decisions – each such condition is always covered when a decision is covered and varying condition’s value (for MC/DC and full predicate coverage) is impossible for such degenerate conditions. To describe the process of testing, the set of testing data is introduced. This set, named testset, can satisfy or not satisfy to testing criteria. 1

All schemas in this paper were checked using the ZTC type-checker package [17].

7

3.2

Formal definitions

The following schema gives the definition when testing data satisfy the statement coverage criterion.

StatementCoverage testset : P1 INPUT ∀ v : STATEMENT • (∃ i : testset • v ∈ path i )

As the statement coverage criterion is a component part of all other criteria, its schema is in the signature of all other schemas used for defining testing criteria. Thus, the set testset is used (via the StatementCoverage schema) for definitions all testing criteria. The following schema determines a formal definition of the decision coverage criterion based on the fact that for any specific decision d the set testset should overlap with both d .decinput0 and d .decinput1. In this case, the given decision takes both the value 0 (for the testing data from d .decinput0) and the value 1 (for the testing data from d .decinput1).

DecisionCoverage StatementCoverage ∀ d : dec • (testset ∩ d .decinput0 6= ∅) ∧ (testset ∩ d .decinput1 6= ∅)

The following schema determines the condition coverage criterion and is analogous with the previous schema. It claims that a pair of input data from testing set should exist, for which the condition takes different values (both 0 and 1).

ConditionCoverage StatementCoverage ∀ d : dec; c : cond | c ∈ d .argdec • (∃ i0 , i1 : testset ∩ d .decinput • c i0 6= c i1 )

The formal description of the decision/condition coverage criterion uses the fact that this criterion is the union of the decision criterion and the condition criterion. So, the schema of this criterion contains only references to two previous schemas.

DecisionConditionCoverage DecisionCoverage ConditionCoverage

The requirement, which determines the full predicate coverage criterion, is similar to the corresponding requirements for the condition coverage: a testing set should contain such input data (i0 and i1 ) that the value of a condition equals 0 for one of them and equals 1 for the other. 8

FullPredicateCoverage StatementCoverage ∀ d : dec; c : cond | c ∈ d .argdec • (∃ i0 , i1 : testset • (d .value i0 6= d .value i1 ) ∧ (c i0 6= c i1 ))

But if in case of condition coverage there are no restrictions on the input data (except their membership in d .argdec; i.e., for these input data the decision, as a program statement, should be executed), then for full predicate coverage there is the additional restriction: for these input data the decision also should have different values, i.e., both the condition and the decision should vary simultaneously. The following schema determines the MC/DC criterion.

ModifiedConditionDecisionCoverage FullPredicateCoverage ∀ d : dec; c : cond | c ∈ d .argdec • ∃ pair : P1 (d .decinput0 × d .decinput1) • (∀ i0 , i1 : INPUT | (i0 , i1 ) ∈ pair • (c i0 6= c i1 ∧ (∀ othercond : d .argdec | othercond 6= c • othercond i0 = othercond i1 ))) ⇒ (∃ j0 , j1 : testset • (j0 , j1 ) ∈ pair )

As the MC/DC criterion subsumes the full predicate criterion, this schema contains the FullPredicateCoverage schema, combined with an additional restriction. This restriction requires that, in case varying of one condition, all other conditions (othercond ), which make up the given decision, should not vary, if it is possible in principle. It means that the values of each othercond for i0 and i1 are equal. The subset of pairs of input data, which display this combination, is denoted as pair . If such a non-empty subset pair exists, then at least one from its elements should be a member of the testing set. This formal definition eliminates a certain shortcoming of the definition in natural language. The original definition does not clearly describe the situation when, varying one condition, it is impossible to fix all other conditions. It is not necessarily the best option to consider that the MC/DC is not satisfied in this situation. The formal definition shows that testing data should answer the full predicate coverage criterion for this condition. It means that it is acceptable to vary this condition simultaneously with the decision but without fixing the value of all other conditions. The last scheme determines the multiple condition coverage criterion.

MultipleConditionCoverage StatementCoverage ∀ d : dec; condset : P cond | condset ∈ P d .argdec • ∃ comb : P1 d .decinput • (∀ i : comb • (∀ c : condset • c i = 1) ∧ (∀ c : d .argdec | c 6∈ condset • c i = 0)) ⇒ (testset ∩ comb 6= ∅) 9

The definition claims that the testing data set (testset) should contain the data for testing every combination of the values of conditions into a decision, if such combination is possible in principle (i.e., if there are input data for which the value of conditions make up the given combination). In the schema given above, each combination of the values of the conditions is clearly defined by the subset condset of the conditions, which equal 1 for this combination. Accordingly, the other conditions from d .argdec, which are not members of condset, equals 0 for this combination. The subset of input data, which display this combination, is denoted as comb. If such a non-empty subset comb exists, then at least one from its elements should be a member of the testing set.

3.3

A case study

The contents of the proposed basic concepts and formal definitions are considered below for an example of a computer program fragment, which graph is given in Figure 2. 

1

READ x , y



? 

2

d1

 PP TRUE  PP FALSE P )  q P 

3

f1

4



f2



? 

5

d2

 PP TRUE  PP FALSE  PP )  q  

6

f3



7

f4



?

?

Figure 2: Flow graph of a program fragment In this fragment, the input data x and y are read; let the value of both x and y be between 0 and 100.

INPUT == (0 . . 100) × (0 . . 100) Then, depending on the values of x and y, the computation by one from four formulas f1 – f4 is implemented. Control flow of this program is determined by two decisions – d1 and d2 . Let d1 depends from conditions A1 and B1 and d2 depends from conditions A, B , C , and D, as it is shown below:

10

d1 , d2 : dec A, B , C , D, A1 , B1 : cond x , y : 0 . . 100 A (x , y) = 1 ⇔ x > 20 B (x , y) = 1 ⇔ y < 60 C (x , y) = 1 ⇔ x > 40 D (x , y) = 1 ⇔ y < 80 A1 (x , y) = 1 ⇔ x > 20 B1 (x , y) = 1 ⇔ y > 60 d1 .decinput = INPUT d2 .decinput = {x , y : 0 . . 100 | x > 20 ∨ y > 60 • (x , y)} d1 .argdec = {A1 , B1 } d2 .argdec = {A, B , C , D} d1 .value (x , y) = 1 ⇔ A1 (x , y) = 1 ∨ B1 (x , y) = 1 d2 .value (x , y) = 1 ⇔ (A (x , y) = 1 ∧ B (x , y) = 1) ∨ (C (x , y) = 1 ∧ D (x , y) = 1)

For the decision d1 , d1 .decinput coincide INPUT and both conditions A1 and B1 are independent. The examples of the testing data satisfied the FPC, MCC, and MC/DC criteria for d1 are given in Table 3.

combination number 1 2 3 4

A1 1 1 0 0

values B1 d1 .value 1 1 0 1 1 1 0 0

testing data (x , y) (50, 70) (50, 50) (10, 70) (10, 50)

FPC

MCC

MC/DC

+

+ + + +

+ + +

+

Table 3: Testing data satisfied the FPC, MCC, and MC/DC criteria for d1 For the decision d2 , the set d2 .decinput does not coincide with the set INPUT , because of the interdependency of d 1 and d 2. The members of d2 .decinput are only the input data for which d1 equals 1, i.e., is TRUE. The conditions in d2 are interdependence in pairs. For conditions A and C the situation (A = 0 ∧ C = 1) is impossible because (C = 1) ⇒ (A = 1). For conditions B and D the situation (B = 1 ∧ D = 0) is impossible because (B = 1) ⇒ (D = 1). As it is shown in Table 4, only 8 from 16 combinations of the condition values are possible. Combinations (0, 1, 1, 1), (0, 1, 1, 0), (0, 0, 1, 1), and (0, 0, 1, 0) are impossible because of the value of the condition A. Combinations (1, 1, 1, 0), (1, 1, 0, 0), and (0, 1, 0, 0) are impossible because of the value of the condition D. The combination (0, 1, 0, 1) is impossible because of the value of the decision d1 . The testing set satisfied the MCC criterion should include all 8 possible combinations of the values of conditions. Two combinations (1, 1, 1, 1) and (0, 0, 0, 0) are sufficient for satisfying the FPC criterion.

11

num 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

A 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0

B 1 1 1 0 1 1 0 0 1 1 0 0 1 0 0 0

values C D d2 .value 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0

testing data (x , y) (50, 50) impossible (30, 50) (50, 70) impossible impossible (50, 90) (30, 70) impossible impossible impossible (30, 90) impossible impossible (10, 70) (10, 90)

FPC

MCC A

+

variations B C D

MC/DC

+ + +



∗ ∗





+ +





+ +

+ +

+

+

+ +



+

Table 4: Testing data satisfied the FPC, MCC, and MC/DC criteria for d2 Testing data satisfied the MC/DC criterion for the conditions B , C , and D are shown in Table 4 (marked ‘∗’). For the condition A it is impossible to choose similar combinations, i.e., combinations for which the values of A and d2 are changed and the values of B , C , and D are fixed. So, following the formal definitions of the MC/DC, in this case for the condition A it is sufficient to take any combinations satisfied the FPC criterion. For example, it is possible to take combinations (1, 1, 0, 1) and (0, 0, 0, 1), for which the values of A and d2 vary simultaneously (marked ‘•’ in Table 4). The testing set satisfied the MC/DC criterion for the decision d2 consists from five pairs of the input data (marked ‘+’ in Table 4).

4

Conclusions and Future Work

The subject of this paper is the formalization of criteria for complex computer systems software testing. Control-flow criteria, i.e., criteria using logical expressions, which determine the branch and loop structure of the program, are considered. This group includes well-known criteria [20] and relatively new criteria – full predicate [22] and modified condition/decision coverage (MC/DC) [27] criteria. A brief review and examples illustrating the testing criteria are introduced. The Z notation [5] is used for the formal definition of the criteria. Z schemas, which describe formal definitions of all main control-flow testing criteria, are presented. These definitions help to eliminate the possibility of inaccurate understanding, which is likely for definitions in natural language. In particular, the MC/DC formal definition takes into consideration the situation when, varying a condition, it is impossible to fix all other conditions because of mutual dependence of the conditions and decisions. An example of such a situation is analyzed in detail.

12

The formal definitions could be used, in particular, for laying down regulatory requirements [32] for the testing of safety-critical software. The proposed approach could also be used for formal definitions of other testing criteria (e.g., data-flow control criteria). Another direction for future work could be using formal definitions for detailed analysis of the content and applicability of the most complicated existing criteria and for producing new criteria. One of the possible criteria for further analysis is the modified condition/decision coverage criterion.

References [1] Abdurazik, A., Amman, P., Ding, W., Offutt, J. Evaluation of Three Spesificationbased Testing Criteria. Sixth IEEE International Conference on Engineering of Complex Computer Systems (ICECCS2000), Tokyo, Japan, September 2000. [2] Ammann, P. E., Black, P. E. Test generation and recognition with formal methods. The First International Workshop on Automated Program Analysis, Testing and Verification, Limerick, Ireland (June 2000). [3] Bowen, J. P. Experience Teaching Z with Tool and Web Support. Technical Report SBU-CISM-00-30, SCISM, South Bank University, London, UK, 2000. [4] Bowen, J. P., Hinchey M., G. The Use of Industrial-Strength Formal Methods. Proceedings of 21st International Computer Software and Application Conference (COMPSAC’97), Washington D. C., USA, 13 – 15 August 1997, pp. 332–337. [5] Bowen, J. P. Formal Specification and Documentation Using Z: A Case Study Approach. International Thomson Computer Press, 1996. [6] Burton, S., Clark, J., Galloway, A., McDermid, J. Automated V&V for high integrity systems, a target formal methods approach. Proceedings of the 5th NASA Langley Formal Methods Workshop, June 2000. [7] Burton, S., Clark, J., McDermid, J. Testing, Proof and Automation. An Integrated Approach. The Proceedings of the 1st International Workshop of Automated Program Analysis, Testing and Verification, June 2000. [8] Carrington, D., Stocks, P. A tale of two paradigms: Formal methods and software testing. In: J. P. Bowen and J. A. Hall, editors. Z User Workshop, Cambridge, 1994, Workshop in Computing. Springer-Verlag, 1994. Proceedings of the Eighth Annual Z User Meeting, pp. 51–68. [9] Chilenski, J., Miller, S. Applicability of modified condition/decision coverage to software testing. Software Engineering Journal, September 1994, pp. 193–200. [10] Dupuy, A., Leveson, N. An Empirical Evaluation of the MC/DC Coverage Criterion on the HETE-2 Satellite Software. Proceedings of the Digital Aviation Systems Conference (DASC), Philadelphia, October 2000. [11] Frankl, P. G., Weyuker, E. J. A Formal Analysis of the Fault-Detecting Ability of Testing Methods. IEEE Transactions on Software Engineering, Vol. 19, No. 3, March 1993, pp. 202–213. [12] Frankl, P. G., Weyuker E. J. An Applicable Family of Data Flow Testing. IEEE Transactions on Software Engineering, Vol. 14, No. 10, October 1988, pp. 1483–1497. 13

[13] Haworth, B. Adequacy criteria for object testing. Proceedings of the 2nd International Software Quality Week Europe 1998, Brussels, Belgium, November 1998. [14] Hayes, I. J. Specification Directed Module Testing. IEEE Transactions on Software Engineering, Vol. SE-12, No. 1, January 1986, pp. 124–133. [15] H¨orcher, H-M. Improving Software Tests using Z Specifications. ZUM’95: The Formal Specification Notation. 9th International Conference of Z Users, Limerick, Ireland, September 7 – 9, 1995. Proceedings. [16] Jacky, J. The Way of Z: Practical Programming with formal Methods. Cambridge University Press, 1997. [17] Jia, X. ZTC: A Type Checker for Z Notation. User’s Guide. Version 2.03, August 1998. Division of Software Engineering, School of Computer Science, Telecommunication, and Information Systems, DePaul University, USA, 1998. [18] Kaufman, S. K., Chernonozhkin, S. K. Testing Criteria and a System for Evaluation of the Completeness of a Test Set. Programming and Computer Software, No. 6, 1998. [19] McMorran, M. A., Powell, S. Z Guide for Beginners. Blackwell Scientific, 1993. [20] Myers, G. The Art of Software Testing. Wiley-Interscience, 1979. [21] Ntafos, S. A Comparison of Some Structural Testing Strategies. IEEE Transactions on Software Engineering, Vol. 14, No. 6, June 1988, pp. 868–874. [22] Offutt, A. J., Xiong, Y., Liu, S. Criteria for Generating Specification-Based Tests. Proceedings of Fifth IEEE International Conference on Engineering of Complex Computer Systems (ICECCS’99), Las Vegas, Nevada, USA, October 18 – 21, 1999, pp. 119– 129. [23] Podgurski, P., Clarke, L. A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging and Maintenance. IEEE Transactions on Software Engineering, Vol. 16, No. 9, September 1990, pp. 965–979. [24] Prather, R. E. Theory of Program Testing – An Overview. Bell System Technical Journal, Vol. 62, No. 10, 1984, pp. 3073–3105. [25] Rapps, S., Weyuker, E. J. Selecting Software Test Data Using Data Flow Information. IEEE Transactions on Software Engineering, Vol. SE-11, No. 4, April 1985, pp. 367– 375. [26] Roper, M. Software Testing. McGraw-Hill, 1994. [27] RTCA/DO-178B. Software Considerations in Airborne Systems and Equipment Certification, RTCA, Washington DC, 1992. [28] Spivey, J. M. The Z Notation: A Reference Manual. Prentice Hall International Series in Computer Science, 2nd edition, 1992. [29] Stocks, P., Carrington, D. A Framework for Specification-Based Testing. IEEE Transactions on Software Engineering, Vol. 22, No. 11, November 1996, pp. 777–793. [30] Tai, K-C. Theory of Fault-Based Predicate Testing for Computer Programs. IEEE Transactions on Software Engineering, Vol. 22, No. 8, August 1996, pp. 552–562. 14

[31] Vilkomir, S. A., Kharchenko, V. S. An ‘Asymmetric’ Approach to the Assessment of Safety-Critical Software During Certification and Licensing. Project Control: the Human Factor, Proceedings of ESCOM–SCOPE 2000 Conference, 18th – 20th April 2000, Munich, Germany, pp. 467–475. [32] Vilkomir, S. A., Kharchenko, V. S. Methodology of the review of software for safety important systems. Safety and Reliability. Proceedings of ESREL99 – The Tenth European Conference on Safety and Reliability, Munich-Garching, Germany, 13 – 17 September 1999, Vol. 1, pp. 593–596. [33] Woodward, M. R., Hedley, D., Hennell, M. A. Experience with Path Analysis and Testing of Programs. IEEE Transactions on Software Engineering, Vol. SE-6, No. 3, May 1980, pp. 278–286. [34] Zhu, H., Hall P. A., May, H. R. Software unit test coverage and adequacy. ACM Computing Surveys, Vol. 29, No. 4, December 1997, pp. 336–427.

15

Formalization of control-flow criteria of software testing

Importance of the software testing is increasing as a result of the extension .... with previously defined criteria and using a definition from [22] as a base:.

154KB Sizes 1 Downloads 250 Views

Recommend Documents

of Software Testing Two Futures of Software Testing
So even though the customer needs, the market conditions, the schedule, the ..... The state of tester certification as of this writing (November 2008) should be ...

Cultures of Formalization
Mar 9, 2010 - Amsterdam, The Netherlands). Anne Beaulieu .... Data-sharing also demands formalization: of notions of authorship and ownership of data, the ...

Tolerance of Control-Flow Testing Criteria
{kapoork, bowenjp}@sbu.ac.uk. Abstract. Effectiveness of testing criteria is the ability to detect fail- ures in a software program. We consider not only effec- tiveness of some testing criterion in itself but a variance of effectiveness of different

Tolerance of Control-Flow Testing Criteria
C (which divides the input domain into subdomains and re- quires the selection of one test case or set from ... based, where each domain is formed by test sets for testing one specific decision in a program. But it is ..... IEEE Computer Society Pres

The art of software testing
The Correspondence between Development and Testing. Processes. 127 ... topics: operating systems, applications software, security, communi- ... Rapid changes in ... knew about when Myers wrote the first edition: Web programming,.

The art of software testing
appears in print may not be available in electronic books. For more information about. Wiley products, visit our web site at www.Wiley.com. Library of Congress Cataloging-in-Publication Data: Myers, Glenford J. The art of software testing / Glenford

The art of software testing
1. Computer software—Testing. 2. Debugging in computer science. I. Badgett, Tom. II. .... ware Testing stood the test of time, 25 years on the publisher's list of available ..... you eventually want to use program testing to establish some degree.

Software Testing Techniques
through actual executions, i.e., with real data and under real (or simulated) ... In this paper, we focus on the technology maturation of testing techniques, including ..... Another interesting research in 1997 used formal architectural description f

pdf-2073\fundamentals-of-software-testing-by-bernard-homes.pdf ...
... practice to check out book Fundamentals Of Software Testing By. Bernard Homès. Page 3 of 6. pdf-2073\fundamentals-of-software-testing-by-bernard-homes.

Covering Arrays of Strength Four and Software Testing
Yasmeen Akhtar, Soumen Maity and Reshma C Chandrasekharan. Abstract A covering ... In most software development environments, time, computing, and.