Le fuzzing, ou Fuzz Testing, est une méthode développée par le scientifique Barton Miller, pour tester de manière systématique les vulnérabilités des logiciels. Il ne s’agit pas d’interpréter le code source du programme mais plutôt de considérer le logiciel comme une boîte noire et son contenu comme avéré. Toutes les interfaces possibles de saisie de données sont ouvertes de manière automatisée et alimentées de données aléatoires. Ce processus peut prendre plusieurs heures, voire des jours, selon la taille du projet logiciel examiné.
L’objectif du Fuzz Testing est de déterminer si les réactions nécessaires aux différentes variantes de saisie possibles existent bien dans le programme. Les saisies erronées ou défectueuses doivent, dans la mesure du possible, être compensées le plus possible par des routines de traitement d’erreurs. Si ces dernières n’existent pas ou ne fonctionnent pas pour certaines saisies, le programme peut planter. Le procédé technique de contrôle de toutes les éventualités d’un logiciel fait partie, depuis longtemps, des conditions de développement Web. La fonctionnalité de nombreuses applications Web sous différents clients Web ou versions de navigateurs, par exemple, est testée, depuis des années par test en navigateur croisé ou cross-browser testing.