[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1109/ASE.2013.6693084acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
Article

Characteristic studies of loop problems for structural test generation via symbolic execution

Published: 11 November 2013 Publication History

Abstract

Dynamic Symbolic Execution (DSE) is a state-of-the-art test-generation approach that systematically explores program paths to generate high-covering tests. In DSE, the presence of loops (especially unbound loops) can cause an enormous or even infinite number of paths to be explored. There exist techniques (such as bounded iteration, heuristics, and summarization) that assist DSE in addressing loop problems. However, there exists no literature-survey or empirical work that shows the pervasiveness of loop problems or identifies challenges faced by these techniques on real-world open-source applications. To fill this gap, we provide characteristic studies to guide future research on addressing loop problems for DSE. Our proposed study methodology starts with conducting a literature-survey study to investigate how technical problems such as loop problems compromise automated software-engineering tasks such as test generation, and which existing techniques are proposed to deal with such technical problems. Then the study methodology continues with conducting an empirical study of applying the existing techniques on real-world software applications sampled based on the literature-survey results and major open-source project hostings. This empirical study investigates the pervasiveness of the technical problems and how well existing techniques can address such problems among real-world software applications. Based on such study methodology, our two-phase characteristic studies identify that bounded iteration and heuristics are effective in addressing loop problems when used properly. Our studies further identify challenges faced by these techniques and provide guidelines for effectively addressing these challenges.

References

[1]
A bibliography of papers on symbolic execution technique and its applications. https://sites.google.com/site/symexbib/.
[2]
CodePlex. http://www.codeplex.com/.
[3]
GitHub. https://github.com/.
[4]
Project website. https://sites.google.com/site/asergrp/projects/loopstudy.
[5]
P. Ammann and J. Offutt. Introduction to Software Testing. Cambridge University Press, 2008.
[6]
T. Ball, O. Kupferman, and M. Sagiv. Leaping loops in the presence of abstraction. In Proc. CAV, pages 491-503, 2007.
[7]
C. Barrett and C. Tinelli. CVC3. In Proc. CAV, pages 298-302, 2007.
[8]
B. Boigelot and P. Godefroid. Symbolic verification of communication protocols with infinite state spaces using qdds (extended abstract). In Proc. CAV, pages 1-12, 1996.
[9]
J. Caballero, P. Poosankam, S. McCamant, D. Babic, and D. Song. Input generation via decomposition and re-stitching: finding bugs in malware. In Proc. CCS, pages 413-425, 2010.
[10]
C. Cadar, D. Dunbar, and D. R. Engler. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In Proc. OSDI, pages 209-224, 2008.
[11]
C. Cadar, V. Ganesh, P. M. Pawlowski, D. L. Dill, and D. R. Engler. EXE: Automatically generating inputs of death. In Proc. CCS, pages 322-335, 2006.
[12]
A. Chaudhuri and J. S. Foster. Symbolic security analysis of Ruby-on-Rails web applications. In Proc. CCS, pages 585-594, 2010.
[13]
E. Clarke, D. Kroening, and F. Lerda. A tool for checking ANSI-C programs. In Proc. TACAS, pages 168-176, 2004.
[14]
L. M. de Moura and N. Bjørner. Z3: An efficient SMT solver. In Proc. TACAS, pages 337-340, 2008.
[15]
G. Fraser and A. Arcuri. EvoSuite: automatic test suite generation for object-oriented software. In Proc. ESEC/FSE, pages 416-419, 2011.
[16]
G. Fraser and A. Arcuri. Sound empirical evidence in software testing. In Proc. ICSE, pages 178-188, 2012.
[17]
P. Godefroid and J. Kinder. Proving memory safety of floating-point computations by combining static and dynamic program analysis. In Proc. ISSTA, pages 1-12, 2010.
[18]
P. Godefroid, N. Klarlund, and K. Sen. DART: Directed automated random testing. In Proc. PLDI, pages 213-223, 2005.
[19]
P. Godefroid, M. Y. Levin, and D. A. Molnar. Automated whitebox fuzz testing. In Proc. NDSS, 2008.
[20]
P. Godefroid and D. Luchaup. Automatic partial loop summarization in dynamic test generation. In Proc. ISSTA, pages 23-33, 2011.
[21]
P. Godefroid, A. V. Nori, S. K. Rajamani, and S. D. Tetali. Compositional may-must program analysis: unleashing the power of alternation. In Proc. POPL, pages 43-56, 2010.
[22]
Z. Gu, E. T. Barr, D. J. Hamilton, and Z. Su. Has the bug really been fixed? In Proc. ICSE, pages 55-64, 2010.
[23]
S. Gulwani. Dimensions in program synthesis. In Proc. PPDP, pages 13-24, 2010.
[24]
S. Gulwani, K. K. Mehra, and T. M. Chilimbi. SPEED: precise and efficient static estimation of program computational complexity. In Proc. POPL, pages 127-139, 2009.
[25]
K. Inkumsah and T. Xie. Improving structural testing of object-oriented programs via integrating evolutionary testing and symbolic execution. In Proc. ASE, pages 297-306, 2008.
[26]
M.-Y. Iu and W. Zwaenepoel. HadoopToSQL: a MapReduce query optimizer. In Proc. EuroSys, pages 251-264, 2010.
[27]
J. Jaffar, V. Murali, J. A. Navas, and A. E. Santosa. TRACER: A symbolic execution tool for verification. In Proc. CAV, pages 758-766, 2012.
[28]
J. Jaffar, J. Navas, and A. Santosa. Unbounded symbolic execution for program verification. In Proc. RV, pages 396-411, 2012.
[29]
J. Jaffar, A. Santosa, and R. Voicu. An interpolation method for CLP traversal. In Proc. CP, pages 454-469, 2009.
[30]
H. Jaygarl, S. Kim, T. Xie, and C. K. Chang. OCAT: object capture-based automated testing. In Proc. ISSTA, pages 159-170, 2010.
[31]
W. Jin and A. Orso. BugRedux: reproducing field failures for in-house debugging. In Proc. ICSE, pages 474-484, 2012.
[32]
M. Kim, Y. Kim, and G. Rothermel. A scalable distributed concolic testing approach: An empirical evaluation. In Proc. ICST, pages 340-349, 2012.
[33]
Y. Kim and M. Kim. SCORE: a scalable concolic testing tool for reliable embedded software. In Proc. ESEC/FSE, pages 420-423, 2011.
[34]
J. C. King. Symbolic execution and program testing. Commun. ACM, 19(7):385-394, 1976.
[35]
D. Kroening, A. Groce, and E. M. Clarke. Counterexample guided abstraction refinement via program execution. In Proc. ICFEM, pages 224-238, 2004.
[36]
K. Lakhotia, M. Harman, and P. McMinn. Handling dynamic data structures in search based testing. In Proc. GECCO, pages 1759-1766, 2008.
[37]
K. Lakhotia, P. McMinn, and M. Harman. An empirical investigation into branch coverage for C programs using CUTE and AUSTIN. J. Syst. Softw., 83(12):2379-2391, 2010.
[38]
N. Li, T. Xie, N. Tillmann, J. de Halleux, and W. Schulte. Reggae: Automated test generation for programs using complex regular expressions. In Proc. ASE, pages 515-519, 2009.
[39]
M. R. Marri, T. Xie, N. Tillmann, J. de Halleux, and W. Schulte. An empirical study of testing file-system-dependent software with mock objects. In Proc. AST, pages 149-153, 2009.
[40]
P. Saxena, P. Poosankam, S. McCamant, and D. Song. Loop-extended symbolic execution on binary programs. In Proc. ISSTA, pages 225-236, 2009.
[41]
K. Sen, D. Marinov, and G. Agha. CUTE: a concolic unit testing engine for C. In Proc. ESEC/FSE, pages 263-272, 2005.
[42]
J. Strejček and M. Trtík. Abstracting path conditions. In Proc. ISSTA, pages 155-165, 2012.
[43]
K. Taneja, T. Xie, N. Tillmann, and J. de Halleux. eXpress: Guided path exploration for efficient regression test generation. In Proc. ISSTA, pages 1-11, 2011.
[44]
K. Taneja, Y. Zhang, and T. Xie. MODA: Automated test generation for database applications via mock objects. In Proc. ASE, pages 289-292, 2010.
[45]
R. Tarjan. Testing flow graph reducibility. In Proc. STOC, pages 96-107, 1973.
[46]
S. Thummalapenta, T. Xie, N. Tillmann, J. de Halleux, and Z. Su. Synthesizing method sequences for high-coverage testing. In Proc. OOPSLA, pages 189-206, 2011.
[47]
S. Thummalapenta, T. Xie, N. Tillmann, P. de Halleux, and W. Schulte. MSeqGen: Object-oriented unit-test generation via mining source code. In Proc. ESEC/FSE, pages 193-202, 2009.
[48]
N. Tillmann and J. de Halleux. Pex-white box test generation for .NET. In Proc. TAP, pages 134-153, 2008.
[49]
R. Wang, P. Ning, T. Xie, and Q. Chen. MetaSymploit: Day-one defense against script-based attacks with security-enhanced symbolic analysis. In Proc. USENIX Security, 2013.
[50]
X. Xiao. Problem identification for structural test generation: first step towards cooperative developer testing. In Proc. ICSE, pages 1179-1181, 2011. SRC.
[51]
X. Xiao, T. Xie, N. Tillmann, and J. de Halleux. Covana: Precise identification of problems in Pex. In Proc. ICSE, pages 1004-1006, 2011. Demo.
[52]
X. Xiao, T. Xie, N. Tillmann, and J. de Halleux. Precise identification of problems for structural test generation. In Proc. ICSE, pages 611-620, 2011.
[53]
T. Xie, D. Marinov, W. Schulte, and D. Notkin. Symstra: A framework for generating object-oriented unit tests using symbolic execution. In Proc. TACAS, pages 365-381, 2005.
[54]
T. Xie, N. Tillmann, P. de Halleux, and W. Schulte. Fitness-guided path exploration in dynamic symbolic execution. In Proc. DSN, pages 359-368, 2009.

Cited By

View all
  • (2024)B4: Towards Optimal Assessment of Plausible Code Solutions with Plausible TestsProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695536(1693-1705)Online publication date: 27-Oct-2024
  • (2024)Sparse Symbolic Loop Execution (Registered Report)Proceedings of the 3rd ACM International Fuzzing Workshop10.1145/3678722.3685535(61-69)Online publication date: 13-Sep-2024
  • (2024)Software Testing With Large Language Models: Survey, Landscape, and VisionIEEE Transactions on Software Engineering10.1109/TSE.2024.336820850:4(911-936)Online publication date: 20-Feb-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ASE '13: Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering
November 2013
765 pages
ISBN:9781479902156
  • General Chair:
  • Ewen Denney,
  • Program Chairs:
  • Tevfik Bultan,
  • Andreas Zeller

Sponsors

Publisher

IEEE Press

Publication History

Published: 11 November 2013

Check for updates

Qualifiers

  • Article

Conference

ASE '13
Sponsor:
ASE '13: Automated Software Engineering
November 11 - 15, 2013
CA, Silicon Valley, USA

Acceptance Rates

Overall Acceptance Rate 82 of 337 submissions, 24%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 02 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)B4: Towards Optimal Assessment of Plausible Code Solutions with Plausible TestsProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695536(1693-1705)Online publication date: 27-Oct-2024
  • (2024)Sparse Symbolic Loop Execution (Registered Report)Proceedings of the 3rd ACM International Fuzzing Workshop10.1145/3678722.3685535(61-69)Online publication date: 13-Sep-2024
  • (2024)Software Testing With Large Language Models: Survey, Landscape, and VisionIEEE Transactions on Software Engineering10.1109/TSE.2024.336820850:4(911-936)Online publication date: 20-Feb-2024
  • (2023)Eunomia: Enabling User-Specified Fine-Grained Search in Symbolically Executing WebAssembly BinariesProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598064(385-397)Online publication date: 12-Jul-2023
  • (2023)Open Problems in Fuzzing RESTful APIs: A Comparison of ToolsACM Transactions on Software Engineering and Methodology10.1145/359720532:6(1-45)Online publication date: 30-Sep-2023
  • (2022)MeissaProceedings of the ACM SIGCOMM 2022 Conference10.1145/3544216.3544247(350-364)Online publication date: 22-Aug-2022
  • (2022)ProMalProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510037(1755-1767)Online publication date: 21-May-2022
  • (2019)Learning stateful preconditions modulo a test generatorProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314641(775-787)Online publication date: 8-Jun-2019
  • (2019)SLFProceedings of the 41st International Conference on Software Engineering10.1109/ICSE.2019.00080(712-723)Online publication date: 25-May-2019
  • (2018)Testing and validating end user programmed calculated fieldsProceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3236024.3275531(827-832)Online publication date: 26-Oct-2018
  • 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

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media