Fault Class Prioritization in Boolean Expressions

Similar documents
Generating minimal fault detecting test suites for Boolean expressions

Evaluating and Comparing Fault-Based Testing Strategies for General Boolean Specifications: A Series of Experiments

An Empirical Evaluation and Analysis of the Fault-Detection Capability of MUMCUT for General Boolean Expressions *

BOOLEAN SPECIFICATION BASED TESTING TECHNIQUES: A SURVEY

FAULT BASED TECHNIQUES FOR TESTING BOOLEAN EXPRESSIONS: A SURVEY

An Extended Fault Class Hierarchy for Specification-Based Testing

Generating Minimal Fault Detecting Test Suites for General Boolean Specications

Bottom-up Integration Testing with the Technique of Metamorphic Testing

Fault Evaluator Engine Expression DB Test DB Fault Generator Results Compact Windows Summary Window Detail Window Output Files CSV HTML Main Class Inp

Interactive Fault Localization Using Test Information

On the Relationships of Faults for Boolean Specification Based Testing

BRANCH COVERAGE BASED TEST CASE PRIORITIZATION

Leveraging Transitive Relations for Crowdsourced Joins*

A Test Suite Reduction Method based on Test Requirement Partition

Similarity-Based Test Case Prioritization Using Ordered Sequences of Program Entities

Dr. N. Sureshkumar Principal Velammal College of Engineering and Technology Madurai, Tamilnadu, India

Test Cases Generation from UML Activity Diagrams

Fault propagation in tabular expression-based specifications

An Integrated Regression Testing Framework to Multi-Threaded Java Programs

Integrating White- and Black-Box Techniques for Class-Level Regression Testing

Generating Variable Strength Covering Array for Combinatorial Software Testing with Greedy Strategy

NP-Completeness of 3SAT, 1-IN-3SAT and MAX 2SAT

ADDICT: A Prototype System for Automated Test Data Generation Using the Integrated Classification-Tree Methodology

Test Suite Reduction with Selective Redundancy

Indexing and Query Processing

Bug Inducing Analysis to Prevent Fault Prone Bug Fixes

Introduction to Extended Common Coupling with an Application Study on Linux

Improving software testing cost-effectiveness through dynamic partitioning

Mubug: a mobile service for rapid bug tracking

Fault Localization for Firewall Policies

An Empirical Comparison of Compiler Testing Techniques

Minimum Bounding Boxes for Regular Cross-Polytopes

A NOVEL APPROACH TO TEST SUITE REDUCTION USING DATA MINING

QTEP: Quality-Aware Test Case Prioritization

Mutation of Model Checker Specifications for Test Generation and Evaluation

A General Sign Bit Error Correction Scheme for Approximate Adders

An Attribute-Based Access Matrix Model

Case Studies on the Selection of Useful Relations in Metamorphic Testing

Efficient Time-Aware Prioritization with Knapsack Solvers

Chapter 3. Requirement Based System Test Case Prioritization of New and Regression Test Cases. 3.1 Introduction

A NOVEL APPROACH FOR TEST SUITE PRIORITIZATION

DETERMINE COHESION AND COUPLING FOR CLASS DIAGRAM THROUGH SLICING TECHNIQUES

Adaptive Selection of Necessary and Sufficient Checkpoints for Dynamic Verification of Temporal Constraints in Grid Workflow Systems

An Empirical Study of Lazy Multilabel Classification Algorithms

MACHINE LEARNING BASED METHODOLOGY FOR TESTING OBJECT ORIENTED APPLICATIONS

New Upper Bounds for MAX-2-SAT and MAX-2-CSP w.r.t. the Average Variable Degree

PRIORITIZE REGRESSION TEST CASES

An Empirical Evaluation of Test Adequacy Criteria for Event-Driven Programs

A PERSONALIZED RECOMMENDER SYSTEM FOR TELECOM PRODUCTS AND SERVICES

Comment Extraction from Blog Posts and Its Applications to Opinion Mining

Constrained Types and their Expressiveness

Identification of Categories and Choices in Activity Diagrams

Designing Views to Answer Queries under Set, Bag,and BagSet Semantics

