Results 1 - 10
of
21
Test Input Generation with Java PathFinder
"... We show how model checking and symbolic execution can be used to generate test inputs to achieve structural coverage of code that manipulates complex data structures. We focus on obtaining branch-coverage during unit testing of some of the core methods of the red-black tree implementation in the Jav ..."
Abstract
-
Cited by 111 (6 self)
- Add to MetaCart
We show how model checking and symbolic execution can be used to generate test inputs to achieve structural coverage of code that manipulates complex data structures. We focus on obtaining branch-coverage during unit testing of some of the core methods of the red-black tree implementation in the Java TreeMap library, using the Java PathFinder model checker. Three di#erent test generation techniques will be introduced and compared, namely, straight model checking of the code, model checking used in a black-box fashion to generate all inputs up to a fixed size, and lastly, model checking used during white-box test input generation. The main contribution of this work is to show how e#cient white-box test input generation can be done for code manipulating complex data, taking into account complex method preconditions.
An Experimental Comparison of the Effectiveness of Branch Testing and Data Flow Testing
- IEEE Transactions on Software Engineering
, 1993
"... An experiment comparing the effectiveness of the all-uses and all-edges test data adequacy criteria was performed. The experiment was designed so as to overcome some of the deficiencies of previous software testing experiments. A large number of test sets was randomly generated for each of nine subj ..."
Abstract
-
Cited by 91 (4 self)
- Add to MetaCart
An experiment comparing the effectiveness of the all-uses and all-edges test data adequacy criteria was performed. The experiment was designed so as to overcome some of the deficiencies of previous software testing experiments. A large number of test sets was randomly generated for each of nine subject programs with subtle errors. For each test set, the percentages of executable edges and definition-use associations covered were measured and it was determined whether the test set exposed an error. Hypothesis testing was used to investigate whether all-uses adequate test sets are more likely to expose errors than are all-edges adequate test sets. All-uses was significantly more effective than all-edges for five of the subjects, and appeared guaranteed to detect the error in four of them. Further analysis showed that in four of these subjects, all-uses-adequate test sets were more effective than all-edges-adequate test sets of similar size. Logistic regression analysis was used to investigate whether the probability that a test set exposes an error increases as the percentage of definition-use associations or edges covered by it increases. The evidence did not strongly support this conjecture. Error exposing ability was shown to be strongly positively correlated to percentage of covered definition-use associations in only four of the nine subjects. Error exposing ability was also shown to be positively correlated to the percentage of covered edges in four (different) subjects, but the relationship was weaker. Author's address: Computer Science Dept., Polytechnic University, 6 Metrotech Center, Brooklyn, N.Y. 11201. E-mail: pfrankl@poly.edu. Supported in part by NSF Grants CCR-8810287 and CCR9206910 and by the New York State Science and Technology Founda...
Testing web applications by modeling with fsms
- Software and Systems Modeling
, 2005
"... Abstract. Researchers and practitioners are still trying to find effective ways to model and test Web applications. This paper proposes a system-level testing technique that combines test generation based on finite state machines with constraints. We use a hierarchical approach to model potentially ..."
Abstract
-
Cited by 37 (3 self)
- Add to MetaCart
Abstract. Researchers and practitioners are still trying to find effective ways to model and test Web applications. This paper proposes a system-level testing technique that combines test generation based on finite state machines with constraints. We use a hierarchical approach to model potentially large Web applications. The approach builds hierarchies of Finite State Machines (FSMs) that model subsystems of the Web applications, and then generates test requirements as subsequences of states in the FSMs. These subsequences are then combined and refined to form complete executable tests. The constraints are used to select a reduced set of inputs with the goal of reducing the state space explosion otherwise inherent in using FSMs. The paper illustrates the technique with a running example of a Web-based course student information system and introduces a prototype implementation to support the technique.
Automatic Testing of Software with Structurally Complex Inputs
, 2005
"... Modern software pervasively uses structurally complex data such as linked data structures. The standard approach to generating test suites for such software, manual generation of the inputs in the suite, is tedious and error-prone. This dissertation proposes a new approach for specifying properties ..."
Abstract
-
Cited by 27 (8 self)
- Add to MetaCart
Modern software pervasively uses structurally complex data such as linked data structures. The standard approach to generating test suites for such software, manual generation of the inputs in the suite, is tedious and error-prone. This dissertation proposes a new approach for specifying properties of structurally complex test inputs; presents a technique that automates generation of such inputs; describes the Korat tool that implements this technique for Java; and evaluates the effectiveness of Korat in testing a set of data-structure implementations. Our approach allows the developer to describe the properties of valid test inputs using a familiar implementation language such as Java. Specifically, the user provides an imperative predicate—a piece of code that returns a truth value—that returns true if the input satisfies the required property and false otherwise. Korat implements our technique for solving imperative predicates: given a predicate and a bound on the size of the predicate’s inputs, Korat automatically generates the bounded-exhaustive
Criteria for Testing Exception-Handling Constructs in Java Programs
- In Proceedings of the International Conference on Software Maintenance
, 1999
"... Exception-handling constructs provide a mechanism for raising exceptions, and a facility for designating protected code by attaching exception handlers to blocks of code. Despite the frequency of their occurrences, the behavior of exception-handling constructs is often the least understood and poorl ..."
Abstract
-
Cited by 18 (0 self)
- Add to MetaCart
Exception-handling constructs provide a mechanism for raising exceptions, and a facility for designating protected code by attaching exception handlers to blocks of code. Despite the frequency of their occurrences, the behavior of exception-handling constructs is often the least understood and poorly tested part of a program. The presence of such constructs introduces new structural elements, such as control-flow paths, in a program. To adequately test such programs, these new structural elements must be considered for coverage during structural testing. In this paper, we describe a class of adequacy criteria that can be used to test the behavior of exception-handling constructs. We present a subsumption hierarchy of the criteria, and illustrate the relationship of the criteria to those found in traditional subsumption hierarchies. We describe techniques for generating the test requirements for the criteria using our control-flow representations. We also describe a methodology f...
Assessing test data adequacy through program inference
- ACM Transactions on Programming Languages and Systems
, 1983
"... Despite the almost universal reliance on testing as the means of locating software errors and its long history of use, few criteria have been proposed for deciding when software has been thoroughly tested. As a basis for the development of usable notions of test data adequacy, an abstract definition ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
Despite the almost universal reliance on testing as the means of locating software errors and its long history of use, few criteria have been proposed for deciding when software has been thoroughly tested. As a basis for the development of usable notions of test data adequacy, an abstract definition is proposed and examined, and approximations to this definition are considered.
Perspectives on Software Engineering
- ACM Computing
, 1978
"... Software engineering refers to the process of creating software systems. It applies loosely to techniques which reduce high software cost and complexity while increasing reliability and mochfiability. This paper outlines the procedures used in the development of computer software, emphasizing large- ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
Software engineering refers to the process of creating software systems. It applies loosely to techniques which reduce high software cost and complexity while increasing reliability and mochfiability. This paper outlines the procedures used in the development of computer software, emphasizing large-scale software development, and pmpomtmg areas
Genetic Algorithms and the Automatic Generation of Test Data
- Semin. Arthr. Rheum
, 1995
"... Although it is well understood to be a generally undecidable problem, a number of attempts have been made over the years to develop systems to automatically generate test data to achieve a level of coverage (branch coverage for example) . These approaches have ranged at early attempts at symbolic ex ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
Although it is well understood to be a generally undecidable problem, a number of attempts have been made over the years to develop systems to automatically generate test data to achieve a level of coverage (branch coverage for example) . These approaches have ranged at early attempts at symbolic execution to more recent dynamic approaches and, despite their variety (and varying degrees of success), all the systems developed have involved a detailed analysis of the program or system under test. In a departure from this approach, this paper describes a system developed to explore the use of genetic algorithms to generate test data to automatically meet a level of coverage. Genetic algorithms are commonly applied to search problems within AI. They maintain a population of structures that evolve according to rules of selection, mutation and reproduction. Each individual in the environment receives a measure of its fitness in the environment. Reproduction selects individuals with high fitn...
Parallel test generation and execution with Korat
- In ESEC/FSE
, 2007
"... We present novel algorithms for parallel testing of code that takes structurally complex test inputs. The algorithms build on the Korat algorithm for constraint-based generation of structurally complex test inputs. Given an imperative predicate that specifies the desired structural constraints and a ..."
Abstract
-
Cited by 6 (5 self)
- Add to MetaCart
We present novel algorithms for parallel testing of code that takes structurally complex test inputs. The algorithms build on the Korat algorithm for constraint-based generation of structurally complex test inputs. Given an imperative predicate that specifies the desired structural constraints and a finitization that bounds the desired input size, Korat performs a systematic search to generate all test inputs (within the bounds) that satisfy the constraints. We present how to generate test inputs with a parallel search in Korat and how to execute test inputs in parallel, both off-line (when the inputs are saved on disk) and on-line (when execution immediately follows generation). The inputs that Korat generates enable bounded-exhaustive testing that checks the code under test exhaustively for all inputs within the given bounds. We also describe a novel methodology for reducing the number of equivalent inputs that Korat can generate. Our development of parallel Korat and the methodology for reducing equivalent inputs are motivated by testing an application developed at Google. The experimental results on running parallel Korat across up to 1024 machines on the Google’s infrastructure show that parallel test generation and execution can achieve significant speedup, up to 543.55 times.
Towards a Quality Assessment Framework for Knowledge-Based Systems
- Journal of Systems and Software
, 1995
"... Despite the success of knowledge-based systems in many domains, techniques for assuring their quality and reliability are still immature. A well-engineered software product is built using a process in which quality issues are addressed throughout. Key processes affecting product quality are specific ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
Despite the success of knowledge-based systems in many domains, techniques for assuring their quality and reliability are still immature. A well-engineered software product is built using a process in which quality issues are addressed throughout. Key processes affecting product quality are specification, verification, and validation. The processes are characterized by the production of certain artifacts at certain times. Therefore, by looking at the artifacts produced by a specific process, we can assess the quality of the resulting product, and also we can assess the capability of the developers to produce high-quality software. This article seeks to answer precisely this question: how can the level of capability of a supplier of knowledgebased systems be evaluated? This question is of concern to all customers of knowledge-based systems and, although standards for supplier-capability of conventional software have been developed, none address the unique characteristics of knowledge-based software. To answer the question, this article describes a set of state-of-the-art techniques for specifying, verifying, and validating knowledge-based systems, highlighting the artifacts associated with each. We also assess the state-of-the-practice, indicating the limited extent to which the techniques are in use at the present time. In addition to providing answers to the motivating question, the main objective of the article is to recommend ways in which the current state-of-the-practice can be improved.

