À propos du projet
NaNofuzz est un générateur automatique de suites de tests (ATUG) expérimental pour TypeScript et Python, conçu pour fonctionner dans VS Code. Il combine l'intuition humaine, des heuristiques et la vérification de propriétés pour aider les développeurs à générer et affiner rapidement des exemples de tests. En un seul clic, NaNofuzz propose un ensemble initial d'exemples de tests, qui peuvent être affinés en annotant manuellement leur exactitude ou en écrivant des fonctions de validation de propriétés. L'outil organise et hiérarchise les résultats de tests sur un seul écran, montrant ce qui est testé et ce qui pourrait manquer.
Les fonctionnalités clés incluent la prise en charge des tests par fuzz, par exemples et par propriétés ; l'export des tests épinglés vers Jest/Jasmine (TypeScript) ou pytest (Python) pour l'intégration continue ; des transformateurs d'entrée pour modifier ou ignorer des entrées ; la prise en charge d'un large éventail de types (nombres, chaînes de caractères, booléens, objets littéraux, tuples, unions, tableaux, maps, sets, dictionnaires, chaînes regex, nulls, données binaires et types utilitaires TypeScript comme Record, Required, Partial) ; la génération d'entrées composites combinant des générateurs aléatoires, par mutation, humains et optionnellement IA ; des visualisations de couverture de code dans l'éditeur ; et des tests avec arrêt et reprise, avec pause/reprise et ajout d'entrées en cours d'exécution. Il utilise également le compilateur TypeScript et le tsconfig du projet lorsqu'ils sont disponibles.
NaNofuzz est développé par l'Accelerated Testing Research Program de l'Université Carnegie Mellon. Il n'est pas destiné à un usage en production mais accueille les contributions. Les types de paramètres pris en charge incluent les nombres, les chaînes de caractères, les booléens, les objets littéraux, les tuples, les unions, les tableaux à n dimensions et les paramètres optionnels. Les fonctionnalités non prises en charge incluent les paramètres déstructurés, les enums, les génériques, les intersections, les types utilitaires (comme Omit), bigint, any implicite, unknown, les types de fonctions, NaN, Infinity, les méthodes de classe/objet, les formats de modules non-CommonJS, les tests avec état/instables/asynchrones/non déterministes, l'isolation des effets de bord, les mocks, les stubs et les générateurs/filtres personnalisés. Si le bouton NaNofuzz n'apparaît pas, la fonction n'est peut-être pas exportée ou les entrées utilisent des types non pris en charge ; une fonction de harnais de test peut être utilisée à la place.
Le dépôt inclut un tutoriel et des exemples dans le dépôt nanofuzz-examples, ainsi que des références à des articles de recherche sur NaNofuzz (ESEC/FSE'23), TerzoN (FSE'25) et TestLoop (TOSEM'26). La mascotte est NaNcy, un tamandua soyeux.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.