Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2491411.2491430acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

Regression tests to expose change interaction errors

Published: 18 August 2013 Publication History

Abstract

Changes often introduce program errors, and hence recent software testing literature has focused on generating tests which stress changes. In this paper, we argue that changes cannot be treated as isolated program artifacts which are stressed via testing. Instead, it is the complex dependency across multiple changes which introduce subtle errors. Furthermore, the complex dependence structures, that need to be exercised to expose such errors, ensure that they remain undiscovered even in well tested and deployed software. We motivate our work based on empirical evidence from a well tested and stable project - Linux GNU Coreutils - where we found that one third of the regressions take more than two (2) years to be fixed, and that two thirds of such long-standing regressions are introduced due to change interactions for the utilities we investigated.
To combat change interaction errors, we first define a notion of change interaction where several program changes are found to affect the result of a program statement via program dependencies. Based on this notion, we propose a change sequence graph (CSG) to summarize the control-flow and dependencies across changes. The CSG is then used as a guide during program path exploration via symbolic execution - thereby efficiently producing test cases which witness change interaction errors. Our experimental infra-structure was deployed on various utilities of GNU Coreutils, which have been distributed with Linux for almost twenty years. Apart from finding five (5) previously unknown errors in the utilities, we found that only one in five generated test cases exercises a sequence that is critical to exposing a change-interaction error, while being an order of magnitude more likely to expose an error. On the other hand, stressing changes in isolation only exposed half of the change interaction errors. These results demonstrate the importance and difficulty of change dependence-aware regression testing.

References

[1]
T. Apiwattanapong, R. Santelices, P. K. Chittimalli, A. Orso, and M. J. Harrold. Matrix: Maintenance-oriented testing requirements identifier and examiner. In Proceedings of the Testing: Academic & Industrial Conference on Practice And Research Techniques, TAIC-PART ’’06, 2006.
[2]
M. Böhme, B. C. Oliveira, and A. Roychoudhury. Partition-based regression verification. In Proceedings of the 2013 International Conference on Software Engineering, ICSE 2013, pages 301–310, 2013.
[3]
C. Cadar, D. Dunbar, and D. Engler. Klee: unassisted and automatic generation of high-coverage tests for complex systems programs. In Proceedings of the 8th USENIX conference on Operating systems design and implementation, OSDI’08, pages 209–224, Berkeley, CA, USA, 2008. USENIX Association.
[4]
C. Cowan, C. Pu, D. Maier, H. Hintony, J. Walpole, P. Bakke, S. Beattie, A. Grier, P. Wagle, and Q. Zhang. Stackguard: automatic adaptive detection and prevention of buffer-overflow attacks. In Proceedings of the 7th conference on USENIX Security Symposium - Volume 7, SSYM’98, pages 5–5, Berkeley, CA, USA, 1998. USENIX Association.
[5]
GNU Coreutils - bug reports. http://lists.gnu.org/ archive/html/bug-coreutils/, Accessed: July 2013.
[6]
P. Godefroid, N. Klarlund, and K. Sen. Dart: directed automated random testing. In Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, PLDI ’05, 2005.
[7]
Z. Gu, E. T. Barr, D. J. Hamilton, and Z. Su. Has the bug really been fixed? In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, ICSE ’10, pages 55–64, New York, NY, USA, 2010. ACM.
[8]
W. Jin and A. Orso. Bugredux: reproducing field failures for in-house debugging. In Proceedings of the 2012 International Conference on Software Engineering, ICSE 2012, 2012.
[9]
K.-K. Ma, K. Y. Phang, J. S. Foster, and M. Hicks. Directed symbolic execution. In Proceedings of the 18th International Conference on Static Analysis, SAS’11, 2011.
[10]
P. D. Marinescu and C. Cadar. make test-zesti: a symbolic execution solution for improving regression testing. In Proceedings of the 2012 International Conference on Software Engineering, ICSE 2012, pages 716–726, Piscataway, NJ, USA, 2012. IEEE Press.
[11]
S. Person, M. B. Dwyer, S. Elbaum, and C. S. Pˇ asˇ areanu. Differential symbolic execution. In Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering, SIGSOFT ’08/FSE-16, pages 226–237, New York, NY, USA, 2008. ACM.
[12]
S. Person, G. Yang, N. Rungta, and S. Khurshid. Directed incremental symbolic execution. In Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation, PLDI ’11, 2011.
[13]
D. Qi, A. Roychoudhury, and Z. Liang. Test generation to expose changes in evolving programs. In Proceedings of the IEEE/ACM international conference on Automated software engineering, ASE ’10, 2010.
[14]
D. Qi, W. N. Sumner, F. Qin, M. Zheng, X. Zhang, and A. Roychoudhury. Modeling software execution environment. Reverse Engineering, Working Conference on, 0:415–424, 2012.
[15]
R. Santelices, P. K. Chittimalli, T. Apiwattanapong, A. Orso, and M. J. Harrold. Test-suite augmentation for evolving software. In Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering, ASE ’08, 2008.
[16]
R. Santelices and M. J. Harrold. Applying aggressive propagation-based strategies for testing changes. In Proceedings of the 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation, ICST ’11, pages 11–20, Washington, DC, USA, 2011. IEEE Computer Society.
[17]
R. Santelices, M. J. Harrold, and A. Orso. Precisely detecting runtime change interactions for evolving software. In Proceedings of the 2010 Third International Conference on Software Testing, Verification and Validation, ICST ’10, 2010.
[18]
K. Taneja, T. Xie, N. Tillmann, and J. de Halleux. express: guided path exploration for efficient regression test generation. In Proceedings of the 2011 International Symposium on Software Testing and Analysis, ISSTA ’11, 2011.
[19]
J. M. Voas. Pie: A dynamic failure-based technique. IEEE Trans. Softw. Eng., 18(8):717–727, Aug. 1992.
[20]
C. Wang, M. Said, and A. Gupta. Coverage guided systematic concurrency testing. In Proceedings of the 33rd International Conference on Software Engineering, ICSE ’11, pages 221–230, New York, NY, USA, 2011. ACM.
[21]
Z. Xu. Directed test suite augmentation. In Proceedings of the 33rd International Conference on Software Engineering, ICSE ’11, pages 1110–1113, New York, NY, USA, 2011. ACM.
[22]
Z. Xu, Y. Kim, M. Kim, G. Rothermel, and M. B. Cohen. Directed test suite augmentation: techniques and tradeoffs. In Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering, FSE ’10, pages 257–266, New York, NY, USA, 2010. ACM.
[23]
C. Zamfir and G. Candea. Execution synthesis: a technique for automated software debugging. In Proceedings of the 5th European conference on Computer systems, EuroSys ’10, 2010.

