All Projects → mdlincoln → fuzzr

mdlincoln / fuzzr

Licence: other
Fuzz-Test R Functions

Programming Languages

r
7636 projects

Projects that are alternatives of or similar to fuzzr

Fuzzer
Do not crash when your server lies
Stars: ✭ 70 (+268.42%)
Mutual labels:  fuzz-testing
Pythonfuzz
coverage guided fuzz testing for python
Stars: ✭ 175 (+821.05%)
Mutual labels:  fuzz-testing
Certfuzz
This project contains the source code for the CERT Basic Fuzzing Framework (BFF) and the CERT Failure Observation Engine (FOE).
Stars: ✭ 233 (+1126.32%)
Mutual labels:  fuzz-testing
Awesome Directed Fuzzing
A curated list of awesome directed fuzzing research papers
Stars: ✭ 77 (+305.26%)
Mutual labels:  fuzz-testing
Snodge
Randomly mutate JSON, XML, HTML forms, text and binary data for fuzz testing
Stars: ✭ 121 (+536.84%)
Mutual labels:  fuzz-testing
Javafuzz
coverage guided fuzz testing for java
Stars: ✭ 193 (+915.79%)
Mutual labels:  fuzz-testing
Burpsuite Collections
BurpSuite收集:包括不限于 Burp 文章、破解版、插件(非BApp Store)、汉化等相关教程,欢迎添砖加瓦---burpsuite-pro burpsuite-extender burpsuite cracked-version hackbar hacktools fuzzing fuzz-testing burp-plugin burp-extensions bapp-store brute-force-attacks brute-force-passwords waf sqlmap jar
Stars: ✭ 1,081 (+5589.47%)
Mutual labels:  fuzz-testing
eslump
Fuzz testing JavaScript parsers and suchlike programs.
Stars: ✭ 56 (+194.74%)
Mutual labels:  fuzz-testing
Libdiffuzz
Custom memory allocator that helps discover reads from uninitialized memory
Stars: ✭ 147 (+673.68%)
Mutual labels:  fuzz-testing
Trophy Case
🏆 Collection of bugs uncovered by fuzzing Rust code
Stars: ✭ 225 (+1084.21%)
Mutual labels:  fuzz-testing
Test Each
🤖 Repeat tests. Repeat tests. Repeat tests.
Stars: ✭ 89 (+368.42%)
Mutual labels:  fuzz-testing
Aflplusplus
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
Stars: ✭ 2,319 (+12105.26%)
Mutual labels:  fuzz-testing
Fuzzit
CLI to integrate continuous fuzzing with Fuzzit
Stars: ✭ 220 (+1057.89%)
Mutual labels:  fuzz-testing
Gremlins.js
Monkey testing library for web apps and Node.js
Stars: ✭ 8,790 (+46163.16%)
Mutual labels:  fuzz-testing
Grizzly
A cross-platform browser fuzzing framework
Stars: ✭ 234 (+1131.58%)
Mutual labels:  fuzz-testing
Book
📖 Guides and tutorials on how to fuzz Rust code
Stars: ✭ 67 (+252.63%)
Mutual labels:  fuzz-testing
Sharpfuzz
AFL-based fuzz testing for .NET
Stars: ✭ 185 (+873.68%)
Mutual labels:  fuzz-testing
iust deep fuzz
Advanced file format fuzzer based-on deep neural language models.
Stars: ✭ 36 (+89.47%)
Mutual labels:  fuzz-testing
targets
🎯 A collection of fuzzing targets written in Rust.
Stars: ✭ 91 (+378.95%)
Mutual labels:  fuzz-testing
Honggfuzz Rs
Fuzz your Rust code with Google-developed Honggfuzz !
Stars: ✭ 222 (+1068.42%)
Mutual labels:  fuzz-testing

fuzzr

Project Status: Active - The project has reached a stable, usable state and is being actively developed. CRAN_Status_Badge Travis-CI Build Status AppVeyor Build Status

fuzzr implements some simple “fuzz tests” for your R functions, passing in a wide array of inputs and returning a report on how your function reacts.

