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

FortressCheck: automatic testing for generic properties

Published: 21 March 2011 Publication History

Abstract

QuickCheck is a random testing library designed for the purely functional programming language Haskell. Its main features include a descriptive yet embedded domain-specific testing language, a variety of test generators including a generator for functions, and a set of operations for monitoring generated inputs. QuickCheck is limited to ad-hoc testing, compared to more systematic testing methods such as full coverage testing. However, experiences showed that well-factored functions and properties make the QuickCheck approach as effective as systematic testing while maintaining its conciseness. QuickCheck and its variants are now available in dozens of programming languages.
We present a version of QuickCheck for the Fortress programming language in this paper. Fortress is an object-oriented language with extensive support for functional programming, with the strong emphasis on high-performance computing, parallelism by default, and growability of the language. While the main features of QuickCheck are straight-forward to implement, we are extending them to support unique features of Fortress and to support seamless integration to Fortress. We observed that the prevalent uses of implicit parallelism in Fortress call for testing parallel language constructs especially those using side effects. Also, because Fortress provides both subtype polymorphism and parametric polymorphism unlike Haskell, testing both polymorphic properties becomes interesting. We propose FortressCheck to test implicit parallelism and to test parametric polymorphism via reflection, by generating first-class type objects and using QuickCheck's own implication checking as a safety mechanism.

References

[1]
QuickCheck++. http://software.legiasoft.com/quickcheck/.
[2]
QuickCheck --- Wikipedia, The Free Encyclopedia. http://en.wikipedia.org/w/index.php?title=QuickCheck.
[3]
E. Allen, D. Chase, J. Hallett, V. Luchangco, J.-W. Maessen, S. Ryu, G. L. Steele Jr., and S. Tobin-Hochstadt. The Fortress Language Specification Version 1.0 β, March 2007.
[4]
E. Allen, D. Chase, J. Hallett, V. Luchangco, J.-W. Maessen, S. Ryu, G. L. Steele Jr., and S. Tobin-Hochstadt. The Fortress Language Specification Version 1.0, March 2008.
[5]
E. Allen, R. Culpepper, J. D. Nielsen, J. Rafkind, and S. Ryu. Growing a syntax. In Foundations of Object-Oriented Languages, 2009, Jan. 2009.
[6]
D. Bravender. qc: A Quickcheck implementation for Python. http://github.com/dbravender/qc.
[7]
K. Claessen and J. Hughes. QuickCheck: An Automatic Testing Tool for Haskell. http://www.cse.chalmers.se/~rjmh/QuickCheck/.
[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, New York, NY, USA, 2000. ACM.
[9]
K. Claessen, M. Palka, N. Smallbone, J. Hughes, H. Svensson, T. Arts, and U. Wiger. Finding race conditions in Erlang with QuickCheck and PULSE. In ICFP '09: Proceedings of the 14th ACM SIGPLAN international conference on Functional programming, pages 149--160, New York, NY, USA, 2009. ACM.
[10]
C. Csallner and Y. Smaragdakis. Jcrasher: an automatic robustness tester for java. Softw. Pract. Exper., 34(11): 1025--1050, 2004.
[11]
P. Godefroid, N. Klarlund, and K. Sen. DART: directed automated random testing. SIGPLAN Not., 40(6): 213--223, 2005.
[12]
J. Hughes. personal communication, Nov. 2010.
[13]
D. Ikegami. RushCheck: a lightweight random testing tool for Ruby. http://rushcheck.rubyforge.org/.
[14]
T. Jung. quickcheck: Java implementation of QuickCheck. https://quickcheck.dev.java.net/.
[15]
R. Nilsson. ScalaCheck. http://code.google.com/p/scalacheck/.
[16]
C. Pacheco, S. K. Lahiri, M. D. Ernst, and T. Ball. Feedback-directed random test generation. In ICSE '07: Proceedings of the 29th international conference on Software Engineering, pages 75--84, Washington, DC, USA, 2007. IEEE Computer Society.
[17]
C. E. Scheidegger. Scheme-Check: Randomized Unit Testing for PLT Scheme. http://www.inf.ufrgs.br/~carlossch/scheme-check/. Currently only available via Wayback Machine: http://web.archive.org/web/20050212183945/www.inf.ufrgs.br/~carlossch/scheme-check/.
[18]
K. Schelfthout. FsCheck: A random testing framework. http://fscheck.codeplex.com/.
[19]
K. Sen, D. Marinov, and G. Agha. CUTE: a concolic unit testing engine for C. In ESEC/FSE-13: Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering, pages 263--272, New York, NY, USA, 2005. ACM.

Index Terms

  1. FortressCheck: automatic testing for generic properties

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    SAC '11: Proceedings of the 2011 ACM Symposium on Applied Computing
    March 2011
    1868 pages
    ISBN:9781450301138
    DOI:10.1145/1982185
    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: 21 March 2011

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Fortress
    2. QuickCheck
    3. automatic testing

    Qualifiers

    • Research-article

    Funding Sources

    Conference

    SAC'11
    Sponsor:
    SAC'11: The 2011 ACM Symposium on Applied Computing
    March 21 - 24, 2011
    TaiChung, Taiwan

    Acceptance Rates

    Overall Acceptance Rate 1,650 of 6,669 submissions, 25%

    Upcoming Conference

    SAC '25
    The 40th ACM/SIGAPP Symposium on Applied Computing
    March 31 - April 4, 2025
    Catania , Italy

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

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

    Other Metrics

    Citations

    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