Fuzzing
Fuzzing involves providing invalid, unexpected, or random data as input to your program so that you can discover vulnerabilities and errors. The primary goal of fuzz testing is to identify security vulnerabilities, crashes, or other unexpected behavior in a software application. It is not a general-purpose testing technique and primarily helps you with identifying things that you might not have otherwise thought of or been able to test.
I suppose that technically fuzzing could be done manually by entering some pseudo-random inputs into a UI, but it is almost always done programmatically. There are some fuzzing tools like PeachFuzzer that can help you with this, but you can also create your own set of inputs if you want.
The way fuzzing works is that you start by generating a large volume of random or semi-random data to use as input. This input could include malformed or unexpected inputs that might not be handled correctly by the program. The point of fuzzing is...