1 |
Effective Heuristic-based Test Generation Techniques for Concurrent SoftwareRazavi, Niloofar 22 August 2014 (has links)
With the increasing dependency on software systems, we require them to be reliable and correct.
Software testing is the predominant approach in industry for finding software errors.
There has been a great advance in testing sequential programs throughout the past decades.
Several techniques have been introduced with the aim of automatically generating input values such that the executions of the program with those inputs provide meaningful coverage guarantees for the program.
Today, multi-threaded (concurrent) programs are becoming pervasive in the era of multiprocessor systems. The behaviour of a concurrent program depends not only on the input values but also on the way the executions of threads are interleaved. Testing concurrent programs is notoriously hard because often there are exponentially large number of interleavings of executions of threads that has to be explored. In this thesis, we propose an array of heuristicbased
testing techniques for concurrent programs to prioritize a subset of interleavings and test as many of them as possible. To that end, we develop:
(A) a sound and scalable technique that based on the events of an observed execution,
predicts runs that might contain null-pointer dereferences. This technique explores the interleaving space (based on the observed execution) while keeping the input values fixed and can be adapted to predict other types of bugs.
(B) a test generation technique that uses a set of program executions as a program under-approximation to explore both input and interleaving spaces. This technique generates tests that increase branch coverage in concurrent programs based their approximation models.
(C) a new heuristic, called bounded-interference, for input/interleaving exploration. It is defined based on the notion of data-flow between threads and is parameterized by the number of interferences among threads. Testing techniques that employ this heuristic are able to provide
coverage guarantees for concurrent programs (modulo interference bound).
(D) a testing technique which adapts the sequential concolic testing to concurrent programs by incorporating the bounded-interference heuristic into it. The technique provides branch coverage guarantees for concurrent programs.
Based on the above techniques, we have developed tools and used them to successfully find bugs in several traditional concurrency benchmarks.
|
2 |
Identification and annotation of concurrency design patterns in Java source code using static analysis.Mwebesa, Martin 01 December 2011 (has links)
Concurrent software is quickly becoming a very important facet in Software Engineering due
to numerous advantages, one of which is increased processing speed. Despite it's importance,
concurrent software is fraught with very difficult to detect bugs, for example deadlocks and
data races. Concurrency design patterns were created to o er successfully tried and tested
means to design and develop concurrent software to, amongst other things, minimize the
occurrence of these hard to detect bugs. In this thesis we discuss our novel static analysis
technique to detect these concurrency design patterns in Java source code and identify them
using commented Java annotations. Using our technique the commented Java annotations
are inserted above Java constructs that are not only part of the Java source code but also
make up the various roles that comprise the concurrency design pattern. The identifying
of the concurrency design patterns in the Java source code can aid in their maintenance
later on, by matching the inserted Java annotations to the various Java constructs they are
annotating. Maintaining the concurrency design patterns within the Java source code in
effect aids in maintaining the Java source code error free. / UOIT
|
3 |
Methods for Testing Concurrent SoftwareRadnoci, Ramon January 2009 (has links)
<p> </p><p>Most software today is concurrent and are used in everything from cell-</p><p>phones, washing machines, cars to aircraft control systems. The reliability</p><p>of the concurrent software may be more or less critical, depending on which</p><p>a.o. domain it is functioning in. Irrespective of domain, the concurrent</p><p>software must be sufficiently reliable.</p><p>It is therefore interesting to study how adaptable test methods for sequential</p><p>software are to test concurrent software. Novel test methods for concurrent</p><p>software can be developed by adapting test methods for sequential software.</p><p>In this dissertation, adaptability factors have been identified by conducting</p><p>a literature survey over state-of-the-art test methods. Directions taken in</p><p>the research of concurrent software testing is described by the survey. The</p><p>survey also demonstrates differences and similarities between test methods.</p><p>Three research contributions has been achieved by this dissertation. First,</p><p>this dissertation presents a survey over state-of-the-art-test methods. The</p><p>second contribution is the identified adaptability factors that should be</p><p>added to a test method for sequential software, that will be adapted to test</p><p>concurrent software. Finally, the third contribution to the field of concurrent</p><p>software testing is the identified future work in areas where test methods for</p><p>concurrent software has not been researched much or at all.</p><p> </p>
|
4 |
Methods for Testing Concurrent SoftwareRadnoci, Ramon January 2009 (has links)
Most software today is concurrent and are used in everything from cell- phones, washing machines, cars to aircraft control systems. The reliability of the concurrent software may be more or less critical, depending on which a.o. domain it is functioning in. Irrespective of domain, the concurrent software must be sufficiently reliable. It is therefore interesting to study how adaptable test methods for sequential software are to test concurrent software. Novel test methods for concurrent software can be developed by adapting test methods for sequential software. In this dissertation, adaptability factors have been identified by conducting a literature survey over state-of-the-art test methods. Directions taken in the research of concurrent software testing is described by the survey. The survey also demonstrates differences and similarities between test methods. Three research contributions has been achieved by this dissertation. First, this dissertation presents a survey over state-of-the-art-test methods. The second contribution is the identified adaptability factors that should be added to a test method for sequential software, that will be adapted to test concurrent software. Finally, the third contribution to the field of concurrent software testing is the identified future work in areas where test methods for concurrent software has not been researched much or at all.
|
5 |
Concurrent Software Testing : A Systematic Review and an Evaluation of Static Analysis ToolsMamun, Md. Abdullah Al, Khanam, Aklima January 2009 (has links)
Verification and validation is one of the most important concerns in the area of software engineering towards more reliable software development. Hence it is important to overcome the challenges of testing concurrent programs. The extensive use of concurrent systems warrants more attention to the concurrent software testing. For testing concurrent software, automatic tools development is getting increased focus. The first part of this study presents a systematic review that aims to explore the state-of-the-art of concurrent software testing. The systematic review reports several issues like concurrent software characteristics, bugs, testing techniques and tools, test case generation techniques and tools, and benchmarks developed for the tools. The second part presents the evaluation of four commercial and open source static analysis tools detecting Java multithreaded bugs. An empirical evaluation of the tools would help the industry as well as the academia to learn more about the effectiveness of the static analysis tools for concurrency bugs.
|
Page generated in 0.1701 seconds