Program Partitioning - A Framework for Combining Static and Dynamic Analysis

Migration Based Page Caching Algorithm for a Hybrid Main Memory of DRAM and PRAM

Rust and C++ performance on the Algorithmic Lovasz Local Lemma

Visualization and Analysis of Inverse Kinematics Algorithms Using Performance Metric Maps

Spectrum-based Fault Localization: A Pair Scoring Approach

Empirical Evaluation of the Tarantula Automatic Fault-Localization Technique

Boolean Representations and Combinatorial Equivalence

A Comparison of Error Metrics for Learning Model Parameters in Bayesian Knowledge Tracing

Introduction to Homotopy Type Theory

Improved Attack on Full-round Grain-128

Effective Test Case Prioritization Technique in Web Application for Regression Test Suite

In past decades, researchers, and engineers have endeavored

CLEF-IP 2009: Exploring Standard IR Techniques on Patent Retrieval

TEST CASE EFFECTIVENESS OF HIGHER ORDER MUTATION TESTING

Eliminating False Loops Caused by Sharing in Control Path

Information and Software Technology

Mathematical Logic Prof. Arindama Singh Department of Mathematics Indian Institute of Technology, Madras. Lecture - 9 Normal Forms

Review of Regression Test Case Selection Techniques

SAMBA-BUS: A HIGH PERFORMANCE BUS ARCHITECTURE FOR SYSTEM-ON-CHIPS Λ. Ruibing Lu and Cheng-Kok Koh

Distributed T-Way Test Suite Data Generation using Exhaustive Search Method with Map and Reduce Framework

Empirical Studies of Test Case Prioritization in a JUnit Testing Environment

arxiv: v1 [cs.pl] 30 Sep 2013

Effect of Principle Component Analysis and Support Vector Machine in Software Fault Prediction

Machine Learning. Decision Trees. Manfred Huber

Automatic Specification-Based Program Testing

Overhead Analysis of Query Localization Optimization and Routing

EECS 219C: Formal Methods Boolean Satisfiability Solving. Sanjit A. Seshia EECS, UC Berkeley

Boolean Functions (Formulas) and Propositional Logic

International Journal of Advanced Research in Computer Science and Software Engineering

Automatic Generation of Graph Models for Model Checking

Repositorio Institucional de la Universidad Autónoma de Madrid.

An Architecture for Semantic Enterprise Application Integration Standards

Query Likelihood with Negative Query Generation

Case Study on Testing of Web-Based Application: Del s Students Information System

Digital Archives: Extending the 5S model through NESTOR

Metamorphic Testing and Its Applications

TEST CASE PRIORITIZATION ALGORITHM BASED UPON MODIFIED CODE COVERAGE IN REGRESSION TESTING

An Attempt to Identify Weakest and Strongest Queries

ScienceDirect. An Approach for Generating Minimal Test Cases for Regression Testing

Detecting Clusters and Outliers for Multidimensional

Notes on Photoshop s Defect in Simulation of Global Motion-Blurring

Designing and Building an Automatic Information Retrieval System for Handling the Arabic Data

From Event-B Models to Dafny Code Contracts

3. Genetic local search for Earth observation satellites operations scheduling

An Efficient Framework for User Authorization Queries in RBAC Systems

EECS 219C: Computer-Aided Verification Boolean Satisfiability Solving. Sanjit A. Seshia EECS, UC Berkeley

AN EFFICIENT GRADUAL PRUNING TECHNIQUE FOR UTILITY MINING. Received April 2011; revised October 2011

Transcription:

