2010-05-28 11 views
8

Estoy manteniendo una aplicación de clientes gruesos heredada ~ 300K LOC C# con una interfaz Windows.Forms. La aplicación está llena de pequeños errores y caprichos. Por ejemplo, recientemente descubrí un error en el que si un usuario edita y pestañas (no clics) a través de celdas en un DataViewGrid, y deja seleccionada cierta celda, la aplicación obtiene una excepción "Referencia de objeto no configurada como una instancia de un objeto" . Descubro (u obtengo un informe de errores) algo nuevo como esto cada semana o dos. Ya tuve suficiente, y estaba pensando en probar algún tipo de prueba de fuzz en la aplicación para tratar de descubrir los problemas aún no descubiertos.¿Alguna buena herramienta o consejo para probar fuzz Windows forms applications?

Si realizo mi propia prueba de fuzz, supongo que al menos necesito poder generar arneses de prueba que ejecuten partes de mi aplicación (ventana principal, FormX, FormY, FormZ, ...) de forma independiente y tratar de inyectar eventos en ellos.

Estaba tratando de buscar las herramientas adecuadas para esto, pero hasta ahora no he encontrado nada para Win Forms. (Sin embargo, no parece haber escasez de herramientas de prueba de fuzz para aplicaciones web).

¿Alguna idea útil?

Respuesta

6

Siempre me gusta la idea de la herramienta de prueba Gremlins, que se utiliza en dispositivos de mano Palm. Se generaron eventos aleatorios para eliminar errores de programación de la interfaz de usuario. Podrías hacer lo mismo en tu aplicación, generando millones de eventos de ratón hacia arriba y hacia abajo en ubicaciones aleatorias. Necesitará P/Invocar PostMessage() y usar Control.GetChildAtPoint() para generar el identificador de ventana para los mensajes WM_LBUTTONDOWN/UP. Application.DoEvents() en su bucle de prueba para ejecutar los controladores de eventos.

+0

Eso suena como un buen comienzo. Encontré este artículo de MSDN que parece tener mucha información buena que delinea ese enfoque: http://msdn.microsoft.com/en-us/magazine/cc163738.aspx –

+0

Creo que voy a ir con este enfoque en su lugar de una de las oscuras herramientas de prueba de fuzz que encontré en mi búsqueda. Hacer rodar mi propio enfoque al simular eventos como este debería permitirme integrarlo en mi marco de prueba NUnit existente. –

4

Haciendo un poco de búsqueda en la red, me encontré con 2 enlaces con herramientas útiles e información sobre la pelusa de pruebas de WinForms aplicaciones:

  • Monkey Fuzz Testing - Una herramienta de alfa-estado en CodePlex que parece estar bastante cerca de lo Yo quiero. Desde el sitio: "MonkeyFuzz envía principalmente eventos aleatorios de teclado y mouse a un programa, pero puede registrar las acciones a lo largo del camino. Esto permite que se reproduzcan para realizar pruebas de regresión". Puedo probarlo e informar mis hallazgos.
  • A Paper on Random Testing del Departamento de CS de la Universidad de Wisconsin. Esto tiene fecha de 2000-2002, pero parece contener alguna buena información, y links to tools que usaron en su estudio. Sin embargo, parece que las herramientas pueden tener al menos 10 años de retraso.
+0

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

Cuestiones relacionadas