ABSTRACT
Incorrect program changes including regression bugs, incorrect bug-fixes, incorrect feature updates are pervasive in software. These incorrect program changes affect software quality and are difficult to detect/correct. In this paper, we propose the notion of "change contracts" to avoid incorrect program changes. Change contracts formally specify the intended effect of program changes. Incorrect program changes are detected when they are checked with respect to the change contracts. We design a change contract language for Java programs and a dynamic checking system for our change contract language. We conduct a preliminary user study to check the expressiveness of our change contract language and find that the language is expressive enough to capture a wide variety of real-life changes in three large software projects (i.e., Ant, JMeter, log4j). Finally, our contract checking system detects several real-life incorrect changes in these three software projects via runtime checking of the change contracts.
- Apache Ant. http://ant.apache.org/.Google Scholar
- L. Burdy, Y. Cheon, D. R. Cok, M. D. Ernst, J. R. Kiniry, G. T. Leavens, K. R. M. Leino, and E. Poll. An overview of JML tools and applications. STTT, 7(3):212--232, 2005. Google ScholarDigital Library
- Y. Chen, D. Rosenblum, and K. Vo. Testtube: A system for selective regression testing. In ICSE, pages 211--220, 1994. Google ScholarDigital Library
- R. Gupta, M. Harrold, and M. Soffa. An approach to regression testing using slicing. In ICSM, pages 299--308, 1992.Google ScholarCross Ref
- W. Jin, A. Orso, and T. Xie. Automated behavioral regression testing. In ICST, pages 137--146, 2010. Google ScholarDigital Library
- M. Kim and D. Notkin. Discovering and representing systematic code changes. In ICSE, pages 309--319, 2009. Google ScholarDigital Library
- B. Meyer. Eiffel: The language and environment. Prentice hall press, 300, 1991. Google ScholarDigital Library
- OpenJML. http://sourceforge.net/apps/trac/jmlspecs/wiki/OpenJml.Google Scholar
- S. Person, M. Dwyer, S. Elbaum, and C. Pasareanu. Differential symbolic execution. In FSE, pages 226--237, 2008. Google ScholarDigital Library
- D. Qi, A. Roychoudhury, and Z. Liang. Test generation to expose changes in evolving programs. In ASE, pages 397--406, 2010. Google ScholarDigital Library
- D. Qi, A. Roychoudhury, Z. Liang, and K. Vaswani. DARWIN:an approach for debugging evolving programs. In FSE, pages 33--42, 2009. Google ScholarDigital Library
- D. Qi, J. Yi, and A. Roychoudhury. Software change contracts. Technical Report TRE3/12, National University of Singapore, 2012. Available at https://dl.comp.nus.edu.sg/dspace/handle/1900.100/3588.Google ScholarDigital Library
- G. Rothermel, R. Untch, C. Chu, and M. Harrold. Prioritizing test cases for regression testing. TSE, 27(10):929--948, 2001. Google ScholarDigital Library
- Z. Yin, D. Yuan, Y. Zhou, S. Pasupathy, and L. N. Bairavasundaram. How do fixes become bugs? In FSE, pages 26--36, 2011. Google ScholarDigital Library
- A. Zeller. Yesterday, my program worked. Today, it does not. Why? In FSE, pages 253--267, 1999. Google ScholarDigital Library
Index Terms
- Software change contracts
Recommendations
Software Change Contracts
Software errors often originate from incorrect changes, including incorrect program fixes, incorrect feature updates, and so on. Capturing the intended program behavior explicitly via contracts is thus an attractive proposition. In our recent work, we ...
Expressing and checking intended changes via software change contracts
ISSTA 2013: Proceedings of the 2013 International Symposium on Software Testing and AnalysisSoftware errors often originate from incorrect changes, including incorrect program fixes, incorrect feature updates and so on. Capturing the intended program behavior explicitly via contracts is thus an attractive proposition. In our recent work, we ...
Comments