Fault Class Prioritization in Boolean Expressions Ziyuan Wang 1,2 Zhenyu Chen 1 Tsong-Yueh Chen 3 Baowen Xu 1,2 1 State Key Laboratory for Novel Software Technology, Nanjing University, Nanjing 210093, China 2 Department of Computer Science and Technology, Nanjing University, Nanjing 210093, China 3 Centre for Software Analysis and Testing, Swinburne University of Technology, Victoria 3122, Australia wangziyuan@nju.edu.cn, zychen@software.nju.edu.cn tychen@groupwise.swin.edu.au, bwxu@nju.edu.cn ABSTRACT A recent study has classified faults in Boolean expressions into ten classes and has proved that there are five key fault classes, namely CCF, CDF, ORF, ENF and ASF, such that if a test suite can kill all faulty versions of these five core fault classes, if can kill all faulty versions of all fault classes. In order to generate more effective test suites, we should prioritize these five fault classes further, such that test cases with stronger fault detection capability could be generated as early as possible. Such a process is referred to as the fault class prioritization. Based on the observation in the fault class hierarchy, we divide the five fault classes into two groups {CCF, CDF } and {ORF, ENF, ASF }. Two strategies of fault class prioritization are proposed to generate test cases efficiently. We design experiments using TCAS Boolean expressions and some randomly generated Boolean expressions. The experimental results suggest that if we generate test cases for CCF and CDF firstly, the final test suite always have a higher efficiency of killing faults. Categories and Subject Descriptors D.2.5 [Software Engineering]: Testing and Debugging General Terms Algorithms, Experimentation, Reliability Keywords Boolean expression, fault-based testing, fault class hierarchy, fault class prioritization 1. INTRODUCTION Software quality assurance is critical to the successful development and maintenance of software systems. There exist many approaches to improve software quality, including testing, inspection, and formal verification, etc. Software testing is a major means of software quality assurance in real-world software development life circles. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. SAC 12 March 26-30, 2012, Riva del Garda, Italy. Copyright 2011 ACM 978-1-4503-0857-1/12/03...$10.00. Fault-based testing can guarantee the detection of all hypothesized types of faults. This is an important advantage over other testing methods. Fault-based testing is first to hypothesize certain types of faults that may be committed by the programmers, and then to generate test cases that can detect these faults [7]. There has been an increasing interest on the use of a fault-based approach to generate test cases from software specifications in recent years. In particular, some researchers studied the fault-based testing of logical expressions [1, 9, 11], because logical decisions are key parts of program control-flows. For fault-based testing, ten types of faults are considered in general Boolean expression, including SA0, SA1, V NF, ENF, ASF, ORF, MV F, CCD, CDF, and MV F [2, 4]. So for a given general Boolean expression, a naive faultbased testing method may contain following steps: (i) generate test cases for each fault class to get a test suite, and (ii) merge ten test suites to get a final test suite that guarantees the detection of all possible faults. Such a naive testing method could be improved because the the existence of fault class hierarchy in Boolean expressions. Kuhn [5] firstly identified the relations between three types of faults in Boolean expressions. Tsuchiya and Kikuno [10] extended Kuhn s three fault classes to include the fault class of missing condition. Lau and Yu [6] further extended Kuhn s hierarchy by analyzing the relations between variable faults and literal faults. All these studies [5, 10, 6] assumed Boolean expressions in disjunctive normal form (DNF). Recently, some researchers have studied the fault class hierarchies in general Boolean expressions, because Boolean expressions in a realistic program or specification are normally not in DNF. Okun et al. [8] presented a more general analysis of literal faults with regard to negation, reference of conjunction and disjunction, as well as insertion of conjunction and disjunction. Kapoor and Bowen [4] also extended the analysis to general Boolean expressions. Chen et al. [2]provided a fault class hierarchy based on the more generalized fault relation (subsumption relationship). A co-stronger fault relation was introduced to establish a more complete hierarchy, in which, five fault classes, CCF, CDF, ORF, ENF and ASF, were identified as the core fault classes. These fault class hierarchies could be used to determine the order of dealing with the fault classes in order to achieve a more cost-effective test. Their analysis can also be applied to the design and evaluation of testing strategies [3]. For

