|
Fuzz
Fuzz testing or fuzzing is a software testing technique. The basic idea is to attach the inputs of a program to a source of random data ("fuzz"). If the program fails (for example, by crashing, or by failing built-in code assertions), then there are defects to correct. more...
Home
Brass
DJ Gear & Lighting
Electronic
Equipment
Guitar
Acoustic
Acoustic Beginner Packs
Acoustic Electric
Amplifiers
Bass
Builder, Luthier Kits
Electric
Electric Beginner Packs
Memorabilia
Other Guitar
Parts, Accessories
Bodies
Bridges
Cables
Capos
Cases
Hardshell
Soft, Gig Bags
Effects Pedals
Bass
Boards, Cases
Chorus
Compressors, Sustainers
Delay, Echo, Reverb
Distortion Boss
Distortion Ibanez
Distortion Other Brands
Distortion, Overdrive
Filter, Modulation
Flangers
Fuzz
Loopers, Samplers
Multi-Effects
Other
Phasers, Shifters
Power Supplies
Processors
Wah, Volume
Knobs, Jacks, Switches
Necks
Nuts
Other Accessories
Pickguards
Picks
Dunlop
Fender
Other
Pickups
Dimarzio
EMG
Fender
Gibson
Other
Seymour Duncan
Plates
Polishes, Cleaners
Saddles
Slides
Stands, Hangers
Straps
Cloth, Nylon
Leather
Other
Strings
Acoustic
Acoustic D'Addario
Acoustic Elixir
Acoustic Martin
Acoustic Other
Bass
Electric
Electric D'Addario
Electric DR
Electric Ernie Ball
Electric Fender
Electric Other
Tuners
Korg
Other
Qwik Tune
Tuning Pegs
Vintage, Pre-1980
Harmonica
Instruction Books, CDs,...
Keyboard, Piano
Other Instruments
Percussion
Pro Audio
Sheet Music, Song Books
String
Wholesale Lots
Woodwind
The great advantage of fuzz testing is that the test design is extremely simple, and free of preconceptions about system behavior.
Uses
Fuzz testing is often used in large software development projects that perform black box testing. These usually have a budget to develop test tools, and fuzz testing is one of the techniques which offers a high benefit to cost ratio.
Fuzz testing is also used as a gross measurement of a large software system's quality. The advantage here is that the cost of generating the tests is relatively low. For example, third party testers have used fuzz testing to evaluate the relative merits of different operating systems and application programs.
Fuzz testing is thought to enhance software security and software safety because it often finds odd oversights and defects which human testers would fail to find, and even careful human test designers would fail to create tests for.
However, fuzz testing is not a substitute for exhaustive testing or formal methods: it can only provide a random sample of the system's behavior, and in many cases passing a fuzz test may only demonstrate that a piece of software handles exceptions without crashing, rather than behaving correctly. Thus, fuzz testing can only be regarded as a proxy for program correctness, rather than a direct measure, with fuzz test failures actually being more useful as a bug-finding tool than fuzz test passes as an assurance of quality.
Fuzz testing was originated at the University of Wisconsin Madison in 1989 by Professor Barton Miller and the students in his graduate Advanced Operating Systems class. Their work can be found at
Fuzz testing methods
As a practical matter, developers need to reproduce errors in order to fix them. For this reason, almost all fuzz testing makes a record of the data it manufactures, usually before applying it to the software, so that if the computer fails dramatically, the test data is preserved. If the fuzz stream is pseudo-random number generated it may be easier to store the seed value to reproduce the fuzz attempt.
Modern software has several different types of inputs:
- Event driven inputs are usually from a graphical user interface, or possibly from a mechanism in an embedded system.
- Character driven inputs are from files, or data streams such as sockets.
- Database inputs are from tabular data, such as relational databases.
- Inherited program state such as environment variables
There are at least two different forms of fuzz testing:
- Valid fuzz attempts to assure that the random input is reasonable, or conforms to actual production data.
- Simple fuzz usually uses a pseudo random number generator to provide input.
- A combined approach uses valid test data with some proportion of totally random input injected.
By using all of these techniques in combination, fuzz-generated randomness can test the un-designed behavior surrounding a wider range of designed system states.
Read more at Wikipedia.org
|
|