[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1007/11531142_22guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Eclat: automatic generation and classification of test inputs

Published: 25 July 2005 Publication History

Abstract

This paper describes a technique that selects, from a large set of test inputs, a small subset likely to reveal faults in the software under test. The technique takes a program or software component, plus a set of correct executions — say, from observations of the software running properly, or from an existing test suite that a user wishes to enhance. The technique first infers an operational model of the software's operation. Then, inputs whose operational pattern of execution differs from the model in specific ways are suggestive of faults. These inputs are further reduced by selecting only one input per operational pattern. The result is a small portion of the original inputs, deemed by the technique as most likely to reveal faults. Thus, the technique can also be seen as an error-detection technique.
The paper describes two additional techniques that complement test input selection. One is a technique for automatically producing an oracle (a set of assertions) for a test input from the operational model, thus transforming the test input into a test case. The other is a classification-guided test input generation technique that also makes use of operational models and patterns. When generating inputs, it filters out code sequences that are unlikely to contribute to legal inputs, improving the efficiency of its search for fault-revealing inputs.
We have implemented these techniques in the Eclat tool, which generates unit tests for Java classes. Eclat's input is a set of classes to test and an example program execution—say, a passing test suite. Eclat's output is a set of JUnit test cases, each containing a potentially fault-revealing input and a set of assertions at least one of which fails. In our experiments, Eclat successfully generated inputs that exposed fault-revealing behavior; we have used Eclat to reveal real errors in programs. The inputs it selects as fault-revealing are an order of magnitude as likely to reveal a fault as all generated inputs.

References

[1]
G. Ammons, R. Bodík, and J. R. Larus. Mining specifications. In Proceedings of the 29th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 4-16, Portland, Oregon, Jan. 16-18, 2002.
[2]
M. J. Balcer, W. M. Hasling, and T. J. Ostrand. Automatic generation of test scripts from formal test specifications. In Proceedings of the ACM SIGSOFT '89 Third Symposium on Testing, Analysis, and Verification (TAV3), pages 210-218, Dec. 1989.
[3]
J. F. Bowring, J. M. Rehg, and M. J. Harrold. Active learning for automatic classification of software behavior. In ISSTA 2004, Proceedings of the 2004 International Symposium on Software Testing and Analysis, pages 195-205, Boston, MA, USA, July 12-14, 2004.
[4]
C. Boyapati, S. Khurshid, and D. Marinov. Korat: Automated testing based on Java predicates. In ISSTA 2002, Proceedings of the 2002 International Symposium on Software Testing and Analysis, pages 123-133, Rome, Italy, July 22-24, 2002.
[5]
Y. Brun and M. D. Ernst. Finding latent code errors via machine learning over program executions. In ICSE'04, Proceedings of the 26th International Conference on Software Engineering, pages 480-490, Edinburgh, Scotland, May 26-28, 2004.
[6]
L. Burdy, Y. Cheon, D. Cok, M. D. Ernst, J. Kiniry, G. T. Leavens, K. R. M. Leino, and E. Poll. An overview of JML tools and applications. In Eighth International Workshop on Formal Methods for Industrial Critical Systems (FMICS 03), Trondheim, Norway, June 5- 7, 2003.
[7]
J. Chang and D. J. Richardson. Structural specification-based testing: Automated support and experimental evaluation. In Proceedings of the 7th European Software Engineering Conference and the 7th ACM SIGSOFT Symposium on the Foundations of Software Engineering, pages 285-302, Toulouse, France, Sept. 6-9, 1999.
[8]
K. Claessen and J. Hughes. QuickCheck: A lightweight tool for random testing of Haskell programs. In ICFP '00, Proceedings of the fifth ACM SIGPLAN International Conference on Functional Programming, pages 268-279, Montreal, Canada, Sept. 18-20, 2000.
[9]
C. Csallner and Y. Smaragdakis. JCrasher: an automatic robustness tester for Java. Software: Practice and Experience, 34(11):1025-1117, Sept. 2004.
[10]
J. W. Duran and S. C. Ntafos. An evaluation of random testing. IEEE Transactions on Software Engineering, 10(4):438-444, July 1984.
[11]
M. D. Ernst, J. Cockrell, W. G. Griswold, and D. Notkin. Dynamically discovering likely program invariants to support program evolution. IEEE Transactions on Software Engineering, 27(2):1-25, Feb. 2001. A previous version appeared in ICSE '99, Proceedings of the 21st International Conference on Software Engineering, pages 213-224, Los Angeles, CA, USA, May 19-21, 1999.
[12]
Foundations of Software Engineering group, Microsoft Research. Documentation for AsmL 2, 2003. http://research.microsoft.com/fse/asml.
[13]
D. Hamlet and R. Taylor. Partition testing does not inspire confidence. IEEE Transactions on Software Engineering, 16(12):1402-1411, Dec. 1990.
[14]
S. Hangal and M. S. Lam. Tracking down software bugs using automatic anomaly detection. In ICSE'02, Proceedings of the 24th International Conference on Software Engineering, pages 291-301, Orlando, Florida, May 22-24, 2002.
[15]
M. Harder, J. Mellen, and M. D. Ernst. Improving test suites via operational abstraction. In ICSE'03, Proceedings of the 25th International Conference on Software Engineering, pages 60-71, Portland, Oregon, May 6-8, 2003.
[16]
J. Henkel and A. Diwan. Discovering algebraic specifications from Java classes. In ECOOP 2003--Object-Oriented Programming, 17th European Conference, pages 431-456, Darmstadt, Germany, July 23-25, 2003.
[17]
B. Korel. Automated test data generation for programs with procedures. In Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis, pages 209-215. ACM Press, 1996.
[18]
T. J. Ostrand and M. J. Balcer. The category-partition method for specifying and generating functional tests. Communications of the ACM, 31(6):676-686, June 1988.
[19]
Parasoft Corporation. Jtest version 4.5. http://www.parasoft.com/.
[20]
A. Podgurski, D. Leon, P. Francis, W. Masri, M. Minch, J. Sun, and B. Wang. Automated support for classifying software failure reports. In ICSE'03, Proceedings of the 25th International Conference on Software Engineering, pages 465-475, Portland, Oregon, May 6-8, 2003.
[21]
G. Salton. Automatic Information Organization and Retrieval. McGraw-Hill, 1968.
[22]
D. Stotts, M. Lindsey, and A. Antley. An informal formal method for systematic JUnit test case generation. In Proceedings of 2nd XP Universe and 1st Agile Universe Conference (XP/Agile Universe), pages 131-143, Chicago, IL, USA, Aug. 4-7, 2002.
[23]
N. Tracey, J. Clark, K. Mander, and J. McDermid. An automated framework for structural test-data generation. In Proceedings of the 13th Annual International Conference on Automated Software Engineering (ASE'98), pages 285-288, Honolulu, Hawaii, Oct. 14-16, 1998.
[24]
C. J. van Rijsbergen. Information Retrieval. Butterworths, London, second edition, 1979.
[25]
M. A. Weiss. Data Structures and Algorithm Analysis in Java. Addison Wesley Longman, 1999.
[26]
J. Whaley, M. Martin, and M. Lam. Automatic extraction of object-oriented component interfaces. In ISSTA 2002, Proceedings of the 2002 International Symposium on Software Testing and Analysis, pages 218-228, Rome, Italy, July 22-24, 2002.
[27]
T. Xie. Personal communication, Aug. 2003.
[28]
T. Xie, D. Marinov, and D. Notkin. Rostra: A framework for detecting redundant object-oriented unit tests. In ASE 2004: Proceedings of the 20th Annual International Conference on Automated Software Engineering, pages 196-205, Linz, Australia, Nov. 9-11, 2004.
[29]
T. Xie, D. Marinov, W. Schulte, and D. Notkin. Symstra: A framework for generating object-oriented unit tests using symbolic execution. In Tools and Algorithms for the Construction and Analysis of Systems (TACAS), pages 365-381, Edinburgh, UK, Apr. 4-8, 2005.
[30]
T. Xie and D. Notkin. Tool-assisted unit test selection based on operational violations. In ASE 2003: Proceedings of the 18th Annual International Conference on Automated Software Engineering, pages 40-48, Montreal, Canada, Oct. 8-10, 2003.

Cited By

View all
  • (2024)Deep Multiple Assertions GenerationProceedings of the 2024 IEEE/ACM First International Conference on AI Foundation Models and Software Engineering10.1145/3650105.3652293(1-11)Online publication date: 14-Apr-2024
  • (2023)Can large language models reason about program invariants?Proceedings of the 40th International Conference on Machine Learning10.5555/3618408.3619552(27496-27520)Online publication date: 23-Jul-2023
  • (2022)Perfect is the enemy of test oracleProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3549086(70-81)Online publication date: 7-Nov-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Guide Proceedings
ECOOP'05: Proceedings of the 19th European conference on Object-Oriented Programming
July 2005
630 pages
ISBN:354027992X
  • Editor:
  • Andrew P. Black

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 25 July 2005

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 12 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Deep Multiple Assertions GenerationProceedings of the 2024 IEEE/ACM First International Conference on AI Foundation Models and Software Engineering10.1145/3650105.3652293(1-11)Online publication date: 14-Apr-2024
  • (2023)Can large language models reason about program invariants?Proceedings of the 40th International Conference on Machine Learning10.5555/3618408.3619552(27496-27520)Online publication date: 23-Jul-2023
  • (2022)Perfect is the enemy of test oracleProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3549086(70-81)Online publication date: 7-Nov-2022
  • (2022)Inferring data model from service interactions for response generation in service virtualizationInformation and Software Technology10.1016/j.infsof.2021.106803145:COnline publication date: 1-May-2022
  • (2021)Automatic Unit Test Generation for Machine Learning LibrariesProceedings of the 43rd International Conference on Software Engineering10.1109/ICSE43902.2021.00138(1548-1560)Online publication date: 22-May-2021
  • (2019)Developing and Evaluating Objective Termination Criteria for Random TestingACM Transactions on Software Engineering and Methodology10.1145/333983628:3(1-52)Online publication date: 18-Jul-2019
  • (2018)Which generated test failures are fault revealing? prioritizing failures based on inferred precondition violations using PAFProceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3236024.3236058(679-690)Online publication date: 26-Oct-2018
  • (2018)Translating code comments to procedure specificationsProceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3213846.3213872(242-253)Online publication date: 12-Jul-2018
  • (2018)Modeling time in Java programs for automatic error detectionProceedings of the 6th Conference on Formal Methods in Software Engineering10.1145/3193992.3193997(50-59)Online publication date: 2-Jun-2018
  • (2018)Automatic verification of time behavior of programsProceedings of the 40th International Conference on Software Engineering: Companion Proceeedings10.1145/3183440.3183443(468-471)Online publication date: 27-May-2018
  • Show More Cited By

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media