All Projects → HypothesisWorks → Hypothesis

HypothesisWorks / Hypothesis

Licence: other
Hypothesis is a powerful, flexible, and easy to use library for property-based testing.

Programming Languages

python
139335 projects - #7 most used programming language
Jupyter Notebook
11667 projects
rust
11053 projects
ruby
36898 projects - #4 most used programming language
TeX
3793 projects
shell
77523 projects

Projects that are alternatives of or similar to Hypothesis

Rapid
Rapid is a Go library for property-based testing that supports state machine ("stateful" or "model-based") testing and fully automatic test case minimization ("shrinking")
Stars: ✭ 213 (-96.18%)
Mutual labels:  fuzzing, property-based-testing
Deepstate
A unit test-like interface for fuzzing and symbolic execution
Stars: ✭ 603 (-89.18%)
Mutual labels:  fuzzing, property-based-testing
swagger-conformance
Python based tool for testing whether your API conforms to its Swagger schema
Stars: ✭ 51 (-99.08%)
Mutual labels:  property-based-testing, fuzzing
Fast Check
Property based testing framework for JavaScript (like QuickCheck) written in TypeScript
Stars: ✭ 2,604 (-53.26%)
Mutual labels:  fuzzing, property-based-testing
Fuzzcheck Rs
Structure-aware, in-process, coverage-guided, evolutionary fuzzing engine for Rust functions.
Stars: ✭ 247 (-95.57%)
Mutual labels:  fuzzing, property-based-testing
fuzz-rest-api
Derive property based testing fast-check into a fuzzer for REST APIs
Stars: ✭ 38 (-99.32%)
Mutual labels:  property-based-testing, fuzzing
Jqf
JQF + Zest: Coverage-guided semantic fuzzing for Java.
Stars: ✭ 340 (-93.9%)
Mutual labels:  fuzzing, property-based-testing
Awesome Fuzzing
A curated list of awesome Fuzzing(or Fuzz Testing) for software security
Stars: ✭ 399 (-92.84%)
Mutual labels:  fuzzing
Clusterfuzz
Scalable fuzzing infrastructure.
Stars: ✭ 4,648 (-16.57%)
Mutual labels:  fuzzing
Grinder
Grinder is a system to automate the fuzzing of web browsers and the management of a large number of crashes.
Stars: ✭ 393 (-92.95%)
Mutual labels:  fuzzing
Fuzzdata
Fuzzing resources for feeding various fuzzers with input. 🔧
Stars: ✭ 376 (-93.25%)
Mutual labels:  fuzzing
Go Fuzz
Randomized testing for Go
Stars: ✭ 4,218 (-24.29%)
Mutual labels:  fuzzing
Norm
Data specification and generation
Stars: ✭ 486 (-91.28%)
Mutual labels:  property-based-testing
Pentesterspecialdict
渗透测试人员专用精简化字典 Dictionary for penetration testers happy hacker
Stars: ✭ 391 (-92.98%)
Mutual labels:  fuzzing
Expecto
A smooth testing lib for F#. APIs made for humans! Strong testing methodologies for everyone!
Stars: ✭ 495 (-91.11%)
Mutual labels:  property-based-testing
Afl Utils
Utilities for automated crash sample processing/analysis, easy afl-fuzz job management and corpus optimization
Stars: ✭ 383 (-93.13%)
Mutual labels:  fuzzing
Jsfuzz
coverage guided fuzz testing for javascript
Stars: ✭ 532 (-90.45%)
Mutual labels:  fuzzing
Sled
the champagne of beta embedded databases
Stars: ✭ 5,423 (-2.66%)
Mutual labels:  fuzzing
Qsym
QSYM: A Practical Concolic Execution Engine Tailored for Hybrid Fuzzing
Stars: ✭ 459 (-91.76%)
Mutual labels:  fuzzing
Gopter
GOlang Property TestER
Stars: ✭ 458 (-91.78%)
Mutual labels:  property-based-testing

Hypothesis

Hypothesis is a family of testing libraries which let you write tests parametrized by a source of examples. A Hypothesis implementation then generates simple and comprehensible examples that make your tests fail. This simplifies writing your tests and makes them more powerful at the same time, by letting software automate the boring bits and do them to a higher standard than a human would, freeing you to focus on the higher level test logic.

This sort of testing is often called "property-based testing", and the most widely known implementation of the concept is the Haskell library QuickCheck, but Hypothesis differs significantly from QuickCheck and is designed to fit idiomatically and easily into existing styles of testing that you are used to, with absolutely no familiarity with Haskell or functional programming needed.

Hypothesis for Python is the original implementation, and the only one that is currently fully production ready and actively maintained.

Hypothesis for Other Languages

The core ideas of Hypothesis are language agnostic and in principle it is suitable for any language. We are interested in developing and supporting implementations for a wide variety of languages, but currently lack the resources to do so, so our porting efforts are mostly prototypes.

The two prototype implementations of Hypothesis for other languages are:

  • Hypothesis for Ruby is a reasonable start on a port of Hypothesis to Ruby.
  • Hypothesis for Java is a prototype written some time ago. It's far from feature complete and is not under active development, but was intended to prove the viability of the concept.

Additionally there is a port of the core engine of Hypothesis, Conjecture, to Rust. It is not feature complete but in the long run we are hoping to move much of the existing functionality to Rust and rebuild Hypothesis for Python on top of it, greatly lowering the porting effort to other languages.

Any or all of these could be turned into full fledged implementations with relatively little effort (no more than a few months of full time work), but as well as the initial work this would require someone prepared to provide or fund ongoing maintenance efforts for them in order to be viable.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].