TL;DR: In this paper, the authors address the problem of automating unit testing with memory graphs as inputs, and develop a method to represent and track constraints that capture the behavior of a symbolic execution of a unit with memory graph as inputs.
Abstract: In unit testing, a program is decomposed into units which are collections of functions. A part of unit can be tested by generating inputs for a single entry function. The entry function may contain pointer arguments, in which case the inputs to the unit are memory graphs. The paper addresses the problem of automating unit testing with memory graphs as inputs. The approach used builds on previous work combining symbolic and concrete execution, and more specifically, using such a combination to generate test inputs to explore all feasible execution paths. The current work develops a method to represent and track constraints that capture the behavior of a symbolic execution of a unit with memory graphs as inputs. Moreover, an efficient constraint solver is proposed to facilitate incremental generation of such test inputs. Finally, CUTE, a tool implementing the method is described together with the results of applying CUTE to real-world examples of C code.
TL;DR: A new approach to testing that uses combinatorial designs to generate tests that cover the pairwise, triple, or n-way combinations of a system's test parameters, and is implemented in the AETG system.
Abstract: This paper describes a new approach to testing that uses combinatorial designs to generate tests that cover the pairwise, triple, or n-way combinations of a system's test parameters. These are the parameters that determine the system's test scenarios. Examples are system configuration parameters, user inputs and other external events. We implemented this new method in the AETG system. The AETG system uses new combinatorial algorithms to generate test sets that cover all valid n-way parameter combinations. The size of an AETG test set grows logarithmically in the number of test parameters. This allows testers to define test models with dozens of parameters. The AETG system is used in a variety of applications for unit, system, and interoperability testing. It has generated both high-level test plans and detailed test cases. In several applications, it greatly reduced the cost of test plan development.
TL;DR: Experimental results indicate that feedback-directed random test generation can outperform systematic and undirectedrandom test generation, in terms of coverage and error detection.
Abstract: We present a technique that improves random test generation by incorporating feedback obtained from executing test inputs as they are created. Our technique builds inputs incrementally by randomly selecting a method call to apply and finding arguments from among previously-constructed inputs. As soon as an input is built, it is executed and checked against a set of contracts and filters. The result of the execution determines whether the input is redundant, illegal, contract-violating, or useful for generating more inputs. The technique outputs a test suite consisting of unit tests for the classes under test. Passing tests can be used to ensure that code contracts are preserved across program changes; failing tests (that violate one or more contract) point to potential errors that should be corrected. Our experimental results indicate that feedback-directed random test generation can outperform systematic and undirected random test generation, in terms of coverage and error detection. On four small but nontrivial data structures (used previously in the literature), our technique achieves higher or equal block and predicate coverage than model checking (with and without abstraction) and undirected random generation. On 14 large, widely-used libraries (comprising 780KLOC), feedback-directed random test generation finds many previously-unknown errors, not found by either model checking or undirected random generation.
TL;DR: In this paper, the authors introduce the Mechanical Behavior of Metals and Nonmetallic Materials Mechanical Testing of Polymers and Ceramics Mechanical Properties and Testing for Design Mechanical Testing for Metalworking processes Testing Machines and Strain Sensors Accreditation of Mechanical-Testing Laboratories Tension, Compression, Bend, and Shear Testing Hardness Testing Friction, Wear, and Surface Testing Creep and Stress-Relaxtion Testing High-Strain-Rate Testing Impact-Toughness Testing and Fracture Mechanics Fatigue Testing Component Testing Property-Comparison Tables Glossary of
Abstract: Introduction to the Mechanical Behavior of Metals and Nonmetallic Materials Mechanical Testing of Polymers and Ceramics Mechanical Properties and Testing for Design Mechanical Testing for Metalworking processes Testing Machines and Strain Sensors Accreditation of Mechanical-Testing Laboratories Tension, Compression, Bend, and Shear Testing Hardness Testing Friction, Wear, and Surface Testing Creep and Stress-Relaxtion Testing High-Strain-Rate Testing Impact-Toughness Testing and Fracture Mechanics Fatigue Testing Component Testing Property-Comparison Tables Glossary of Terms Index.
TL;DR: RANDOOP, which generates unit tests for Java code using feedback-directed random test generation, and RANDOOP, which is an annotation-based interface for specifying configuration parameters that affect R )'s behavior and output.
Abstract: RANDOOP for Java generates unit tests for Java code using feedback-directed random test generation. Below we describe RANDOOP's input, output, and test generation algorithm. We also give an overview of RANDOOP's annotation-based interface for specifying configuration parameters that affect RANDOOP's behavior and output.