Abstract
Software testing is a labor-intensive, and hence expensive, yet heavily used technique to control quality. In this paper we introduce Gast, a fully automatic test tool. Properties about functions and datatypes can be expressed in first order logic. Gast automatically and systematically generates appropriate test data, evaluates the property for these values, and analyzes the test results. This makes it easier and cheaper to test software components. The distinguishing property of our system is that the test data are generated in a systematic and generic way using generic programming techniques. This implies that there is no need for the user to indicate how data should be generated. Moreover, duplicated tests are avoided, and for finite domains Gast is able to prove a property by testing it for all possible values. As an important side-effect, it also encourages stating formal properties of the software.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
A. Alimarine and R. Plasmeijer A Generic Programming Extension for Clean. IFL2001, LNCS 2312, pp.168–185, 2001.
G. Bernot, M.C. Gaudel, B. Marre: Software Testing based on Formal Specifications: a theory and a tool, Software Engineering Journal, 6(6), pp 287–405, 1991.
K. Claessen, J. Hughes. QuickCheck: A lightweight Tool for Random Testing of Hasskell Programs. International Conference on Functional Programming, ACM, pp 268–279, 2000. See also http://www.cs.chalmers.se/~rjmh/QuickCheck.
K. Claessen, J. Hughes. Testing Monadic Code with QuickCheck, Haskell Workshop, 2002.
M. van Eekelen, M. de Mol: Reasoning about explicit strictness in a lazy language using mixed lazy/strict semantics, Draft proceedings IFL2002, Report 127-02, Computer Science, Universidad Complutense de Madrid, pp 357–373, 2002.
R. Hinze and J. Jeuring. Generic Haskell: Practice and Theory, Summer School on Generic Programming, 2002.
R. Hinze, and S. Peyton Jones Derivable Type Classes, Proceedings of the Fourth Haskell Workshop, Montreal Canada, 2000.
Hinze, R. Polytypic values possess polykinded types, Fifth International Conference on Mathematics of Program Construction, LNCS 1837, pp 2–27, 2000.
HUnit home page: hunit.sourceforge.net
S. Peyton Jones, J. Hughes: Report on the programming language Haskell 98 — A Non-strict, Purely Functional Language, 2002 http://www.haskell.org/onlinereport.
JUint home page: junit.sourceforge.net
M. de Mol, M. van Eekelen, R. Plasmeijer. Theorem Proving for Functional Programmers, LNCS 2312, pp 55–72, 2001. See also http://www.cs.kun.nl/Sparkle.
Graeme E. Moss and Colin Runciman. Inductive benchmarking for purely functional data structures, Journal of Functional Programming, 11(5): pp 525–556, 2001. Auburn home page: http://www.cs.york.ac.uk/fp/auburn
Rinus Plasmeijer and Marko van Eekelen: Concurrent Clean Language Report (version 2.0), 2002. http://www.cs.kun.nl/~clean.
Maurice Siteur: Testing with tools-Sleep while you are working. See also http://www.siteur.myweb.nl.
J. Tretmans, K. Wijbrans, M. Chaudron: Software Engineering with Formal Methods: The development of a storm surge barrier control system-revisiting seven myths of formal methods, Formal Methods in System Design, 19(2), 195–215, 2001.
D. Lee, and M. Yannakakis, M Principles and Methods for Testing Finite State Machines — A Survey, The Proceedings of the IEEE, 84(8), pp 1090–1123, 1996.
L. Feijs, F. Meijs, J. Moonen, J. Wamel Conformance Testing of a Multimedia System Using PHACT in Workshop on Testing of Communicating Systems 11 pp 193–210, 1998.
E. Brinksma, J. Tretmans Testing Transition Systems: An Annotated Bibliography”, in Modeling and Verification of Parallel Processes-4 th Summer School MOVEP 2000 LNCS 2067, pp 186–195, 2001.
J. Fernandez, C. Jard, T. Jéron, C. Viho Using On-the-Fly Verification Techniques for the generation of test suites, LNCS 1102, 1996.
A. Kerbrat, T. Jéron, R. Groz Automated Test Generation from SDL Specifications, in The Next Millennium-Proceedings of the 9 th SDL Forum, pp 135–152, 1999.
J. He, K. Turner Protocol-Inspired Hardware Testing, in Int. Workshop on Testing of Communicating Systems 12 pp 131–147, 1999.
A. Belinfante, J. Feenstra, R. Vries, J. Tretmans, N. Goga, L. Feijs, S. Mauw, L. Heerink Formal Test Automation: A Simple Experiment, in Int. Workshop on Testing of Communicating Systems 12 pp 179–196, 1999.
J. Tretmans, E. Brinksma Côte de Resyste — Automated Model Based Testing, in Progress 2002 — 3rd Workshop on Embedded Systems, pp 246–255, 2002.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Koopman, P., Alimarine, A., Tretmans, J., Plasmeijer, R. (2003). Gast: Generic Automated Software Testing. In: Peña, R., Arts, T. (eds) Implementation of Functional Languages. IFL 2002. Lecture Notes in Computer Science, vol 2670. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44854-3_6
Download citation
DOI: https://doi.org/10.1007/3-540-44854-3_6
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40190-2
Online ISBN: 978-3-540-44854-9
eBook Packages: Springer Book Archive