Natella, Roberto (2011) Achieving Representative Faultloads in Software Fault Injection. [Tesi di dottorato] (Unpublished)
Download (5MB) | Preview
|Item Type:||Tesi di dottorato|
|Uncontrolled Keywords:||Software Faults, Fault Representativeness, Software Reliability, Fault Tolerance|
|Date Deposited:||15 Dec 2011 12:08|
|Last Modified:||30 Apr 2014 19:48|
Given the complexity of modern software systems and its pervasiveness in many aspects of our lives, software faults (i.e., bugs) are a dangerous threat. Unfortunately, it is impossible to assure that software is perfect despite of advances in software engineering. Therefore, mission- and safety-critical systems have to provide fault tolerance algorithms and mechanisms to mitigate this threat. Software Fault Injection emerged in the last decades as a means for testing and improving fault-tolerant systems. This approach deliberately introduces faults in a software in order to assess its behavior in the presence of software faults. In order to be adopted by practitioners in the development of critical systems, and to assure an effective and trustworthy evaluation of fault tolerance, the realism of faults being injected (fault representativeness) need to be assured, i.e., the injected faults should reflect the residual faults that escape the development process and that can affect the system. This thesis addresses fault representativeness with respect to three aspects. First, it proposes an approach for selecting code locations in which to inject software faults in a complex software system. The approach identifies locations in which faults are more likely to hide from testing, in order to focus the injection on the most representative locations and to reduce the number and cost of experiments at the same time. Second, it proposes a method for improving the accuracy of faults injected in binary code, which is required when the source code is not available as in the case of third-party software. Finally, this thesis proposes a technique for emulating concurrency faults, which are a significant part of faults affecting complex software. These contributions are instrumental to advance Software Fault Injection and make it an effective and practical approach for developing fault-tolerant systems.
Actions (login required)