example, the fault class hierarchy [2] helps us to improve fault-based testing. We only need to generate test cases for the five core fault classes, CCF, CDF, ORF, ENF and ASF, and then to merge these five test suites. The final test suite guarantees the detection of all possible faults. A new challenge is how to identify fault class s priority, namely fault class prioritization, such that we should first generate test cases for fault classes of higher possibility to kill more faulty versions. Based on the observation in the fault class hierarchy, it is natural to divide the five fault classes into two groups {CCF, CDF } and {ORF, ENF, ASF }. Two strategies of fault class prioritization are proposed to generate test cases efficiently. We design experiments on TCAS Boolean expressions and some randomly generated Boolean expressions. The experimental results suggest that if we generate test cases for {CCF, CDF } firstly, the final test suite always has high efficiency to detect faults. The rest of paper is organized as follows. Section 2 introduces fault class hierarchy and proposes two strategies of fault class prioritization. Section 3 gives a detailed description of experiments to evaluate two strategies empirically. Section 4 discusses our empirical study and its implication in practice. Section 5 presents the conclusion. 2. FAULT CLASS PRIORITIZATION A Boolean expression is a string which involves some Boolean variables x i (i 1), the logical operators (NOT), (AND), (OR), and the brackets (, ). Some backgrounds about fault class hierarchy are introduced in the following subsection. 2.1 Fault Class Hierarchy Ten fault classes used in [2, 4] are defined as follows. Operator Reference Fault (ORF ). An occurrence of a logical connective replaced by or vice versa. Expression Negation Fault (ENF ). A sub-expression (except conditions) is replaced by its negation. Variable Negation Fault (V NF ). An occurrence of a condition is replaced by its negation. Associative Shift Fault (ASF ). omission of the brackets. ASF is caused by Missing Variable Fault (MV F ). An occurrence of a condition is omitted in the expression. Variable Reference Fault (V RF ). An occurrence of a condition is replaced by another possible condition. A condition is said to be possible if its variable has already appeared in the expression. Clause Conjunction Fault (CCF ). An occurrence of condition c is replaced by c c, where c is a possible condition. Clause Disjunction Fault (CDF ). An occurrence of condition c is replaced by c c, where c is a possible condition. Stuck-At-0 Fault (SA0). An occurrence of a condition is replaced by 0 in the expression. MV F SA0 SA1 V RF ASF ORF ENF CCF CDF V NF Figure 1: A fault class hierarchy in general Boolean expressions Stuck-At-1 Fault (SA1). An occurrence of a condition is replaced by 1 in the expression. A fault class hierarchy based on the subsumption relation is proposed by Chen et al [2], which is shown in Figure 1. In Figure 1, A B indicates a test suite that kills all possible faults in A can kill all possible faults in B. The fault class hierarchy shows that five fault classes, CCF, CDF, ORF, ENF and ASF, are core fault classes. That is, a test suite that can kill all faulty versions of these five core fault types, can kill faulty versions of all fault classes. 2.2 Prioritization Strategies Based on the fault class hierarchy in Figure 1, the five core fault classes could be divided into two groups: (1) the first group, {CCF, CDF }, is co-stronger than five fault classes including MV F, V NF, SA0, SA1, and V RF ; (2) the second group, {ORF, ENF, ASF }, does not have any relationships with other seven fault classes. Following the division, two fault class prioritization strategies are proposed as follows. Given a Boolean expression, we generate all possible faulty versions in CCF and CDF. For each faulty version, we find all test cases that could kill it. All these test cases for each faulty version are collected into a set T a. Similarly, a set T b is generated for ORF, ENF and ASF. Strategy 1: CCF and CDF have higher priority. (1) Select test cases from T a to kill all faulty versions in CCF and CDF, and to generate a First- Round Test Suite. Here we could utilize some existing test case selection and reduction algorithms, including greedy algorithm, Harrold s [13] and Chen s [14] algorithms, etc. (2) Pick up all faulty versions in ORN, ENF and ASF, which have not been killed by the First- Round Test Suite. Then select test cases from T b to kill all these remaining faulty versions, and to form a Second-Round Test Suite. (3) Finally, merge the First-Round Test Suite and the Second-Round Test Suite to form a Final Test Suite.