Installation

install.package("fuzzr")

# Or, for the development version:
devtools::install_github("mdlincoln/fuzzr")

Usage

Tests are set by passing functions that return named lists of input values. These values will be passed as function arguments. Several default suites are provided with this package, such as test_char, however you may implement your own by passing a function that returns a similarly-formatted list.

library(fuzzr)
str(test_char())
#> List of 8
#>  $ char_empty         : chr(0) 
#>  $ char_single        : chr "a"
#>  $ char_single_blank  : chr ""
#>  $ char_multiple      : chr [1:3] "a" "b" "c"
#>  $ char_multiple_blank: chr [1:4] "a" "b" "c" ""
#>  $ char_with_na       : chr [1:3] "a" "b" NA
#>  $ char_single_na     : chr NA
#>  $ char_all_na        : chr [1:3] NA NA NA

Evaluate a function argument by supplying fuzz_function its quoted name, the tests to run, along with any other required static values. fuzz_function returns a fuzz_results object that stores conditions raised by a function (message, warning, or error) along with any value returned by that function.

fuzz_results <- fuzz_function(fun = lm, arg_name = "subset", data = iris, 
                              formula = Sepal.Length ~ Petal.Width + Petal.Length, 
                              tests = test_all())
#> Warning: `cross_n()` is deprecated; please use `cross()` instead.

#> Warning: `cross_n()` is deprecated; please use `cross()` instead.
#> Warning: at_depth() is deprecated, please use `modify_depth()` instead

You can render these results as a data frame:

fuzz_df <- as.data.frame(fuzz_results)
knitr::kable(head(fuzz_df))
subset data formula output messages warnings errors result_classes results_index
char_empty iris Sepal.Length ~ Petal.Width + Petal.Length NA NA NA 0 (non-NA) cases NA 1
char_single iris Sepal.Length ~ Petal.Width + Petal.Length NA NA NA 0 (non-NA) cases NA 2
char_single_blank iris Sepal.Length ~ Petal.Width + Petal.Length NA NA NA 0 (non-NA) cases NA 3
char_multiple iris Sepal.Length ~ Petal.Width + Petal.Length NA NA NA 0 (non-NA) cases NA 4
char_multiple_blank iris Sepal.Length ~ Petal.Width + Petal.Length NA NA NA 0 (non-NA) cases NA 5
char_with_na iris Sepal.Length ~ Petal.Width + Petal.Length NA NA NA 0 (non-NA) cases NA 6

You can also access the value returned by any one test by matching the argument tested with its test name:

model <- fuzz_value(fuzz_results, subset = "int_multiple")
coefficients(model)
#>  (Intercept)  Petal.Width Petal.Length 
#>          0.8           NA          3.0

Multiple-argument tests

Specify multiple-argument tests with p_fuzz_function, passing a named list of arguments and tests to run on each. p_fuzz_function will test every combination of argument and variable.

fuzz_p <- p_fuzz_function(agrep, list(pattern = test_char(), x = test_char()))
#> Warning: `cross_n()` is deprecated; please use `cross()` instead.

#> Warning: `cross_n()` is deprecated; please use `cross()` instead.
#> Warning: at_depth() is deprecated, please use `modify_depth()` instead
length(fuzz_p)
#> [1] 64
knitr::kable(head(as.data.frame(fuzz_p)))
pattern x output messages warnings errors result_classes results_index
char_empty char_empty NA NA NA invalid ‘pattern’ argument NA 1
char_single char_empty NA NA NA NA integer 2
char_single_blank char_empty NA NA NA ‘pattern’ must be a non-empty character string NA 3
char_multiple char_empty NA NA argument ‘pattern’ has length > 1 and only the first element will be used NA integer 4
char_multiple_blank char_empty NA NA argument ‘pattern’ has length > 1 and only the first element will be used NA integer 5
char_with_na char_empty NA NA argument ‘pattern’ has length > 1 and only the first element will be used NA integer 6

Matthew Lincoln

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].