THESIS
2017
xiii, 129 pages : illustrations ; 30 cm
Abstract
Rapid advances in multi-core chip technology have lead to pervasive adoption of shared-memory concurrent programming, where software is jointly executed by multiple threads in a shared memory space. The inherent complexity of thread synchronization makes the evolution of concurrent programs error-prone, because code modification can affect how threads synchronize, which in turn can induce concurrent faults.
Regression testing is an important activity performed to guard against faults introduced by code changes. It is often performed by re-executing those existing tests that run successfully before code modification. If these tests trigger an unexpected failure, developers know that the code modification has introduced a regression fault. However, this approach has two fundamental probl...[
Read more ]
Rapid advances in multi-core chip technology have lead to pervasive adoption of shared-memory concurrent programming, where software is jointly executed by multiple threads in a shared memory space. The inherent complexity of thread synchronization makes the evolution of concurrent programs error-prone, because code modification can affect how threads synchronize, which in turn can induce concurrent faults.
Regression testing is an important activity performed to guard against faults introduced by code changes. It is often performed by re-executing those existing tests that run successfully before code modification. If these tests trigger an unexpected failure, developers know that the code modification has introduced a regression fault. However, this approach has two fundamental problems that make it inefficient and ineffective to expose regression faults: (1) Re-executing all the existing tests often requires long execution times, which can easily exceed the affordable time budget. (2) Existing tests might not be adequate to expose regression faults - in this case developers have to write additional tests, which is costly and labor intensive. This situation is aggravated for concurrent programs whose executions have non-deterministic behaviours, depending on the manifested thread interleavings.
To address these problems, in this thesis, we propose first a technique to reduce the execution times of regression testing concurrent programs by exploring only those interleavings that could reveal regression faults. Further, we propose a technique to alleviate the developers's burden of writing new concurrent tests manually. We also present a combination of these two techniques to generate effective tests and oracles that expose and detect regression faults in concurrent programs.
Post a Comment