Skip to content
Ronnie Gandhi edited this page Dec 18, 2018 · 33 revisions

Background

Fuzzers are computer programs that are used to detect security holes in other programs, by sending those programs inputs that are initially random, but eventually learned to be pathological. deepstate is a testing framework that allows easy testing of C++ programs with fuzzers.

Related work

  • fuzzr provides less sophisticated random testing of R functions. (and no framework for writing unit tests)
  • covr provides instrumentation of R code for unit testing. (instrumentation is also necessary for fuzzers to learn a function from inputs to the execution path through the code)
  • testthat provides functions for defining tests, similar to deepstate.

GSOC coding project: deepstate for R

The goal of this GSOC project is to implement new features for defining unit tests in R code that can be used with deepstate/fuzzers.

After implementing the framework, we will use it to detect bugs in several widely used R packages (including base R).

TODO more detailed goals.

Expected impact

Currently R package developeRs do not systematically use random testing on their code; this project would make it much easier to do so. If we end up detecting new bugs in R packages, it will result in improvements to these packages.

Mentors

Please get in touch with Toby Dylan Hocking <[email protected]> and Alex Groce <[email protected]> after completing at least one of the tests below.

Tests

Do one or several — doing more hard tests makes you more likely to be selected.

  • Easy: use fuzzr on one of your favorite R functions, and post the results to a gist.
  • Medium: TODO
  • Hard: TODO

Solutions of tests

  • Students, please post a link to your test results here. Name: Ronnie Gandhi

    Email:[email protected]

    Website: https://bit.ly/2QiU0Rn

    University: Indian Institute of Technology, Roorkee

    Course: Computer Science and Engineering

    Solution to Easy Test: Easy

    Solution to Medium Test: TODO

    Solution to Hard Test: TODO

Clone this wiki locally