This paper presents a tutorial, with extensive exercises, in the use of Quviq QuickCheck—a property-based testing tool for Erlang, which enables developers to formulate formal specifications of their code and to use them for testing. We cover the basic concepts of properties and test-data generators, properties for testing abstract data types, and a state-machine modelling approach to testing stateful systems. Finally we discuss applications of QuickCheck in industry.


Software Test Test Failure Generate Test Case Abstract Data Type Empty List 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Arts, T., Hughes, J., Johansson, J., Wiger, U.: Testing telecoms software with quviq quickcheck. In: Feeley, M., Trinder, P.W. (eds.) Erlang Workshop, pp. 2–10. ACM, New York (2006)CrossRefGoogle Scholar
  2. 2.
    Boberg, J.: Early fault detection with model-based testing. In: ERLANG 2008: Proceedings of the 7th ACM SIGPLAN workshop on ERLANG, pp. 9–20. ACM, New York (2008)Google Scholar
  3. 3.
    Carlsson, R., Rémond, M.: Eunit: a lightweight unit testing framework for erlang. In: ERLANG 2006: Proceedings of the 2006 ACM SIGPLAN workshop on Erlang, pp. 1–1. ACM, New York (2006)Google Scholar
  4. 4.
    Claessen, K., Hughes, J.: Quickcheck: a lightweight tool for random testing of haskell programs. In: ICFP 2000: Proceedings of the fifth ACM SIGPLAN international conference on Functional programming, pp. 268–279. ACM Press, New York (2000)CrossRefGoogle Scholar
  5. 5.
    Claessen, K., Hughes, J.: Specification based testing with QuickCheck. In: The Fun of Programming, Cornerstones of Computing, pp. 17–40. Palgrave (2003)Google Scholar
  6. 6.
    Claessen, K., Hughes, J., Pałka, M., Smallbone, N., Svensson, H.: Ranking programs using black box testing. In: AST 2010: Proceedings of the 5th Workshop on Automation of Software Test, pp. 103–110. ACM, New York (2010)Google Scholar
  7. 7.
    Greene, N., Ramalho, M., Rosen, B.: Rfc-2805, media gateway control protocol architecture and requirements. Technical report, Network Working Group (2000)Google Scholar
  8. 8.
    Hildebrandt, R., Zeller, A.: Simplifying failure-inducing input. SIGSOFT Softw. Eng. Notes 25(5), 135–145 (2000)CrossRefGoogle Scholar
  9. 9.
    Hoare, C.A.R.: Proof of correctness of data representations. Acta Inf. 1, 271–281 (1972)CrossRefzbMATHGoogle Scholar
  10. 10.
    Hughes, J.: Quickcheck testing for fun and profit. In: Hanus, M. (ed.) PADL 2007. LNCS, vol. 4354, pp. 1–32. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  11. 11.
    Just, R., Schweiggert, F.: Automating software tests with partial oracles in integrated environments. In: AST 2010: Proceedings of the 5th Workshop on Automation of Software Test, pp. 91–94. ACM, New York (2010)Google Scholar
  12. 12.
    Müller, M.M., Hagner, O.: Experiment about test-first programming. IEE Proceedings - Software 149(5), 131–136 (2002)CrossRefGoogle Scholar
  13. 13.
    Wadler, P.: Comprehending monads. In: LISP and Functional Programming, pp. 61–78 (1990)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • John Hughes
    • 1
  1. 1.Chalmers University of Technology and Quviq ABGothenburgSweden

Personalised recommendations