Strategy 2: ORF, ENF and ASF have higher priority. (1) Select test cases from T b to kill all faulty versions in ORF, ENF and ASF, and to generate a First- Round Test Suite. (2) Pick up all faulty versions in CCF and CDF, which have not been killed by the First-Round Test Suite. Then select test cases from T a to kill all these remaining faulty versions, and to form a Second-Round Test Suite. (3) Finally, merge the First-Round Test Suite and the Second-Round Test Suite, and to form a Final Test Suite. In the following section, we will study the problem of prioritization of fault classes in fault-based Boolean-specification testing by comparing the two strategies in various aspects empirically. 3. EXPERIMENT In order to study which fault classes prioritization strategies are better, we will design experiments in this section to answer following concrete questions. (1) Cost: Which strategy will yield a smaller Final Test Suite? (2) Fault detection capability: Which strategy will yield a smaller First-Round Test Suite. And which strategy will get a higher percentage of killing all faulty versions in all 10 fault classes after the First-Round Test Suite has been designed? (3) Fault detection efficiency: Which strategy will yield a Final Test Suite with better efficiency, which is usually measured by the APFD metric [12]? In our experiments, we will use the 20 general form expressions in TCAS system [11] as the experiment objects, which have been extensively used in the research of Boolean specification-based testing. And to make our results to be more convictive, we will also supplement 4 groups of randomly generated expressions as the experiment objects. In each expression group, there are 20 randomly generated general form expressions, where the number of variables in these expressions ranges from 10 to 20, and the number of logical connective or ranges from 20 to 50. In following sub-sections, we will use the experimental data on 20 TCAS expressions and 4 groups of randomly generated expressions to answer the above three questions. 3.1 Cost Firstly, for TCAS expressions and 4 groups of randomly generated expressions, we compare the number of test cases in Final Test Suites generated by Strategy 1 and Strategy 2. And for comparison, we also examine the size of random test suites, which are obtained by randomly selecting test cases from the set T a Tb until all faulty versions in 10 fault classes have been killed. 10000 1000 Strategy 1 Strategy 2 Random select Figure 2: Number of test cases in Final Test Suites for 20 TCAS expressions 10000 1000 100 Group1 Group2 Group3 Group4 Figure 3: Number of test cases in Final Test Suites for 4 groups of randomly generated expressions The experimental results about the total number of test cases of Final Test Suites for 20 TCAS expressions are shown in Figure 2, in which the vertical axis denotes the number of test cases in Final Test Suite for all 20 expressions, the horizontal axis denotes the fault classes prioritization strategies including Strategy 1, Strategy 2, and random selection. It is evident that the random selection method is much worse that Strategy 1 and Strategy 2 since it requires much more test cases to kill all possible faulty versions. And we can conclude from Figure 2 that, for most expressions, the sizes of Final Test Suites generated by Strategy 1 are slightly larger than the sizes of Final Test Suites generated by Strategy 2. It is also shown that the gaps between two strategies are very narrow. Besides the 20 TCAS expressions, we investigate 4 groups of randomly generated Boolean expressions too, and display the results in Figure 3. Similarly, for each expression group, we count the number of test cases in Final Test Suite for all 20 expressions, and list the total number of test cases for 4 groups in Figure 3. The results about randomly generated expressions are very similar to the results about TCAS expressions. Therefore, we can conclude from the above results that the Strategy 1 is a slightly worse than Strategy 2 with respect to the number of test cases in the Final Test Suite. 3.2 Fault detection capability In this sub-section, for TCAS expressions and 4 groups of randomly generated expressions, we compare the number of test cases in First-Round Test Suites generated by Strategy 1 and Strategy 2. The fault detection ability of the First- Round Test Suites are also compared.

