proptest VS fast-check

Compare proptest vs fast-check and see what are their differences.

proptest

Hypothesis-like property testing for Rust (by proptest-rs)

fast-check

Property based testing framework for JavaScript (like QuickCheck) written in TypeScript (by dubzzz)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
proptest fast-check
15 21
1,554 4,071
3.2% -
8.3 9.8
6 days ago 4 days ago
Rust TypeScript
Apache License 2.0 MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

proptest

Posts with mentions or reviews of proptest. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-22.
  • What Are The Rust Crates You Use In Almost Every Project That They Are Practically An Extension of The Standard Library?
    4 projects | /r/rust | 22 Nov 2023
    proptest: Property-based testing with random input generation.
  • Iterating on Testing in Rust
    4 projects | news.ycombinator.com | 17 Jun 2023
    Isn't proptest something that could handle this?

    https://github.com/proptest-rs/proptest

  • The birth of a package manager [written in Rust :)]
    2 projects | /r/rust | 17 Mar 2023
    proptest is great! It generates random input data according to some rules, and if the input fails it saves random seed into a file so that failing inputs are guaranteed to be tested on the subsequent runs (as well as new random inputs). It also doesn't immediately stop on fail but tries to find a minimal failing input first.
  • Hey Rustaceans! Got a question? Ask here (11/2023)!
    7 projects | /r/rust | 13 Mar 2023
    The only other crate I could find is proptest, but it looks a lot more complicated, and I don't know if lets you skip the shrinking step as quickcheck does. I've been reading the book and going through the docs, but a quick answer would be appreciated.
  • Hey Rustaceans! Got a question? Ask here! (32/2022)!
    6 projects | /r/rust | 9 Aug 2022
    Hi, I'm working on a fuzzer, that fuzzes APIs based on OpenAPI specification. I'd like to implement shrinking. It means that when an interesting input (for the API) is found, I'd like to create the smallest possible input that still causes the same behaviour of the API. I'd like to implement a payload generation via proptest, because it already has the shrinking ability. I'm having issues implementing the JSON object as a proptest strategy. Here is what I tried so far. I explained it in a detail in stackoverflow question but it did not reach many people. Thanks for your help!
  • Which Mutex to use in this case (independent tasks, partially under contention)
    3 projects | /r/rust | 27 Jul 2022
    Third, if you're opting out of a compile-time safety guarantee in the name of performance, test heavily (high-coverage unit tests, property testing, fuzzing, differential fuzzing, etc.) and make use of tools like Loom and Miri's runtime data race detector for unsafe code, which can catch stuff that is beyond the scope of the compiler's guarantees.
  • Is RUST aiming to build an ecosystem on scientific computing?
    6 projects | /r/rust | 10 Jul 2022
    See also property testing
  • Is there a rust way for doing TDD?
    6 projects | /r/rust | 26 Jan 2022
    It is not hard to do TDD with integration tests either, just write tests that encapsulate the properties you want your library to hold then implement those properties one by one. This is also known as property driven/based testing which then couples well with fuzzers or randomized testing where you randomize the input rather than using large amounts of test assets. This also help you catch a lot more bugs that you never even thought of. proptest is a good library that can help with this.
  • Go Fuzzing
    7 projects | news.ycombinator.com | 1 Jan 2022
  • In praise of property-based testing (2019)
    2 projects | news.ycombinator.com | 3 Apr 2021
    I'm quite new to property testing, first introduced recently via a Rust property testing framework proptest[0]. So far i've had the feeling that property testing frameworks need to include a way to rationalize complexity, as their assumptions can easily fall short as you illustrated.

    Eg the simplest example might be an application where you input an integer, but a smaller int actually drives up the complexity. This idea gets more complex when we consider a list of ints, where a larger list and larger numbers are simpler. Etcetc.

    It would be neat if a proptest framework supported (and maybe they do, again, i'm a novice here) a way to rank complexity. Eg a simple function which gives two input failures and you can choose which is the simpler.

    Another really neat way to do that might be to actually compute the path complexity as the program runs based on the count of CPU instructions or something. This wouldn't always be a parallel, but would often be the right default i imagine.

    Either way in my limited proptest experience, i've found it a bit difficult to design the tests to test what you actually want, but very helpful once you establish that.

    [0]: https://crates.io/crates/proptest

fast-check

Posts with mentions or reviews of fast-check. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-09-14.

What are some alternatives?

When comparing proptest and fast-check you can also consider the following projects:

quickcheck - Automated property based testing for Rust (with shrinking).

afl.rs - 🐇 Fuzzing Rust code with American Fuzzy Lop

Unexpected - Unexpected - the extensible BDD assertion toolkit

trust - Travis CI and AppVeyor template to test your Rust crate on 5 architectures and publish binary releases of it for Linux, macOS and Windows

jest - Delightful JavaScript Testing.

tarpaulin - A code coverage tool for Rust projects

trevor - 🚦 Your own mini Travis CI to run tests locally

tape - tap-producing test harness for node and browsers

test-each - 🤖 Repeat tests. Repeat tests. Repeat tests.

Clippy - A bunch of lints to catch common mistakes and improve your Rust code. Book: https://doc.rust-lang.org/clippy/

nyc - the Istanbul command line interface

loadtest - Runs a load test on the selected URL. Fast and easy to use. Can be integrated in your own workflow using the API.