Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2950290.2983937acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

FSX: a tool for fine-grained incremental unit test generation for C/C++ programs

Published: 01 November 2016 Publication History

Abstract

Automated unit test generation bears the promise of significantly reducing test cost and hence improving software quality. However, the maintenance cost of the automatically generated tests presents a significant barrier to adoption of this technology. To address this challenge, in previous work, we proposed a novel technique for automated and fine-grained incremental generation of unit tests through minimal augmentation of an existing test suite. In this paper we describe a tool FSX, implementing this technique. We describe the architecture, user-interface, and salient features of FSX, and specific practical use-cases of its technology. We also report on a real, large-scale deployment of FSX, as a practical validation of the underlying research contribution and of automated test generation research in general.

References

[1]
CLANG, http://clang.llvm.org/.
[2]
CUDD: CU Decision Diagram Package, http://vlsi.colorado.edu/~fabio/CUDD/.
[3]
Free Software Foundation, Inc. How to Minimize Test Cases for Bugs, https://gcc.gnu.org/bugs/minimize.html.
[4]
googletest - Google C++ Testing Framework, http://code.google.com/p/googletest/.
[5]
How to submit an LLVM bug report, http://llvm.org/docs/HowToSubmitABug.html.
[6]
iPerf - The network bandwidth measurement tool, https://iperf.fr/.
[7]
LLVM, http://www.llvm.org/.
[8]
Mozilla Developer Network. Reducing testcases, https://developer.mozilla.org/en-US/docs/Mozilla/QA/ Reducing_testcases.
[9]
PIT Mutation Testing, http://pitest.org/.
[10]
Sinatra, http://www.sinatrarb.com/.
[11]
Webkit. Test Case Reduction, https://webkit.org/test-case-reduction/.
[12]
B. Beizer. Software Testing Techniques. John Wiley & Sons, Inc., New York, NY, USA, 1990.
[13]
R. E. Bryant. Symbolic boolean manipulation with ordered binary-decision diagrams. ACM Computing Surveys, 24(3):293–318, 1992.
[14]
C. Cadar, D. Dunbar, and D. R. Engler. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In 8th USENIX Symposium on Operating Systems Design and Implementation (OSDI), 2008.
[15]
C. Cadar, P. Godefroid, S. Khurshid, C. S. Păsăreanu, K. Sen, N. Tillmann, and W. Visser. Symbolic execution for software testing in practice: Preliminary assessment. In Proceedings of the 33rd International Conference on Software Engineering, ICSE ’11. ACM, 2011.
[16]
L. De Moura and N. Bjørner. Z3: An Efficient SMT Solver. In 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, TACAS/ETAPS’08. Springer-Verlag, 2008.
[17]
G. Fraser and A. Arcuri. EvoSuite: Automatic Test Suite Generation for Object-Oriented Software. In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering, 2011.
[18]
V. Ganesh and D. L. Dill. A decision procedure for bit-vectors and arrays. In Proceedings of the 19th International Conference on Computer Aided Verification, CAV’07. Springer-Verlag, 2007.
[19]
P. Godefroid, N. Klarlund, and K. Sen. DART: Directed Automated Random Testing. In PLDI, 2005.
[20]
P. Godefroid, M. Y. Levin, and D. A. Molnar. Automated whitebox fuzz testing. In Proceedings of the Network and Distributed System Security Symposium, NDSS, 2008.
[21]
J. B. Goodenough and S. L. Gerhart. Toward a Theory of Test Data Selection. IEEE Tran. on Software Engineering, 1975.
[22]
Y. Kim, Y. Kim, T. Kim, G. Lee, Y. Jang, and M. Kim. Automated unit testing of large industrial embedded software using concolic testing. In 28th International Conference on Automated Software Engineering (ASE), 2013.
[23]
Y. Kim, Z. Zu, M. Kim, M. Cohen, and G. Rothermel. Hybrid directed test suite augmentation: An interleaving framework. In 2014 IEEE International Conference on Software Testing, Verification and Validation (ICST), 2014.
[24]
G. Li, E. Andreasen, and I. Ghosh. SymJS: Automatic symbolic testing of javascript web applications. In 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2014. ACM, 2014.
[25]
G. Li, I. Ghosh, and S. P. Rajan. KLOVER : A symbolic execution and automatic test generation tool for C++ programs. In 23rd International Conference on Computer Aided Verification (CAV), pages 609–615, 2011.
[26]
P. McMinn. Search-based software test data generation: A survey: Research articles. Softw. Test. Verif. Reliab., 14(2), June 2004.
[27]
C. Nguyen, H. Yoshida, M. R. Prasad, I. Ghosh, and K. Sen. Generating succinct test cases using don’t care analysis. In Proc. of the 2015 IEEE 8th International Conference on Software Testing, Verification and Validation, ICST’15, 2015.
[28]
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. ACM, 2011.
[29]
C. S. Păsăreanu and W. Visser. A survey of new trends in symbolic execution for software testing and analysis. Int. J. Softw. Tools Technol. Transf., 11(4):339–353, Oct. 2009.
[30]
C. S. Pˇasˇareanu and N. Rungta. Symbolic PathFinder: symbolic execution of Java bytecode. In 25th Intl. Conf. on Automated Software Engineering (ASE), 2010.
[31]
R. Santelices, P. K. Chittimalli, T. Apiwattanapong, A. Orso, and M. J. Harrold. Test-suite augmentation for evolving software. In 23rd International Conference on Automated Software Engineering, ASE. IEEE, 2008.
[32]
K. Sen and G. Agha. CUTE and jCUTE: Concolic Unit Testing and Explicit Path Model-checking Tools. In Proc. of the 18th International Conference on Computer Aided Verification, CAV’06. Springer-Verlag, 2006.
[33]
K. Sen, D. Marinov, and G. Agha. CUTE: A Concolic Unit Testing Engine for C. In ESEC-FSE, 2005.
[34]
D. Song, D. Brumley, H. Yin, J. Caballero, I. Jager, M. G. Kang, Z. Liang, J. Newsome, P. Poosankam, and P. Saxena. Bitblaze: A new approach to computer security via binary analysis. In 4th International Conference on Information Systems Security, ICISS ’08. Springer-Verlag, 2008.
[35]
K. Taneja, T. Xie, N. Tillmann, and J. de Halleux. eXpress: Guided path exploration for efficient regression test generation. In 2011 International Symposium on Software Testing and Analysis, ISSTA ’11. ACM, 2011.
[36]
N. Tillmann and J. de Halleux. PEX – White Box Test Generation for .NET. In Tests and Proofs, 2008.
[37]
N. Tillmann and W. Schulte. Parameterized Unit Tests. In ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 253–262, 2005.
[38]
Z. Xu, Y. Kim, M. Kim, G. Rothermel, and M. B. Cohen. Directed test suite augmentation: Techniques and tradeoffs. In 18th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE ’10. ACM, 2010.
[39]
Z. Xu and G. Rothermel. Directed test suite augmentation. In 16th Asia-Pacific Software Engineering Conference, APSEC 2009, 2009.
[40]
G. Yang, C. S. Păsăreanu, and S. Khurshid. Memoized symbolic execution. In Proceedings of the 2012 International Symposium on Software Testing and Analysis, ISSTA 2012. ACM, 2012.
[41]
H. Yoshida, S. Tokumoto, M. R. Prasad, I. Ghosh, and T. Uehara. FSX: Fine-grained incremental unit test generation for C/C++ programs. In 2016 International Symposium on Software Testing and Analysis, ISSTA 2016, 2016.

Cited By

View all
  • (2023)State of Practical Applicability of Regression Testing Research: A Live Systematic Literature ReviewACM Computing Surveys10.1145/357985155:13s(1-36)Online publication date: 13-Jul-2023
  • (2020)Determining Method-Call Sequences for Object Creation in C++2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST)10.1109/ICST46399.2020.00021(108-119)Online publication date: Oct-2020

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
FSE 2016: Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering
November 2016
1156 pages
ISBN:9781450342186
DOI:10.1145/2950290
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 ACM 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: 01 November 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Automatic test generation
  2. symbolic execution
  3. unit testing

Qualifiers

  • Research-article

Conference

FSE'16
Sponsor:

Acceptance Rates

Overall Acceptance Rate 17 of 128 submissions, 13%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)5
  • Downloads (Last 6 weeks)2
Reflects downloads up to 13 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2023)State of Practical Applicability of Regression Testing Research: A Live Systematic Literature ReviewACM Computing Surveys10.1145/357985155:13s(1-36)Online publication date: 13-Jul-2023
  • (2020)Determining Method-Call Sequences for Object Creation in C++2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST)10.1109/ICST46399.2020.00021(108-119)Online publication date: Oct-2020

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