Reducing wasted development time via continuous testing

Testing is often performed frequently during development to ensure software reliability by catching regression errors quickly. However, stopping frequently to test also wastes time by holding up development progress. User studies on real development projects indicate that these two sources of wasted time account for 10-15% of development time. These measurements use a novel technique for computing the wasted extra development time incurred by a delay in discovering a regression error. We present a model of developer behavior that infers developer beliefs from developer behavior, and that predicts developer behavior in new environments - in particular, when changing testing methodologies or tools to reduce wasted time. Changing test ordering or reporting reduces wasted time by 4-41% in our case study. Changing the frequency with which tests are run can reduce wasted time by 31-82% (but developers cannot know the ideal frequency except after the fact). We introduce and evaluate a new technique, continuous testing, that uses spare CPU resources to continuously run tests in the background, providing rapid feedback about test failures as as source code is edited. Continuous testing reduced wasted time by 92-98%, a substantial improvement over the other approaches. We have integrated continuous testing into two development environments, and are beginning user studies to evaluate its efficacy. We believe it has the potential to reduce the cost and improve the efficacy of testing and, as a result, to improve the reliability of delivered systems.

[1]  G. Miller,et al.  Plans and the structure of behavior , 1960 .

[2]  G. Talland Plans and the Structure of Behavior , 1961 .

[3]  G. Miller,et al.  Plans and the structure of behavior , 1960 .

[4]  Robert P. Nix,et al.  Editing by example , 1984 .

[5]  Peter B. Henderson,et al.  Continuous execution: the VisiProg environment , 1985, ICSE '85.

[6]  Richard R. Rosinski,et al.  Programmer perceptions of productivity and programming tools , 1985, CACM.

[7]  Rajiv Gupta,et al.  A methodology for controlling the size of a test suite , 1990, Proceedings. Conference on Software Maintenance 1990.

[8]  Henry Lieberman,et al.  Watch what I do: programming by demonstration , 1993 .

[9]  Walter Baziuk,et al.  BNR/NORTEL: path to improve product quality, reliability and customer satisfaction , 1995, Proceedings of Sixth International Symposium on Software Reliability Engineering. ISSRE'95.

[10]  Shel Siegel,et al.  Object oriented software testing - a hierarchical approach , 1996 .

[11]  Gregg Rothermel,et al.  Analyzing Regression Test Selection Techniques , 1996, IEEE Trans. Software Eng..

[12]  Joseph Robert Horgan,et al.  A study of effective regression testing in practice , 1997, Proceedings The Eighth International Symposium on Software Reliability Engineering.

[13]  Ron Cytron,et al.  Does “just in time” = “better late than never”? , 1997, POPL '97.

[14]  Michal Young,et al.  Residual test coverage monitoring , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[15]  Pedro M. Domingos,et al.  Version Space Algebra and its Application to Programming by Demonstration , 2000, ICML.

[16]  Gregg Rothermel,et al.  Prioritizing test cases for regression testing , 2000, ISSTA '00.

[17]  Amitabh Srivastava,et al.  Effectively prioritizing tests in development environment , 2002, ISSTA '02.

[18]  K. Beck,et al.  Extreme Programming Explained , 2002 .

[19]  David Garlan,et al.  Lightweight structure in text , 2002 .

[20]  Alessandro Orso,et al.  Gamma system: continuous evolution of software after deployment , 2002, ISSTA '02.

[21]  Mary Lou Soffa,et al.  Continuous compilation: a new approach to aggressive and adaptive code transformation , 2003, Proceedings International Parallel and Distributed Processing Symposium.

[22]  K. K. Aggarwal,et al.  Code coverage based technique for prioritizing test cases for regression testing , 2004, SOEN.

[23]  Gregg Rothermel,et al.  An empirical study of regression test application frequency , 2005, Softw. Test. Verification Reliab..