Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/quickchick/quickchick
Randomized Property-Based Testing Plugin for Coq
https://github.com/quickchick/quickchick
coq testing
Last synced: 3 days ago
JSON representation
Randomized Property-Based Testing Plugin for Coq
- Host: GitHub
- URL: https://github.com/quickchick/quickchick
- Owner: QuickChick
- License: other
- Created: 2014-04-03T22:36:19.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2024-12-21T10:19:42.000Z (about 1 month ago)
- Last Synced: 2025-01-12T13:03:56.152Z (10 days ago)
- Topics: coq, testing
- Language: Coq
- Homepage:
- Size: 27.8 MB
- Stars: 260
- Watchers: 17
- Forks: 47
- Open Issues: 92
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
QuickChick
==========[![CircleCI](https://circleci.com/gh/QuickChick/QuickChick.svg?style=svg)](https://circleci.com/gh/QuickChick/QuickChick)
[![project chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://coq.zulipchat.com/#narrow/stream/237977-Coq-users)## Description
- Randomized property-based testing plugin for Coq; a clone of [Haskell QuickCheck]
- Includes a [foundational verification framework for testing code]
- Includes a [mechanism for automatically deriving generators for inductive relations][Haskell QuickCheck]:
https://hackage.haskell.org/package/QuickCheck[foundational verification framework for testing code]:
http://prosecco.gforge.inria.fr/personal/hritcu/publications/foundational-pbt.pdf[mechanism for automatically deriving generators for inductive relations]:
https://lemonidas.github.io/pdf/GeneratingGoodGenerators.pdf## Tutorial
- Small tutorials on Basic Usage and Automation can be found under `tutorials/`
- An extended introduction can be found in [QuickChick: Property-Based Testing in Coq][sfqc] (Software Foundations, Volume 4)[sfqc]: https://softwarefoundations.cis.upenn.edu/qc-current/index.html
## Installation
### From OPAM
# Add the Coq opam repository (if you haven't already)
opam repo add coq-released https://coq.inria.fr/opam/released
opam update
# Install the coq-quickchick opam package
opam install coq-quickchick## Simple Examples
- `examples/Tutorial.v`
- `examples/RedBlack`
- `examples/stlc`
- `examples/ifc-basic`Running `make tests` in the top-level QuickChick folder will check and execute all of these.
If successful, you should see "success" at the end.## Documentation
The public API of QuickChick is summarized in `QuickChickInterface.v`.
### Top-level Commands
- `QuickCheck c`
- `Sample g`
- `Derive Arbitrary for c`
- `Derive Show for c`
- `Derive ArbitrarySizedSuchThat for (fun x => p)`
- `Derive DecOpt for p`
- `Derive EnumSizedSuchThat for (fun x => p)`
- `Derive ArbitrarySizedSuchThat for (fun x => let (x1,x2...) := x in p)`
- `QuickCheckWith args c`
- `MutateCheck c p`
- `MutateCheckWith args c p`
- `MutateCheckMany c ps`
- `MutateCheckManyWith args c ps`### More resources
Here is some more reading material:
- Our PLDI 2022 paper on [a mechanism for automatically deriving generators, enumerators, and checkers for inductive relations](https://lemonidas.github.io/pdf/ComputingCorrectly.pdf)
- Our POPL 2018 paper on [a mechanism for automatically deriving generators for inductive relations](https://lemonidas.github.io/pdf/GeneratingGoodGenerators.pdf)
- Our ITP 2015 paper on [Foundational Property-Based Testing](http://prosecco.gforge.inria.fr/personal/hritcu/publications/foundational-pbt.pdf)
- Our PLDI 2023 paper on [a mechanism for merging multiple inductive relations into one](https://lemonidas.github.io/pdf/MergingInductiveRelations.pdf)
- Leo's invited talk at CLA on [Random Testing in the Coq Proof Assistant](https://lemonidas.github.io/pdf/InvitedCLA.pdf)
- Catalin's [internship topic proposals for 2015](http://prosecco.gforge.inria.fr/personal/hritcu/students/topics/2015/quick-chick.pdf)
- Catalin's [presentation at CoqPL 2015 workshop (2015-01-18)](http://prosecco.gforge.inria.fr/personal/hritcu/talks/QuickChick-Verified-Testing-CoqPL.pdf)
- Zoe's [thesis defense at NTU Athens (2014-09-08)](http://prosecco.gforge.inria.fr/personal/hritcu/talks/zoe-defense.pdf)
- Maxime's [presentation at the Coq Workshop (2014-07-18)](http://prosecco.gforge.inria.fr/personal/hritcu/talks/QuickChick-Coq.pdf)
- Catalin's [presentation at the Coq Working Group @ PPS (2014-03-19)](http://prosecco.gforge.inria.fr/personal/hritcu/talks/QuickChick-PPS.pdf)---
## Developer's corner
### Build dependencies
Dependencies are listed in [`coq-quickchick.opam`](./coq-quickchick.opam).
# To get the dependencies, add the Coq opam repository if you haven't already
opam repo add coq-released https://coq.inria.fr/opam/released
opam update
opam install . --deps-only### Build
dune build
## Run tests
dune runtest
### Run extra tests for quickChick tool
dune install coq-quickchick # Makes QuickChick available globally
dune build @cram