CAREER: Advancing Regression Testing: Theory and Practice
University Of Texas At Austin, Austin TX
Investigators
Abstract
Software projects constantly evolve due to endless requirement changes despite the risk of introducing new bugs. Thus, software developers practice regression testing -- running tests at each project revision -- to check that recent project changes do not break any functionality. Although regression testing is important, it is costly due to the large number of revisions and tests, and the cost is reportedly increasing. Several techniques -- test selection, test-case prioritization, test-suite reduction, and parallelization -- can reduce regression testing cost, but their applicability and cost reduction depend on software development processes, i.e., the way developers write code, build the projects, and run tests. These processes are constantly evolving, sometimes making the existing regression-testing techniques inapplicable or ineffective. The PI identified five emerging trends that impact applicability and effectiveness: use of multiple programming languages, use of various development tools, use of cloud-based continuous integration services, increase in the number of revisions and tests, and proliferation of non-deterministic code. To significantly reduce the regression testing costs -- execution time, machine resources, and wasted developers' time caused by delays in detecting bugs -- the PI proposes five research activities that include designing and developing: (1) regression-testing techniques for projects written in multiple programming languages, (2) regression-testing techniques that remove unnecessary inefficiency due to behavior-preserving transformations and inadequate code structure, (3) techniques to reduce the cost of testing in the cloud, (4) techniques to reduce the cost of detecting the bug-introducing revision, and (5) techniques to identify, debug, and control non-determinism in tests. This proposal has the potential to substantially reduce the cost of software testing, which will reduce financial losses and casualties due to software bugs. The project will integrate research and education by developing new curriculum based on newly developed ideas, along with the development of a new concept called top-teaching, which inserts Software Engineering materials into other courses, where the subject matter and students are dependent on software development and need to be informed about good software development practices.
View original record on NSF Award Search →