Testing monadic code with QuickCheck

被引:17
作者
Claessen, K [1 ]
Hughes, J [1 ]
机构
[1] Chalmers, Dept Comp Sci, Gothenburg, Sweden
关键词
D O I
10.1145/636517.636527
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
QuickCheck is a previously published random testing tool for Haskell programs. In this paper we show how to use it for testing monadic code, and in particular imperative code written using the ST monad. QuickCheck tests a program against a specification: we show that QuickCheck's specification language is sufficiently powerful to represent common forms of specifications: algebraic, model-based (both functional and relational), and pre-/post-conditional. Moreover, all these forms of specification can be used directly for testing. We define a new language of monadic properties, and make a link between program testing and the notion of observational equivalence.
引用
收藏
页码:47 / 59
页数:13
相关论文
共 24 条
[1]  
[Anonymous], 2000, ICFP 00 MONTR CAN SE
[2]  
Antoy S., 1992, IRVINE SOFTWARE S MA, P29
[3]   SOFTWARE TESTING BASED ON FORMAL SPECIFICATIONS - A THEORY AND A TOOL [J].
BERNOT, G ;
GAUDEL, MC ;
MARRE, B .
SOFTWARE ENGINEERING JOURNAL, 1991, 6 (06) :387-405
[4]   AN EFFICIENT FUNCTIONAL IMPLEMENTATION OF FIFO QUEUES [J].
BURTON, FW .
INFORMATION PROCESSING LETTERS, 1982, 14 (05) :205-206
[5]  
DONAT M, 1997, P C THEOR PRACT SOFT, V1214, P833
[6]   AN EVALUATION OF RANDOM TESTING [J].
DURAN, JW ;
NTAFOS, SC .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 1984, 10 (04) :438-444
[7]  
EDWARDS SH, 2001, SOFTWARE TESTING JUN, P11
[8]   DATA-ABSTRACTION IMPLEMENTATION, SPECIFICATION, AND TESTING [J].
GANNON, J ;
MCMULLIN, P ;
HAMLET, R .
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 1981, 3 (03) :211-223
[9]   PARTITION TESTING DOES NOT INSPIRE CONFIDENCE [J].
HAMLET, D ;
TAYLOR, R .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 1990, 16 (12) :1402-1411
[10]  
HAMLET D, 1994, ENCY SOFTWARE ENG, P970