Strategy 1 Strategy 2 Group1 Group2 Group3 Group4 Figure 4: Percentage of faults killed by First-Round Test Suites for 20 TCAS expressions Figure 6: Percentage of faults killed by First-Round Test Suites for 4 groups of randomly generated expressions 50% 50% 0% Strategy 1 Strategy 2 Figure 5: Percentage of the sizes of First-Round Test Suites for 20 TCAS expressions Firstly, the experimental results for TCAS expressions show that, for all 20 expressions, the First-Round Test Suites generated by Strategy 1 kill all possible faulty versions in 10 fault classes. Another observation is that, for each TCAS expression, the size of First-Round Test Suite is equal to the size of corresponding Final Test Suite (so the Second-Round Test Suite will be empty) if Strategy 1 is utilized. The total percentage of faults killed by First-Round Test Suites for TCAS expressions are shown in Figure 4. And in Figure 5, we show the total percentage of the sizes of First-Round Test Suites to the sizes of corresponding Final Test Suites. Secondly, we analyze the experimental results for randomly generated expressions. Different from the TCAS expressions, for most randomly generated expressions, the First- Round Test Suites of Strategy 1 cannot guarantee fault detection (though very closed to ), and the sizes of these First-Round Test Suites are smaller than the sizes of corresponding Final Test Suites (but the gaps are very narrow). Here we report the total percentage of faults killed by First-Round Test Suites for 4 groups of randomly generated expressions in Figure 6. And in Figure 7, we report the total percentage of the sizes of First-Round Test Suites to the sizes of corresponding Final Test Suites. In such two figures, the results of Strategy 1 and Strategy 2 are listed from left to right respectively for each expression group. Therefore, we can conclude that, for both TCAS expressions and randomly generated expressions, First-Round Test Suites generated by Strategy 1, which nearly contain all test cases in the corresponding Final Test Suites, could kill almost all faulty versions of all 10 fault classes. But the First-Round tests suite generated by Strategy 2 can kill only 40 (TCAS) or 50 70% (randomly generated expressions) faulty versions by utilizing 10 25% (TCAS) 0% Group1 Group2 Group3 Group4 Figure 7: Percentage of the sizes of First-Round Test Suites for 4 groups of randomly generated expressions or 20 35% (randomly generated expressions) test cases in the corresponding Final Test Suite. 3.3 Fault detection efficiency Finally, we will compare the Final Test Suites that generated by Strategy 1 and 2 respectively, with respect to fault detection efficiency of killing faults. Note that for many expressions, the sizes of Final Test Suites generated by Strategy 1 and 2 are different. So it is unfair to compare their efficiency when they contain different numbers of test cases. In order to make the comparison to be more fair, before the comparison, a pretreatment of Final Test Suites for each expression is needed to make two corresponding Final Test Suites contains the same number of test cases. Here for each expression, we make a modification on the larger Final Test Suite by removing some latest test cases, until the its size is equal to another Final Test Suite. The test suite s efficiency of fault detection could be evaluated by a popular metric which is named as Average Percentage of Fault Detection (AP F D) [12]. Considering a prioritized test suite T = {T 1, T 2,, T m}, and a prophetic fault set F S = {f 1, f 2,, f k } of test object. If tf i is denoted as the index of the first test case that detects the fault f i, the AP F D for T is: AP F D(T ) = 1 tf 1 + tf 2 + + tf k k m + 1 2m The AP F D metric values of 20 expressions in TCAS system (1)

