theft

property-based testing for C: generate input to find obscure bugs, then reduce to minimal failing input

  • Owner: silentbicycle/theft
  • Platform:
  • License:: ISC License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

theft: property-based testing for C

theft is a C library for property-based testing. Where example-based
testing checks test results for specific input, theft tests assert
general properties ("for any possible input, [some condition] should
hold"), generate input, and search for counter-examples that make the
test fail. If theft finds any failures, it also knows how to generate
and test simpler variants of the input, and then report the simplest
counter-example found.

theft is distributed under the ISC license.

Installation

theft does not depend on anything beyond C99 and a Unix-like
environment. Its internal tests use greatest, but there is not any
coupling between them. It contains implementations of the
Mersenne Twister PRNG and the FNV-1a hashing algorithm -
see their files for copyright info.

To build, using GNU make:

$ make

Note: You may need to call it as gmake, especially if building on BSD.

To build and run the tests:

$ make test

This will produce example output from several falsifiable properties,
and confirm that failures have been found.

To install libtheft and its headers:

$ make install    # using sudo, if necessary

theft can also be vendored inside of projects -- in that case, just make
sure the headers in ${VENDOR}/theft/inc/ are added to the -I include
path, and ${VENDOR}/theft/build/libtheft.a is linked.

Usage

For usage documentation, see doc/usage.md.

Properties

For some examples of properties to test, see
doc/properties.md.

Shrinking and Auto-shrinking

For more info about shrinking and auto-shrinking, see
doc/shrinking.md.

Forking

theft can fork before running properties, to shrink failures that make
the code under test crash or exceed an optional timeout. For more info,
see doc/forking.md.

Main metrics

Overview
Name With Ownersilentbicycle/theft
Primary LanguageC
Program languageMakefile (Language Count: 3)
Platform
License:ISC License
所有者活动
Created At2014-08-03 18:10:25
Pushed At2020-12-17 09:52:11
Last Commit At2019-02-11 12:52:20
Release Count8
Last Release Namev0.4.5 (Posted on 2019-02-11 13:03:02)
First Release Namev0.2.0 (Posted on 2014-08-06 08:11:39)
用户参与
Stargazers Count622
Watchers Count22
Fork Count33
Commits Count253
Has Issues Enabled
Issues Count41
Issue Open Count26
Pull Requests Count8
Pull Requests Open Count5
Pull Requests Close Count8
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private