# Difference between revisions of "Blog articles/Testing"

From HaskellWiki

(→HUnit: update link) |
SimonHengel (talk | contribs) (→Other) |
||

(7 intermediate revisions by 4 users not shown) | |||

Line 1: | Line 1: | ||

== Type system enforcement == |
== Type system enforcement == |
||

+ | |||

* [http://blog.moertel.com/articles/2007/08/15/a-bright-future-security-and-modern-type-systems A bright future: security and modern type systems] |
* [http://blog.moertel.com/articles/2007/08/15/a-bright-future-security-and-modern-type-systems A bright future: security and modern type systems] |
||

* [http://weblog.raganwald.com/2007/07/can-your-type-checking-system-do-this.html Can your type checking system do this?] |
* [http://weblog.raganwald.com/2007/07/can-your-type-checking-system-do-this.html Can your type checking system do this?] |
||

+ | |||

== Testing, correctness and proofs == |
== Testing, correctness and proofs == |
||

Line 8: | Line 10: | ||

* [http://haskell.org/haskellwiki/Introduction_to_QuickCheck Introduction to QuickCheck] |
* [http://haskell.org/haskellwiki/Introduction_to_QuickCheck Introduction to QuickCheck] |
||

− | * [http:// |
+ | * [http://donsbot.wordpress.com/2007/05/01/roll-your-own-window-manager-part-1-defining-and-testing-a-model/ QuickChecking a window manager] |

* [http://abstractabsurd.blogspot.com/2007/02/sussman-robustness-quickcheck.html Robustness and QuickCheck] |
* [http://abstractabsurd.blogspot.com/2007/02/sussman-robustness-quickcheck.html Robustness and QuickCheck] |
||

* [http://lstephen.wordpress.com/2007/07/29/parsec-parser-testing-with-quickcheck/ Parsec Parser Testing with QuickCheck] |
* [http://lstephen.wordpress.com/2007/07/29/parsec-parser-testing-with-quickcheck/ Parsec Parser Testing with QuickCheck] |
||

* [http://disparatemathematician.blogspot.com/2007/08/why-testing-code-should-be-laissez.html QuickCheck : Why Testing code should be Laissez-faire] |
* [http://disparatemathematician.blogspot.com/2007/08/why-testing-code-should-be-laissez.html QuickCheck : Why Testing code should be Laissez-faire] |
||

* [http://www.kennknowles.com/blog/2007/12/03/calculating-the-reflect-rotate-translate-normal-form-for-an-isometry-of-the-plane-in-haskell-and-verifying-it-with-quickcheck/ Calculating the reflect-rotate-translate normal form for an isometry of the plane in Haskell, and verifying it with QuickCheck.] |
* [http://www.kennknowles.com/blog/2007/12/03/calculating-the-reflect-rotate-translate-normal-form-for-an-isometry-of-the-plane-in-haskell-and-verifying-it-with-quickcheck/ Calculating the reflect-rotate-translate normal form for an isometry of the plane in Haskell, and verifying it with QuickCheck.] |
||

+ | * [http://www.jasani.org/2008/01/03/testing-haskell-with-quickcheck "Testing Haskell with QuickCheck"] |
||

+ | |||

===HUnit === |
===HUnit === |
||

⚫ | |||

+ | * [[HUnit 1.0 User's Guide]] |
||

⚫ | |||

* [http://leiffrenzel.de/papers/getting-started-with-hunit.html Getting started with HUnit] |
* [http://leiffrenzel.de/papers/getting-started-with-hunit.html Getting started with HUnit] |
||

* [http://www.jasani.org/2007/12/05/unit-testing-with-hunit-in-haskell Unit testing with HUnit] |
* [http://www.jasani.org/2007/12/05/unit-testing-with-hunit-in-haskell Unit testing with HUnit] |
||

+ | |||

===Catch=== |
===Catch=== |
||

+ | |||

* [http://neilmitchell.blogspot.com/2007/05/does-xmonad-crash.html Does XMonad crash? On proving pattern coverage with Catch] |
* [http://neilmitchell.blogspot.com/2007/05/does-xmonad-crash.html Does XMonad crash? On proving pattern coverage with Catch] |
||

* [http://neilmitchell.blogspot.com/2007/05/preconditions-on-xmonad.html Preconditions on XMonad] |
* [http://neilmitchell.blogspot.com/2007/05/preconditions-on-xmonad.html Preconditions on XMonad] |
||

* [http://neilmitchell.blogspot.com/2007/07/equational-reasoning-in-haskell.html Equational Reasoning in Haskell] |
* [http://neilmitchell.blogspot.com/2007/07/equational-reasoning-in-haskell.html Equational Reasoning in Haskell] |
||

+ | |||

+ | |||

+ | === Other === |
||

+ | |||

+ | * [https://github.com/kazu-yamamoto/unit-test-example/blob/master/markdown/en/tutorial.md Up-front Unit Testing in Haskell] - an article about unit testing in Haskell using [https://github.com/sol/doctest-haskell#readme Doctest], [http://hspec.github.io/ Hspec] and [http://www.haskell.org/cabal/ Cabal] |
||

+ | * [http://ics.p.lodz.pl/~stolarek/blog/2012/10/code-testing-in-haskell/ Code testing in Haskell] |
||

== Proofs == |
== Proofs == |
||

Line 30: | Line 43: | ||

* [http://www.iis.sinica.edu.tw/~scm/?p=32 Developing Programs and Proofs Spontaneously using GADT] |
* [http://www.iis.sinica.edu.tw/~scm/?p=32 Developing Programs and Proofs Spontaneously using GADT] |
||

+ | |||

===Coq=== |
===Coq=== |
||

Line 39: | Line 53: | ||

** [http://sequence.complete.org/node/360 The Third Law] |
** [http://sequence.complete.org/node/360 The Third Law] |
||

* [http://sequence.complete.org/node/363 Strongly Specified Functions] |
* [http://sequence.complete.org/node/363 Strongly Specified Functions] |
||

+ | |||

=== Isabelle=== |
=== Isabelle=== |
||

* [http://users.lava.net/~newsham/formal/reverse/ Proving Haskell correct with Isabelle/HOL] |
* [http://users.lava.net/~newsham/formal/reverse/ Proving Haskell correct with Isabelle/HOL] |
||

+ | |||

=== Related work === |
=== Related work === |
||

* See the section on [[Blog_articles/Comparisons#Theorem_provers|theorem provers]] |
* See the section on [[Blog_articles/Comparisons#Theorem_provers|theorem provers]] |
||

+ | |||

== Further reading == |
== Further reading == |
||

* [http://haskell.org/haskellwiki/Research_papers/Testing_and_correctness Research papers on testing, proofs and correctness] |
* [http://haskell.org/haskellwiki/Research_papers/Testing_and_correctness Research papers on testing, proofs and correctness] |
||

+ | |||

+ | |||

+ | [[Category:Tutorials]] |

## Latest revision as of 18:49, 20 May 2013

## Contents

## Type system enforcement

## Testing, correctness and proofs

### QuickCheck

- Introduction to QuickCheck
- QuickChecking a window manager
- Robustness and QuickCheck
- Parsec Parser Testing with QuickCheck
- QuickCheck : Why Testing code should be Laissez-faire
- Calculating the reflect-rotate-translate normal form for an isometry of the plane in Haskell, and verifying it with QuickCheck.
- "Testing Haskell with QuickCheck"

### HUnit

- HUnit 1.0 User's Guide
- On Unit Testing and Type Safety
- Getting started with HUnit
- Unit testing with HUnit

### Catch

- Does XMonad crash? On proving pattern coverage with Catch
- Preconditions on XMonad
- Equational Reasoning in Haskell

### Other

- Up-front Unit Testing in Haskell - an article about unit testing in Haskell using Doctest, Hspec and Cabal
- Code testing in Haskell

## Proofs

### GADTs

### Coq

- Strong specifications in Coq: the type says everything
- Proving the monad laws in Coq
- Strongly Specified Functions

### Isabelle

### Related work

- See the section on theorem provers