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

Target-driven compositional concolic testing with function summary refinement for effective bug detection

Published:12 August 2019Publication History

ABSTRACT

Concolic testing is popular in unit testing because it can detect bugs quickly in a relatively small search space. But, in system-level testing, it suffers from the symbolic path explosion and often misses bugs. To resolve this problem, we have developed a focused compositional concolic testing technique, FOCAL, for effective bug detection. Focusing on a target unit failure v (a crash or an assert violation) detected by concolic unit testing, FOCAL generates a system-level test input that validates v. This test input is obtained by building and solving symbolic path formulas that represent system-level executions raising v. FOCAL builds such formulas by combining function summaries one by one backward from a function that raised v to main. If a function summary φa of function a conflicts with the summaries of the other functions, FOCAL refines φa to φa′ by applying a refining constraint learned from the conflict. FOCAL showed high system-level bug detection ability by detecting 71 out of the 100 real-world target bugs in the SIR benchmark, while other relevant cutting edge techniques (i.e., AFL-fast, KATCH, Mix-CCBSE) detected at most 40 bugs. Also, FOCAL detected 13 new crash bugs in popular file parsing programs.

References

  1. Leonardo Alt, Sepideh Asadi, Hana Chockler, Karine Even Mendoza, Grigory Fedyukovich, Antti E. J. Hyvärinen, and Natasha Sharygina. 2017. HiFrog: SMTbased Function Summarization for Software Verification. In Tools and Algorithms for the Construction and Analysis of Systems, Axel Legay and Tiziana Margaria (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 207–213. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Sepideh Asadi, Martin Blicha, Grigory Fedyukovich, Antti Hyv\"arinen, Karine Even-Mendoza, Natasha Sharygina, and Hana Chockler. 2018.Google ScholarGoogle Scholar
  3. Function Summarization Modulo Theories. In LPAR-22. 22nd International Conference on Logic for Programming, Artificial Intelligence and Reasoning (EPiC Series in Computing), Gilles Barthe, Geoff Sutcliffe, and Margus Veanes (Eds.), Vol. 57. EasyChair, 56–75.Google ScholarGoogle Scholar
  4. Nels E. Beckman, Aditya V. Nori, Sriram K. Rajamani, and Robert J. Simmons. 2008.Google ScholarGoogle Scholar
  5. Proofs from Tests. In Proceedings of the 2008 International Symposium on Software Testing and Analysis (ISSTA ’08). ACM, New York, NY, USA, 3–14.Google ScholarGoogle Scholar
  6. Marcel Böhme, Van-Thuan Pham, and Abhik Roychoudhury. 2016. Coveragebased Greybox Fuzzing As Markov Chain. In Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS ’16). ACM, New York, NY, USA, 1032–1043. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Tim Bray. 2017. The JavaScript Object Notation ( JSON) Data Interchange Format. RFC 8259.Google ScholarGoogle Scholar
  8. Jacob Burnim and Koushik Sen. 2008.Google ScholarGoogle Scholar
  9. Heuristics for Scalable Dynamic Test Generation. In Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering (ASE ’08). IEEE Computer Society, Washington, DC, USA, 443–446. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Arindam Chakrabarti and Patrice Godefroid. 2006. Software Partitioning for Effective Automated Unit Testing. In Proceedings of the 6th International Conference on Embedded Software (EMSOFT ’06). ACM, New York, NY, USA, 262–271. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. William Craig. 1957. Three Uses of the Herbrand-Gentzen Theorem in Relating Model Theory and Proof Theory. The Journal of Symbolic Logic 22, 3 (1957), 269–285. http://www.jstor.org/stable/2963594Google ScholarGoogle ScholarCross RefCross Ref
  12. Leonardo De Moura and Nikolaj Bjørner. 2008.Google ScholarGoogle Scholar
  13. Peter Dinges and Gul Agha. 2014. Targeted Test Input Generation Using Symbolicconcrete Backward Execution. In Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering (ASE ’14). ACM, New York, NY, USA, 31–36. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Hyunsook Do, Sebastian Elbaum, and Gregg Rothermel. 2005. Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and Its Potential Impact. Empirical Software Engineering 10, 4 (Oct. 2005), 405–435. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Gordon Fraser and Andrea Arcuri. 2013. 1600 Faults in 100 Projects: Automatically Finding Faults While Achieving High Coverage with EvoSuite. Empirical Software Engineering 20, 3 (2013), 611–639. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Patrice Godefroid. 2007. Compositional Dynamic Test Generation. In Proceedings of the 34th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’07). ACM, New York, NY, USA, 47–54. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Patrice Godefroid, Nils Klarlund, and Koushik Sen. 2005. DART: Directed Automated Random Testing. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’05). ACM, New York, NY, USA, 213–223. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Patrice Godefroid, Aditya V. Nori, Sriram K. Rajamani, and Sai Deep Tetali. 2010.Google ScholarGoogle Scholar
  19. Compositional May-must Program Analysis: Unleashing the Power of Alternation. In Proceedings of the 37th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’10). ACM, New York, NY, USA, 43–56. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Florian Gross, Gordon Fraser, and Andreas Zeller. 2012. Search-Based System Testing: High Coverage, No False Alarms. In Proceedings of the 2012 International Symposium on Software Testing and Analysis (ISSTA ’12). ACM, New York, NY, USA, 67–77. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Shin Hong, Taehoon Kwak, Byeongcheol Lee, Yiru Jeon, Bongseok Ko, Yunho Kim, and Moonzoo Kim. 2017. MUSEUM: Debugging real-world multilingual programs using mutation analysis. Information and Software Technology 82 (2017), 80 – 95.Google ScholarGoogle ScholarCross RefCross Ref
  22. Joxan Jaffar, Vijayaraghavan Murali, and Jorge A. Navas. 2013. Boosting Concolic Testing via Interpolation. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2013). ACM, New York, NY, USA, 48–58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Wei Jin and Alessandro Orso. 2012. BugRedux: Reproducing Field Failures for Inhouse Debugging. In Proceedings of the 34th International Conference on Software Engineering (ICSE ’12). IEEE Press, Piscataway, NJ, USA, 474–484. http://dl.acm. org/citation.cfm?id=2337223.2337279 Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Moonzoo Kim, Yunho Kim, and Yunja Choi. 2012. Concolic testing of the multisector read operation for flash storage platform software. Formal Aspects of Computing 24, 3 (01 May 2012), 355–374. 011- 0200- 9Google ScholarGoogle Scholar
  25. M. Kim, Y. Kim, and H. Kim. 2011.Google ScholarGoogle Scholar
  26. Comparative Study on Software Model Checkers as Unit Testing Tools: An Industrial Case Study. IEEE Transactions on Software Engineering (TSE) 37, 2 (March 2011), 146–160. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Yunho Kim, Yunja Choi, and Moonzoo Kim. 2018. Precise Concolic Unit Testing of C Programs Using Extended Units and Symbolic Alarm Filtering. In Proceedings of the 40th International Conference on Software Engineering (ICSE ’18). ACM, New York, NY, USA, 315–326. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Yunho Kim, Shin Hong, Bongseok Ko, Duy Loc Phan, and Moonzoo Kim. 2018. Invasive Software Testing: Mutating Target Programs to Diversify Test Exploration for High Test Coverage. In 2018 IEEE 11th International Conference on Software Testing, Verification and Validation.Google ScholarGoogle ScholarCross RefCross Ref
  29. Yunho Kim and Moonzoo Kim. {n.d.}. CROWN: Concolic testing for Real-wOrld softWare aNalysis. http://github.com/swtvkaist/CROWN Accessed: 2019-06-29.Google ScholarGoogle Scholar
  30. Yunho Kim, Youil Kim, Taeksu Kim, Gunwoo Lee, Yoonkyu Jang, and Moonzoo Kim. 2013. Automated Unit Testing of Large Industrial Embedded Software Using Concolic Testing. In Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering (ASE’13). IEEE Press, Piscataway, NJ, USA, 519–528. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Yunho Kim, Dongju Lee, Junki Baek, and Moonzoo Kim. 2019. Concolic Testing for High Test Coverage and Reduced Human Effort in Automotive Industry. In International Conference on Software Engineering (ICSE) Software Engineering In Practice (SEIP) track. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Chris Lattner and Vikram Adve. 2004.Google ScholarGoogle Scholar
  33. Kin-Keung Ma, Khoo Yit Phang, Jeffrey S. Foster, and Michael Hicks. 2011.Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Directed Symbolic Execution. In Proceedings of the 18th International Conference on Static Analysis (SAS’11). Springer-Verlag, Berlin, Heidelberg, 95–111. http://dl.acm.org/citation.cfm?id=2041552.2041563 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Paul Dan Marinescu and Cristian Cadar. 2013. KATCH: High-coverage Testing of Software Patches. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2013). ACM, New York, NY, USA, 235–245. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Seokhyeon Moon, Yunho Kim, Moonzoo Kim, and Shin Yoo. 2014.Google ScholarGoogle Scholar
  37. Ask the Mutants: Mutating Faulty Programs for Fault Localization. In Proceedings of the 2014 IEEE International Conference on Software Testing, Verification, and Validation (ICST ’14). IEEE Computer Society, Washington, DC, USA, 153–162. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Van-Thuan Pham, Wei Boon Ng, Konstantin Rubinov, and Abhik Roychoudhury. 2015.Google ScholarGoogle Scholar
  39. Hercules: Reproducing Crashes in Real-world Application Binaries. In Proceedings of the 37th International Conference on Software Engineering - Volume 1 (ICSE ’15). IEEE Press, Piscataway, NJ, USA, 891–901. http://dl.acm.org/citation. cfm?id=2818754.2818862 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Rui Qiu, Guowei Yang, Corina S. Păsăreanu, and Sarfraz Khurshid. 2015. Compositional Symbolic Execution with Memoized Replay. In Proceedings of the 37th International Conference on Software Engineering - Volume 1 (ICSE ’15). IEEE Press, Piscataway, NJ, USA, 632–642. http://dl.acm.org/citation.cfm?id=2818754.2818832 Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Koushik Sen, Darko Marinov, and Gul Agha. 2005. CUTE: A Concolic Unit Testing Engine for C. In Proceedings of the 10th European Software Engineering Conference Held Jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE-13). ACM, New York, NY, USA, 263–272. Google ScholarGoogle ScholarCross RefCross Ref
  42. Ondrej Sery, Grigory Fedyukovich, and Natasha Sharygina. 2011. Interpolation-Based Function Summaries in Bounded Model Checking. In Hardware and Software: Verification and Testing, Kerstin Eder, João Lourenço, and Onn Shehory (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 160–175. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Sina Shamshiri, Rene Just, Jose Miguel Rojas, Gordon Fraser, Phil McMinn, and Andrea Arcuri. 2015. Do Automatically Generated Unit Tests Find Real Faults? An Empirical Study of Effectiveness and Challenges (T). In Proceedings of the 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE) (ASE ’15). IEEE Computer Society, Washington, DC, USA, 201–211.Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Nishant Sinha, Nimit Singhania, Satish Chandra, and Manu Sridharan. 2012.Google ScholarGoogle Scholar
  45. Alternate and Learn: Finding Witnesses without Looking All over. In Computer Aided Verification, P. Madhusudan and Sanjit A. Seshia (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 599–615. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Nikolai Tillmann and Jonathan De Halleux. 2008. Pex: White Box Test Generation for .NET. In Proceedings of the 2Nd International Conference on Tests and Proofs (TAP’08). Springer-Verlag, Berlin, Heidelberg, 134–153. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Target-driven compositional concolic testing with function summary refinement for effective bug detection

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      ESEC/FSE 2019: Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
      August 2019
      1264 pages
      ISBN:9781450355728
      DOI:10.1145/3338906

      Copyright © 2019 ACM

      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].

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 12 August 2019

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate112of543submissions,21%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader