Publikation: Bog/antologi/afhandling/rapport › Ph.d.-afhandling
Publikation: Bog/antologi/afhandling/rapport › Ph.d.-afhandling
}
TY - BOOK
T1 - Automated Testing Techniques for Event-Driven and Dynamically Typed Software Applications
AU - Adamsen, Christoffer Quist
PY - 2018/5/23
Y1 - 2018/5/23
N2 - Software testing is the process of executing a software application on a set of inputs, and determining if the application behaves as intended on these inputs. This thesis focuses on testing techniques for event-driven and dynamically typed applications. This is an important class of software, which includes mobile and web applications, that can be challenging to test thoroughly. When developers test their applications, they face several challenges. In particular, they need to: (i) generate a set of inputs to their application, along with oracles that specify intended behavior, (ii) react to test failures by repairing the application, and (iii) determine when the testing is adequate.The goal of this thesis is to design new techniques that can help developers in addressing these challenges. The thesis identifies opportunities for improving over state-of-the-art techniques, and proposes new techniques to address each of the challenges. We present a new methodology that extends the error detection capabilities of existing, manually written Android test suites. In the context of JavaScript web applications, we present practical race detectors for detecting AJAX and initialization races, and a technique that can prevent event race errors by restricting the nondeterminism. Finally, we present a notion of test completeness for dynamic languages, along with a hybrid static/dynamic analysis framework that approximates test completeness, and demonstrate the usefulness of test completeness facts. To demonstrate the usefulness of the proposed techniques, they have been implemented in publicly available prototypes, which have been evaluated on real-world software applications.
AB - Software testing is the process of executing a software application on a set of inputs, and determining if the application behaves as intended on these inputs. This thesis focuses on testing techniques for event-driven and dynamically typed applications. This is an important class of software, which includes mobile and web applications, that can be challenging to test thoroughly. When developers test their applications, they face several challenges. In particular, they need to: (i) generate a set of inputs to their application, along with oracles that specify intended behavior, (ii) react to test failures by repairing the application, and (iii) determine when the testing is adequate.The goal of this thesis is to design new techniques that can help developers in addressing these challenges. The thesis identifies opportunities for improving over state-of-the-art techniques, and proposes new techniques to address each of the challenges. We present a new methodology that extends the error detection capabilities of existing, manually written Android test suites. In the context of JavaScript web applications, we present practical race detectors for detecting AJAX and initialization races, and a technique that can prevent event race errors by restricting the nondeterminism. Finally, we present a notion of test completeness for dynamic languages, along with a hybrid static/dynamic analysis framework that approximates test completeness, and demonstrate the usefulness of test completeness facts. To demonstrate the usefulness of the proposed techniques, they have been implemented in publicly available prototypes, which have been evaluated on real-world software applications.
M3 - Ph.D. thesis
BT - Automated Testing Techniques for Event-Driven and Dynamically Typed Software Applications
PB - Aarhus Universitet
ER -