Partition Testing Does Not Inspire Confidence (Program Testing)
IEEE Transactions on Software Engineering
Specification case studies
Software testing based on formal specifications: a theory and a tool
Software Engineering Journal
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Monad transformers and modular interpreters
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lisp and Symbolic Computation - Special issue on state in programming languages (part I)
Putting type annotations to work
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Framework for Specification-Based Testing
IEEE Transactions on Software Engineering
Proceedings of the 22nd international conference on Software engineering
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Data Abstraction, Implementation, Specification, and Testing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automating Formal Specification-Based Testing
TAPSOFT '97 Proceedings of the 7th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
Modular Domain Specific Languages and Tools
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Combining test case generation and runtime verification
Theoretical Computer Science - Abstract state machines and high-level system design and analysis
Random testing of interrupt-driven software
Proceedings of the 5th ACM international conference on Embedded software
Scrap your boilerplate with class: extensible generic functions
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Roll your own test bed for embedded real-time protocols: a haskell experience
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
GAST: generic automated software testing
IFL'02 Proceedings of the 14th international conference on Implementation of functional languages
Monad-independent Hoare logic in HasCasl
FASE'03 Proceedings of the 6th international conference on Fundamental approaches to software engineering
Random testing for higher-order, stateful programs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
QuickCheck testing for fun and profit
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.00 |
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.