Cited By

View all
  • (2024)Enhancing Exploratory Testing by Large Language Model and Knowledge GraphProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639157(1-12)Online publication date: 20-May-2024
  • (2023)GameRTS: A Regression Testing Framework for Video GamesProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00122(1393-1404)Online publication date: 14-May-2023
  • (2022)Constructing a System Knowledge Graph of User Tasks and Failures from Bug Reports to Support Soap Opera TestingProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3556967(1-13)Online publication date: 10-Oct-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ESEC/FSE 2013: Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
August 2013
738 pages
ISBN:9781450322379
DOI:10.1145/2491411
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 18 August 2013

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Graph-Based Search
  2. Test Generation

Qualifiers

  • Research-article

Conference

ESEC/FSE'13
Sponsor:

Acceptance Rates

Overall Acceptance Rate 112 of 543 submissions, 21%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)21
  • Downloads (Last 6 weeks)1
Reflects downloads up to 18 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Enhancing Exploratory Testing by Large Language Model and Knowledge GraphProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639157(1-12)Online publication date: 20-May-2024
  • (2023)GameRTS: A Regression Testing Framework for Video GamesProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00122(1393-1404)Online publication date: 14-May-2023
  • (2022)Constructing a System Knowledge Graph of User Tasks and Failures from Bug Reports to Support Soap Opera TestingProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3556967(1-13)Online publication date: 10-Oct-2022
  • (2022)Feedback-Driven Incremental Symbolic Execution2022 IEEE 33rd International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE55969.2022.00055(505-516)Online publication date: Oct-2022
  • (2022)On the use of commit-relevant mutantsEmpirical Software Engineering10.1007/s10664-022-10138-127:5Online publication date: 1-Sep-2022
  • (2021)Regression Greybox FuzzingProceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security10.1145/3460120.3484596(2169-2182)Online publication date: 12-Nov-2021
  • (2020)Exploring feature interactions without specifications: a controlled experimentACM SIGPLAN Notices10.1145/3393934.327812753:9(40-52)Online publication date: 7-Apr-2020
  • (2020)HyDiffProceedings of the ACM/IEEE 42nd International Conference on Software Engineering10.1145/3377811.3380363(1273-1285)Online publication date: 27-Jun-2020
  • (2020)Regression Testing of Massively Multiplayer Online Role-Playing Games2020 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME46990.2020.00074(692-696)Online publication date: Sep-2020
  • (2020)Commit-Aware Mutation Testing2020 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME46990.2020.00045(394-405)Online publication date: Sep-2020
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media