1 |
Efficient state space exploration for parallel test generationRamasamy Kandasamy, Manimozhian 03 September 2009 (has links)
Automating the generation of test cases for software is an active area of research.
Specification based test generation is an approach in which a formal representation of a
method is analyzed to generate valid test cases. Constraint solving and state space
exploration are important aspects of the specification based test generation. One problem
with specification based testing is that the size of the state space explodes when we apply
this approach to a code of practical size. Hence finding ways to reduce the number of
candidates to explore within the state space is important to make this approach practical
in industry. Korat is a tool which generates test cases for Java programs based on
predicates that validate the inputs to the method. Various ongoing researches intend to
increase the tools effectiveness in handling large state space. Parallelizing Korat and
minimizing the exploration of invalid candidates are the active research directions.
This report surveys the basic algorithms of Korat, PKorat, and Fast Korat. PKorat
is a parallel version of Korat and aims to take advantage of multi-processor and multicore
systems available. Fast Korat implements four optimizations which reduce the
number of candidate explored to generate validate candidates and reduce the amount of
time required to explore each candidate. This report also presents the execution time
results for generating test candidates for binary tree, doubly linked list, and sorted singly
linked list, from their respective predicates. / text
|
2 |
Systematic and Scalable Testing of Concurrent ProgramsSimsa, Jiri 16 December 2013 (has links)
The challenge this thesis addresses is to speed up the development of concurrent programs by increasing the efficiency with which concurrent programs can be tested and consequently evolved. The goal of this thesis is to generate methods and tools that help software engineers increase confidence in the correct operation of their programs. To achieve this goal, this thesis advocates testing of concurrent software using a systematic approach capable of enumerating possible executions of a concurrent program.
The practicality of the systematic testing approach is demonstrated by presenting a novel software infrastructure that repeatedly executes a program test, controlling the order in which concurrent events happen so that different behaviors can be explored across different test executions. By doing so, systematic testing circumvents the limitations of traditional ad-hoc testing, which relies on chance to discover concurrency errors.
However, the idea of systematic testing alone does not quite solve the problem of concurrent software testing. The combinatorial nature of the number of ways in which concurrent events of a program can execute causes an explosion of the number of possible interleavings of these events, a problem referred to as state space explosion.
To address the state space explosion problem, this thesis studies techniques for quantifying the extent of state space explosion and explores several directions for mitigating state space explosion: parallel state space exploration, restricted runtime scheduling, and abstraction reduction. In the course of its research exploration, this thesis pushes the practical limits of systematic testing by orders of magnitude, scaling systematic testing to real-world programs of unprecedented complexity.
|
Page generated in 0.1153 seconds