Testing with Functions as Specifications

In this paper we show that mathematical functions and logi- cal expressions can very well be used as, partial, specications. Reactive systems can be modelled by powerful extended state transition systems, that can be nondeterministic and can handle parameterized and in- nite types for the inputs, outputs and states. These specications can very concisely and directly be stated in a modern functional program- ming language. The test tool Gast is able to generate test data based on these specications, execute the associated tests, and make a verdict fully automatically. Test data can be generated fully automatically, but can also be tailored in various high level ways, if that is desired. Advantages of this approach are that one species properties instead of instances of these properties, test data are automatically derived instead of manually, the tests performed are always up to date with the current specication, and testing is automatic (and hence fast and accurate).

[1]  MillerTim,et al.  A framework and tool support for the systematic testing of model-based specifications , 2003 .

[2]  Marinus J. Plasmeijer,et al.  Testing reactive systems with GAST , 2003, Trends in Functional Programming.

[3]  David Lee,et al.  Principles and methods of testing finite state machines-a survey , 1996, Proc. IEEE.

[4]  Jan Tretmans,et al.  On-the-Fly Formal Testing of a Smart Card Applet , 2004 .

[5]  Manuel Núñez,et al.  Encoding PAMR into (Timed) EFSMs , 2002, FORTE.

[6]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP.

[7]  David A. Wagner,et al.  Model Checking One Million Lines of C Code , 2004, NDSS.

[8]  Rinus Plasmeijer,et al.  Concurrent Clean Language Report - version 1.3 , 1998 .

[9]  Marinus J. Plasmeijer,et al.  Theorem Proving for functional Programmers - Sparkle: A Functional Theorem Prover , 2001 .

[10]  Richard A. Kemmerer,et al.  Testing Formal Specifications to Detect Design Errors , 1985, IEEE Transactions on Software Engineering.

[11]  Thomas A. Henzinger,et al.  The Blast Query Language for Software Verification , 2004, SAS.

[12]  Michael Winikoff,et al.  Verifying Requirements Through Mathematical Modelling and Animation , 2000, Int. J. Softw. Eng. Knowl. Eng..

[13]  Marie-Claude Gaudel,et al.  Software testing based on formal specifications: a theory and a tool , 1991, Softw. Eng. J..

[14]  Edward B. Allen,et al.  Case-Based Software Quality Prediction , 2000, Int. J. Softw. Eng. Knowl. Eng..

[15]  Marinus J. Plasmeijer,et al.  A Generic Programming Extension for Clean , 2001, IFL.

[16]  Gerard J. Holzmann,et al.  The SPIN Model Checker , 2003 .

[17]  Taghi M. Khoshgoftaar,et al.  Case-Based Software Quality Prediction , 2000, International journal of software engineering and knowledge engineering.

[18]  Shaoying Liu Verifying Consistency and Validity of Formal Specifications by Testing , 1999, World Congress on Formal Methods.

[19]  Pieter Koopman,et al.  Generic Generation of Elements of Types , 2005 .

[20]  Jan Tretmans,et al.  Testing Concurrent Systems: A Formal Approach , 1999, CONCUR.

[21]  Tim Miller,et al.  A framework and tool support for the systematic testing of model-based specifications , 2003, TSEM.

[22]  Marinus J. Plasmeijer,et al.  Gast: Generic Automated Software Testing , 2002, IFL.