A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.geeksforgeeks.org/software-engineering/software-testing-fuzz-testing/ below:

Fuzz Testing - Software Testing

Fuzz Testing - Software Testing

Last Updated : 11 Jul, 2025

Fuzz Testing is a Software Testing technique that uses invalid, unexpected, or random data as input and then checks for exceptions such as crashes and potential memory leaks. It is an automated testing technique that is performed to describe the system testing processes involving randomized or distributed approaches. During fuzz testing, a system or software application can have a lot of different bugs or glitches related to data input. Barton Miller at the University of Wisconsin in 1989 first developed fuzz testing, also known as fuzzing, which is a type of software testing that involves providing invalid, unexpected, or random data as inputs to a system to identify potential security vulnerabilities or crashes. The goal of fuzz testing is to identify issues that can be exploited by an attacker, such as buffer overflows, SQL injection, or other types of input-validation issues.

Fuzz testing can be done in a variety of ways, including:

It is essential to note that fuzz testing may require specialized tools and test environments and that it's often a costly and time-consuming process. Additionally, it may require a thorough understanding of the system's architecture, protocols, and data format.

The objective of Fuzz Testing:

The objectives of the Fuzz Testing are:

Phases of Fuzz Testing:  Phases of Fuzz Testing
  1. Identify Target System: The system or the software application which is going to be tested is marked. That system is known as the target system. Target system is identified by testing team.
  2. Identify Inputs: Once the target system is set after that the random inputs are created for the purpose of the testing. These random test cases are used as inputs to test the system or software application.
  3. Generate Fuzzed Data: After getting the random inputs i.e. unexpected and invalid, these invalid and unexpected inputs are converted into the fuzzed data. Fuzzed data is basically random input in form of fuzzy logic.
  4. Execute the test using fuzzed data: Now using the fuzzed data testing process is performed. Basically in this section, the code of program or the software is executed by giving the random input i.e. fuzzed data.
  5. Monitor System Behaviour: After the execution of the system or the software application, operated for crashes or any other exceptions like potential memory leaks. System behaviour is tested under the random input.
  6. Log Defects: In the last phase defects are identified, and these defects are fixed in order to get the better quality system or software application.
Types of Fuzz Testing

There are many types of Fuzz testing, two major categorization of fuzz testing are -

1. Coverage-guided fuzz testing - In order to find flaws, coverage-guided fuzz testing examines the source code while the application is operating, probing it with arbitrary challenges. The objective is to cause the program to crash, and new tests are generated continuously. A crash indicates a possible issue, and information gathered during the coverage-guided fuzz testing process can be used to replicate the crash, which is useful in locating code that may be at risk.

2. Behavioral Fuzz testing - Behavioral fuzzy testing operates in a distinct way. When an application's specs demonstrate how it should function, random inputs are used to evaluate how well it really performs; defects or other possible security issues are typically discovered in the gaps between expectations and reality. Some other types of fuzz tests are-

  1. Mutation Fuzzing - To evaluate the robustness of the program, it randomly modifies valid input data by flipping bits, adding or removing characters, or making small adjustments.
  2. Web fuzzing - It is the process of applying fuzzing techniques to web applications through the use of manipulated URL parameters, forms, or HTTP requests.
  3. Generation Fuzzing - It starts with zero input data and frequently generates it according to the target's input requirements.
  4. Smart Fuzzing - It employs sophisticated algorithms to direct and prioritize the fuzzing process, resulting in a more effective bug finding procedure.
  5. Protocol fuzzing - It involves providing unexpected or erroneous data packets to test network protocols and communication.
Types of defects detected by Fuzz Testing:
    1. Number Fuzzing
    2. Character Fuzzing
    3. Application Fuzzing
    4. Protocol Fuzzing
    5. File Format Fuzzing.
    Fuzz testing applications
    1. Blockchain - Fuzz testing of smart contracts uncovers vulnerabilities preventing financial losses or other security issues.
    2. API - Fuzz testing of API helps in ensuring the ability to handle workload and frequent requests.
    3. Operating System - Fuzz testing of OS helps to ensure if system call is handled correctly and prevent system crashes.
    4. Quality Assurance - Fuzzing ensures that programs can accept erroneous or unexpected inputs without crashing QA tests software under a variety of circumstances to make sure the program continues to work even under pressure.
    5. Cryptography - Fuzz testing easily tests the cryptographic algorithm over various combination and maintains security and integrity.
    Advantages of Fuzz Testing:

    Fuzz testing has several advantages as a method for identifying potential security vulnerabilities and other issues in software systems. Some main advantages of fuzz testing include:

    Disadvantages of Fuzz Testing:

    Fuzz testing has some limitations and disadvantages as well. Here are some of the main disadvantages of fuzz testing:

    It's important to keep in mind that fuzz testing is just one technique among many, and it should be used in combination with other testing methods such as manual testing, code review, and static analysis to have a complete view of the system security.

    Conclusion

    Fuzz testing is widely used in various fields and is a good choice for QA. It is a powerful technique that can be used to identify bugs, vulnerabilities, and other issues in software applications. One should note its pros and cons in order to move forward with this testing technique. The different phases of this testing technique mentioned above make it a strong candidate among various software testing techniques.



    RetroSearch is an open source project built by @garambo | Open a GitHub Issue

    Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

    HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4