2010-05-28 3 views
8

Je suis en train de maintenir une application de client lourd héritée de ~ 300K LOC C# avec une interface Windows.Forms. L'application est pleine de petits bugs et bizarreries. Par exemple, j'ai récemment découvert un bogue où si un utilisateur édite et tabule (pas des clics) à travers des cellules sur un DataViewGrid, et laisse une certaine cellule sélectionnée, l'application obtient une exception "Référence d'objet non définie à une instance d'un objet" . Je découvre (ou obtiens un rapport de bogue de) quelque chose de nouveau comme ça environ chaque semaine ou deux. J'en ai eu assez, et je pensais essayer une sorte de test de fuzz sur l'application pour essayer de repérer les problèmes non découverts. Si je fais un test de fuzz roll-my-own, je suppose que je dois au moins pouvoir générer des harnais de test qui exécutent des parties de mon application (fenêtre principale, FormX, FormY, FormZ, ...) indépendamment et essayez d'injecter des événements dans eux. J'essayais de trouver des outils adaptés pour cela, mais jusqu'à présent, je n'ai rien trouvé pour Win Forms. (Il ne semble pas y avoir de pénurie d'outils de test de fuzz pour les applications Web, cependant).De bons outils ou astuces pour tester les fuzz Windows Forms?

Des idées utiles?

Répondre

6

J'ai toujours aimé l'idée de l'outil de test Gremlins, utilisé sur les ordinateurs de poche Palm. Il a généré des événements de prise aléatoires pour éliminer les bogues de programmation de l'interface utilisateur. Vous pouvez faire la même chose dans votre application, en générant des millions d'événements de souris vers le bas et vers le haut à des endroits aléatoires. Vous devrez P/Invoke PostMessage() et utiliser Control.GetChildAtPoint() pour générer le handle de fenêtre pour les messages WM_LBUTTONDOWN/UP. Application.DoEvents() dans votre boucle de test pour exécuter les gestionnaires d'événements.

+0

Cela semble être un bon début. J'ai trouvé cet article MSDN qui semble avoir beaucoup de bonnes informations décrivant cette approche: http://msdn.microsoft.com/en-us/magazine/cc163738.aspx –

+0

Je pense que je vais aller avec cette approche à la place de l'un des outils obscurs de test de fuzz que j'ai trouvé dans ma recherche. Rouler ma propre approche en simulant des événements comme celui-ci devrait me permettre de l'intégrer dans mon cadre de test NUnit existant. –

4

Faire quelques recherches sur le net, j'ai trouvé 2 liens avec des outils et des informations utiles sur les applications WinForms Fuzz-test:

  • Monkey Fuzz Testing - Un outil alpha-état sur CodePlex qui semble être assez proche de ce que Je veux. Sur le site: "MonkeyFuzz envoie principalement des événements aléatoires de clavier et de souris à un programme, mais il peut enregistrer les actions en cours de route, ce qui permet de les rejouer pour les tests de régression." Je peux essayer et rapporter mes conclusions. Un Paper on Random Testing du département CS de l'Université du Wisconsin. Ceci est daté 2000-2002, mais semble contenir quelques bonnes informations, et links to tools ils ont utilisé dans leur étude. Cependant, il semble que les outils peuvent être périmés depuis au moins 10 ans.
+0

https://github.com/SJMakin/FuzzWinForms –

Questions connexes