The testing complexity of different classes of programs is examined. The testing complexity is measured in terms of the test data required for demonstrating program correctness. None of the commonly used test criter...
详细信息
The testing complexity of different classes of programs is examined. The testing complexity is measured in terms of the test data required for demonstrating program correctness. None of the commonly used test criteria is sufficient to guarantee absence of errors. Those criteria include: 1. executing every statement at least once, 2. traversing every branch at least once, and 3. executing every path at least once. Two new test criteria have been proposed: 1. Test a path by showing the correctness of the path transformation and path condition. 2. Test a program by selecting test points for predicates and blocks. These new criteria offer methods for selecting test data that are more thorough than simply testing each statement, branch, or path at least once.
Automatic test data generation usually concerns identifying input values that cause a selected path to execute. If a given path involves pointers, then input values may be represented in terms of two-dimensional dynam...
详细信息
Automatic test data generation usually concerns identifying input values that cause a selected path to execute. If a given path involves pointers, then input values may be represented in terms of two-dimensional dynamic data structures such as lists or trees. Thus, it is very important to identify the shape of the input data structure describing how many nodes are required and how nodes are connected each other. The approach presented in this paper makes use of the points-to information for each statement in the selected path for the shape generation. It also converts each statement into a static single assignment (SSA) form without pointer dereferences. The SSA form serves as a system of constraints to be solved to yield input values for non-pointer types. An empirical evaluation shows that shape generation can be achieved in linear time in terms of the number of pointer dereference operations. Copyright (C) 2008 John Wiley & Sons, Ltd.
Inductive inference, which is the automatic synthesis of programs, bears certain ostensible associations with program testing. For inductive inference, one must take a finite sample of the desired input-output behavi...
详细信息
Inductive inference, which is the automatic synthesis of programs, bears certain ostensible associations with program testing. For inductive inference, one must take a finite sample of the desired input-output behavior of some program and create an equivalent program. In the testing paradigm, one seeks a finite sample for a function such that any program that calculates something other than the object function differs from the object function on the finite sample. In both instances, the finite sample embodies sufficient knowledge to isolate the desired program from all other likelihoods. These relationships are investigated and general recursion theoretic characteristics of testable sets of functions are exposed. The results show that the notions of inductive inference and program testing are incomparable. Further, the results that relate completely recursively enumerable sets to testable sets indicate that there are effective methods to reduce a set to, perhaps, an efficiently testable set.
The two primary goals of a theory of testing are to provide a basis for practical program testing methodologies and to establish ways of determining the effectiveness of tests in detecting program errors. In order to ...
详细信息
The two primary goals of a theory of testing are to provide a basis for practical program testing methodologies and to establish ways of determining the effectiveness of tests in detecting program errors. In order to extend and refine the theory of test data selection proposed by Goodenough and Gerhart, the concepts of a revealing test selection criterion and a revealing subdomain are proposed and then used to provide a basis for constructing program tests.A subset of a program's input domain is revealing if the existence of one incorrectly processed input implies that all of the subsets's elements are processed incorrectly. This notion partitions the program's domain in such a way that all elements of an equivalence class are either processed correctly or incorrectly. A test set is then formed by choosing one element from each class. This process represents perfect program testing. The notion of a revealing subdomain makes it possible to get closer to combining realistically attainable characteristics of good tests with a reasonable level of confidence in the test results. Figures.
Certain properties of data flow can be used as a criterion for test path selection. Two data testing strategies have been designed. The first involves checking liveness of every definition of a variable at the point...
详细信息
Certain properties of data flow can be used as a criterion for test path selection. Two data testing strategies have been designed. The first involves checking liveness of every definition of a variable at the point of its possible use, and the other deals with liveness of vectors of variables treated as arguments to an instruction. A number of algorithms for the data flow analysis problem can be adapted to data flow testing strategies. Such testing-oriented data flow analysis could be part of an intricate debugger, but further studies remain. These should address: 1. the use of a hierarchical, data-oriented program decomposition for testing purposes, 2. comparative analysis with the control-oriented approach, and 3. methods for combining data flow with functional specification-driven testing to enhance viability of the approach.
In case of underspecified or not fully predictable systems, models specifying system behaviors are nondeterministic. Nondeterminism poses several challenges for the validation and verification activities, including th...
详细信息
ISBN:
(纸本)9780769549934;9781479913244
In case of underspecified or not fully predictable systems, models specifying system behaviors are nondeterministic. Nondeterminism poses several challenges for the validation and verification activities, including the problem of inconclusive tests in model-based testing with model checker. It is a validation technique that uses model checker counterexamples as test cases. In this paper, we tackle the problem of testing nondeterministic systems by combining model-based testing and runtime conformance monitoring: the input sequences of the tests are automatically generated from nondeterministic models;then their execution is runtime monitored to check conformance of the code w.r.t. its specification. This technique provides an oracle for the test data, it never bears inconclusive responses, and it allows measuring the requirement coverage. The approach uses the Abstract State Machines as formal method for specification purposes and Java as implementation language. As a proof of concepts, the Tic-Tac-Toe game is taken as example of a system with nondeterministic behavior (both at specification and code levels).
program slicing is widely used as an aid in program analysis. In several cases, it is observed that the static slices contain a large number of program statements. Due to this increased size of the static slice, they ...
详细信息
ISBN:
(纸本)9780769549477;9781467355742
program slicing is widely used as an aid in program analysis. In several cases, it is observed that the static slices contain a large number of program statements. Due to this increased size of the static slice, they are of little use in many practical applications. Moreover, the static slices may be less precise compared to dynamic slices. Partial slicing is suggested as a method for program testing in order to eliminate the disadvantages of static slicing. In partial slices, in addition to the static slicing criterion, the user has to provide the program point. program point specifies the program statement up to which the static slicing is to be performed. The partial slices produced in this manner combines both static and program point information. This in turn is analyzed to verify the constraints and conditions in the slices to remove any obscurity in the program testing process. In this work we propose a partial slicing approach, which can be applied in program testing. An appealing aspect of this work is that, using partial slicing the whole program testing process may be made more direct and effective. Some illustrations which highlight the easiness of the proposed partial slicing are provided to affirm the significance of this work.
The basic features of the DISSECT symbolic testing tool are described. Usage procedures are outlined and the special advantages of the tool are summarized. Cost estimates for using the tool are provided and the result...
详细信息
Data abstraction, information hiding, inheritance, and dynamic binding are four basic elements used in designing object-oriented (OO) programs. These four mechanisms enable programmer to write OO programs for easy to ...
详细信息
暂无评论