Universal Fuzzer can be used to test the robustness, security and reliability of virtually any software. It discovers faults in a target software by feeding it with invalid, incorrect and malformed data and data structures. Universal Fuzzer does not require any protocol specific customization. Test cases are automatically generated from user provided sample files. Any types of files may be used as samples: image files, captured protocol messages, text documents, et cetera. Once samples are selected, the user can specify the number of test cases to generate. Universal Fuzzer applies several fuzzing modules to produce a wide variety of anomalies. The module ratios may be adjusted, and individual modules may be disabled as well. The Universal Fuzzer is able to deliver the generated test cases to the target software via files, pipes, TCP (client/server), HTTP or HTTPS. Additional fine tuning is available for each delivery mechanism. The health of the target software can be monitored with built-in mechanisms or with an extensible instrumentation framework.