From 965e15181508d3c8dccc7c92a42d845311940315 Mon Sep 17 00:00:00 2001 From: Sukera Date: Tue, 20 Feb 2024 19:10:01 +0100 Subject: [PATCH] Add collection of PBT ressources This is a collection of PBT ressources that I've found useful in the past. My hope is that others find/have useful ressources to share too, so they can be curated here. This also links any reimplementations of blogposts people have done with Supposition.jl! --- docs/make.jl | 1 + docs/src/ressources.md | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 docs/src/ressources.md diff --git a/docs/make.jl b/docs/make.jl index 3486ace..07a979d 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -36,6 +36,7 @@ function builddocs(clear=false) "Alignment of Documentation" => "Examples/docalignment.md", "Stateful Testing" => "Examples/stateful.md", ], + "PBT Ressources" => "ressources.md", "FAQ" => "faq.md", "Interfaces" => "interfaces.md", "Benchmarks" => "benchmarks.md", diff --git a/docs/src/ressources.md b/docs/src/ressources.md new file mode 100644 index 0000000..c134a82 --- /dev/null +++ b/docs/src/ressources.md @@ -0,0 +1,23 @@ +# PBT Ressources + +This page contains a collection of PBT tutorials and other useful ressources +for learning PBT techniques. Most, if not all, should be directly translatable to +Supposition.jl in one form or another. If you find a new tutorial or ressource +that helped you test your code with Supposition.jl in some manner, please don't +hesitate to open a PR adding the ressource here! + + * [Hypothesis testing with Oracle functions](https://www.hillelwayne.com/post/hypothesis-oracles/) by Hillel Wayne + * A blogpost about using existing (but slower/partially incorrect) implementations to make sure + a refactored or new implementation still conforms to all expected contracts of the old implementation. + * [Solving the Water Jug Problem from Die Hard 3 with TLA+ and Hypothesis](https://nchammas.com/writing/how-not-to-die-hard-with-hypothesis) by Nicholas Chammas + * A blogpost about helping out John McClan (Bruce Willis) and Zeus Carver (Samuel L. Jackson) ~defuse a bomb~ solve fun children's games. + * This blogpost has been translated to Supposition.jl! Check it out in [the examples](@ref "Juggling Jugs"). + * [Rule Based Stateful Testing](https://hypothesis.works/articles/rule-based-stateful-testing/) by David R. MacIver + * A blogpost from the main developer behind Hypothesis, showing how to test stateful systems with Hypothesis. + * This blogpost has been translated to Supposition.jl! Check it out in [the examples](@ref "Juggling Jugs"). + * Note: Not all features of Hypothesis have been ported to Supposition.jl, in particular the UX for stateful testing + is very bare bones. The linked example contains a very manual implementation of the features utilized by + Hypothesis for much the same thing, but should be easily adaptable for all kinds of stateful tests. + * [Proprty Testing Stateful Code in Rust](https://rtpg.co/2024/02/02/property-testing-with-imperative-rust/) by Raphael Gashignard + * A blogpost about fuzzing internal datastructures of [nushell](https://www.nushell.sh/) using PBT and the Rust library + [proptest](https://github.com/proptest-rs/proptest).