What is Fuzz testing and when it is used?

What is Fuzz testing and when it is used?

Fuzz testing is one of the automated software testing technique. It includes providing unexpected, invalid or may be random data as inputs to the computer program.