Software testing is of critical importance for the success of software projects. Current inefficient testing methods often still take up half or more of a software project's budget. Automatic test data generation is the most promising way to lower the software testing cost. Manually creating testing data is expensive and...
Aggressive random testing tools (“fuzzers”) are impressively effective
at finding compiler bugs. For example, a single test-case
generator has resulted in more than 1,700 bugs reported for a single
JavaScript engine. However, fuzzers can be frustrating to use:
they indiscriminately and repeatedly find bugs that may not be severe
enough...
How do you test a program when only a single user, with no expertise in software testing, is able to determine if the
program is performing correctly? Such programs are common today in the form of machine-learned classifiers. We consider the
problem of testing this common kind of machine-generated program...
The main goal of automated test generation is to improve the reliability of a program by exposing faults to developers. To this end, testing should cover the largest possible portion of the program given a test budget (i.e., time and resources) as frequently as possible. Coverage of a program entity...
In this paper we discuss the application of a range of techniques to the
verification of mission-critical flight software at NASA’s Jet Propulsion Laboratory.
For this type of application we want to achieve a higher level of confidence than can
be achieved through standard software testing. Unfortunately, given the current...
Building software systems that adapt to the changing environment is challenging. Developers cannot anticipate all the changes in advance, and even if they could, the effort required to handle such situations is too onerous for practical purposes. Self Adaptive Software (SAS) adapts itself as per changing environment. The area of...
Researchers/engineers in the field of software testing have valued coverage as a testing metric for decades now. There have been various empirical results that have shown that as coverage increases the ability of the test program to detect a fault also increases. As a result numerous coverage techniques have been...
Software testing is a very important task during software development and it can be used to improve the quality and reliability of the software system. One potential way to reduce the cost and increase the efficiency of software testing is to generate test data automatically. Search-based approaches successfully generate unit...
This thesis examines the influence of Christian missions on Yung Wing (1828-1912) during the nineteenth century, when China was beginning to encounter the West. Yung was the first Chinese graduate student to enter an American institution of higher education (Yale College, 1854). As a Westernized Christian intellectual, he strove to...
Society faces many complex management problems, particularly in the area of shared public resources such as ecosystems. Existing decision making processes are often guided by personal experience and political ideology rather than state-of-the-art scientific understanding. This dissertation envisions a future in which multiple stakeholders are provided with computational tools for...