and 4 randomly generated groups are shown in Figure 8 and Figure 9-12. In these figures, for each expressions index, the results of Strategy 1 and 2 are listed from left to right. It is clear that, for most expressions, the Final Test Suites that generated by Strategy 1 have a higher AP F D metric value than the Final Test Suites that generated by Strategy 2. Therefore, we could conclude that Strategy 1 is better than Strategy 2 with respect to fault detection efficiency, which is measured by the extensively used AP F D metric. 4. DISCUSSION By analyzing all experimental results given in above section, we could reach the following conclusions. (1) For most Boolean expressions, Strategy 1 needs slightly more test cases than Strategy 2 to kill all possible faulty versions in 10 fault classes. (2) For Strategy 1, the First-Round Test Suite and the Final Test Suite are almost identical, and hence the First-Round Test Suite kills almost all faults. And for Strategy 2, the First-Round Test Suite uses 10 35% test cases in Final Test Suite to kill 40 70% faults. (3) The Final Test Suites generated by Strategy 1 usually have a higher efficiency of killing all possible faulty versions in ten fault classes. These results suggest that problem of prioritization of fault classes in fault-based Boolean-Specification testing may have different solutions depending on the different requirements of testing. The prioritization strategy that has a higher efficiency of killing faults is needed when the testing resource is limited. So fault classes CCF and CDF should have a higher priority when generating test cases in this circumstance. However, if there is not any risk that testing may be terminated exceptionally, the higher efficiency of killing faults is not important yet. So the prioritization strategy that requires a smaller Final Test Suite is better, and fault classes ORF, ENF and ASF should have a higher priority. 5. CONCLUSION Fault-based approach has been widely used in generating test cases for testing Boolean expressions. The fault class hierarchy has a close relationship with the fault-based testing, since generating test cases for different fault classes results in a different testing performance. For general form Boolean expressions, it has been proven that CCF, CDF, ORF, ENF and ASF are core fault classes. These 5 fault classes could be further divided into two groups {CCF, CDF } and {ORF, ENF, ASF }, where the former fault classes are costronger than all the other fault classes. So, there is a challenge of fault class prioritization that which group of fault classes should be considered firstly. By designing some experiments on TCAS expressions and some randomly generated expressions, experimental results suggest that different fault prioritization strategies should be selected depending on the particular testing constraints. In particular, when test resource is limited and there is a risk that testing may be terminated exceptionally, the strategy that CCF and CDF have higher priority, should be adopted since it may yield a higher fault detection efficiency. 6. ACKNOWLEDGEMENT The work described in this paper was partially supported by the National Natural Science Foundation of China (90818027, 91018005, 60803007, and 61003020), the Major State Basic Research Development Program of China (973 Program: 2009CB320703), and the Australian Research Council (ARC DP0771733). 7. REFERENCES [1] T. Y. Chen, M. F. Lau, and Y. T. Yu. MUMCUT: a fault-based strategy for testing Boolean specifications. In Proceedings of Asia-Pacific Software Engineering Conference (APSEC1999): 606 613. [2] Z. Chen, T. Y. Chen, and B. Xu. A revisit of fault class hierarchies in general Boolean specifications. ACM Transactions on Software Engineering Methodology, 2011, 20(3). [3] G. Kaminski, G. Williams, and P. Ammann. Reconciling perspectives of software logic testing. Software Testing, Verification and Reliability, 2008, 18(3): 149 188. [4] K. Kapoor and J. Bowen. Test conditions for fault classes in Boolean specifications. ACM Transactions on Software Engineering Methodology, 2007, 16(3): 1 12. [5] D. R. Kuhn. Fault classes and error detection capability of specification-based testing. ACM Transactions on Software Engineering Methodology, 1999, 8(4): 411 424. [6] M. F. Lau and Y. T. Yu. An extended fault class hierarchy for specification-based testing. ACM Transactions on Software Engineering Methodology, 2005, 14(3): 247 276. [7] L. J. Morell. A theory of fault-based testing. IEEE Transactions on Software Engineering, 1990, 16(8): 844 857. [8] V. Okun, P. E. Black, and Y. Yesha. Comparison of fault classes in specification-based testing. Information and Software Technology, 2004, 46(8): 525 533. [9] K. C. Tai, M. A. Vouk, A. Paradkar, and P. Lu. Evaluation of a predicate-based software testing strategy. IBM System Journal, 1994, 33(3): 445 457. [10] T. Tsuchiya and T. Kikuno. On fault classes and error detection capability of specification-based testing. ACM Transactions on Software Engineering Methodology, 2002, 11(1): 58 62. [11] E. Weyuker, T. Goradia, and A. Singh. Automatically generating test data from a Boolean specification. IEEE Transactions on Software Engineering, 1994, 20(5): 353 363. [12] G. Rothermel, R. H. Untch, C. Y. Chu, M. J. Harrold. Prioritizing test cases for regression testing. IEEE Transactions on Software Engineering, 2001, 27(10): 929-948. [13] M. J. Harrold, R. Gupta, and M. L. Soffa. A methodology for controlling the size of a test suite. ACM Transactions on Software Engineering and Methodology, 1993, 2(3): 270-285. [14] T. Y. Chen, and M. F. Lau. On the divide-and-conquer approach towards test suite reduction. Journal of Information Sciences, 2003, 152(1): 89-119.

Figure 8: APFD of Final Test Suites for 20 TCAS expressions Figure 9: APFD of Final Test Suites for 20 randomly generated expressions in 1st Group Figure 10: APFD of Final Test Suites for 20 randomly generated expressions in 2nd Group Figure 11: APFD of Final Test Suites for 20 randomly generated expressions in 3rd Group Figure 12: APFD of Final Test Suites for 20 randomly generated expressions in 4th Group