Skip to main content

Tools for stress testing applications.

Project description

https://travis-ci.org/stbraun/fuzzing.svg?branch=master https://readthedocs.org/projects/fuzzing/badge/?version=master

Stress testing of applications can be done in lots of different ways. This package provides an easy to use tool to stress test applications which take files as parameters. Editors, image viewers, and many more classes of apps come to mind.

The stress test is based on a given set of files, binary or text. Those files are taken randomly and some bytes are modified also randomly (fuzzing). Then the application gets executed with the fuzzed file. Repeating this over and over again stresses the robustness for defective input data of the application.

Tutorial and API documentation can be found on ReadTheDocs.

What’s new?

Now you can run your tests in multiple processes. Test results are combined and printed.

Installation

The easiest way to install is via easy_install or pip

$ pip install fuzzing

There are feature related tests that can be run with behave and unit tests runnable with pytest or nosetest.

Example

from fuzzing.fuzzer import FuzzExecutor

# Files to use as initial input seed.
file_list = ["./features/data/t1.pdf", "./features/data/t3.pdf", "./features/data/t2.jpg"]

# List of applications to test.
apps_under_test = ["/Applications/Adobe Reader 9/Adobe Reader.app/Contents/MacOS/AdobeReader",
                   "/Applications/PDFpen 6.app/Contents/MacOS/PDFpen 6",
                   "/Applications/Preview.app/Contents/MacOS/Preview",
                   ]

number_of_runs = 13

def test():
    fuzz_executor = FuzzExecutor(apps_under_test, file_list)
    fuzz_executor.run_test(number_of_runs)
    return fuzz_executor.stats

def main():
    stats = test()
    for k, v in stats.items():
        print('{} = {}'.format(k, v))

Using pre-built test runner and configuration

For convenience a test runner is provided which takes a test configuration.

Example of a configuration YAML file:

version: 1
seed_files: ['requirements.txt', 'README.rst']
applications: ['MyFunnyApp', 'AdobeReader']
runs: 800
processors: 4
processes: 10

Then call the test runner in a terminal session:

$ run_fuzzer.py test.yaml

This will execute the tests as configured and print the test result when done:

$ run_fuzzer.py test.yaml
Starting up ...
... finished

Test Results:

MyFunnyApp
    succeeded: 4021
    failed: 95
AdobeReader
    succeeded: 3883
    failed: 1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fuzzing-0.3.0.tar.gz (20.7 kB view details)

Uploaded Source

File details

Details for the file fuzzing-0.3.0.tar.gz.

File metadata

  • Download URL: fuzzing-0.3.0.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for fuzzing-0.3.0.tar.gz
Algorithm Hash digest
SHA256 141647bf02525d31cb3ddba93128249255dc44f755d1e2941fa2c691c1b861dc
MD5 e9fc50af6b12eea7d04859a7ff4d5949
BLAKE2b-256 8dad0d5c5741f95ec3b5501119fa2d63dbab2a7735da2c20a8fc8c4604f850c0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page