2009-03-13 15 views
16

Estamos desarrollando una aplicación bastante grande basada en WPF y nos gustaría incluir algunas pruebas de UI automatizadas en nuestro conjunto de pruebas (que ya contiene una cantidad de pruebas unitarias).Experiencias con UI Automation y WPF

El UI Automation Framework de Microsoft parece en parte el complemento perfecto para iniciar e interactuar programáticamente con la aplicación en una configuración de prueba. Sin embargo, he luchado para encontrar referencias sólidas para muestras y experiencias con la tecnología, los artículos y las pequeñas muestras disponibles en MSDN no son suficientes para convencerme de que es una opción sólida.

Entonces, ¿alguien tiene experiencias del mundo real utilizando el Marco de automatización de la interfaz de usuario en su suite de pruebas? ¿Cuáles son las advertencias y las trampas? Cualquier mejor práctica cuando se escriben scripts de pruebas, ¿puede "grabar y reproducir" en un formato de secuencia de comandos, cuánto debe facilitar las pruebas desde la aplicación, cómo lo incorporó en la compilación automática? ¿Deberíamos mirar en otra dirección que el Marco de Automatización de UI?

Siéntase libre de publicar las experiencias que aquí o enlace a algunas buenas referencias que podría haber perdido

+1

Esta pregunta no debe ser cerrado debido a que las respuestas proporcionan información basada en la experiencia real con las tecnologías. Como la automatización de pruebas es un tema candente, apuesto a que esta información es valiosa para muchas personas. –

Respuesta

7

donde trabajo acabamos de empezar a evaluar algunas herramientas de prueba para nuestro sistema. Nos encontramos con una herramienta llamada white, que utiliza el Marco de automatización de la interfaz de usuario. Tenga en cuenta que el blanco también tiene una función de registro, aunque creo que tiene aspecto de problemas y aún se está desarrollando.

lo que intentamos haciendo era que establecimos para parecerse a las pruebas unitarias es decir [TestFixture] [Test] etc. continuación, hemos sido capaces de ejecutar a través de nunit al mismo tiempo que las pruebas unitarias.

Hemos encontrado que puede ser difícil acceder a algunos de los componentes dentro de la ventana, pero no hemos tenido mucha oportunidad para investigar por qué.

Si no le importa pagar por el software, le recomendaría TestComplete.

+0

TestComplete es una herramienta de clic y reproducción, mientras que TestStack.White es un framework de C#. Estas son soluciones completamente diferentes: la primera se dirige a probadores y la segunda a programadores. –

6

Estoy en el medio de hacer la automatización de la interfaz de usuario de una aplicación WPF en el trabajo. Estoy usando White and IronRuby y funciona genial. He escrito cómo lo he hecho aquí: http://www.natontesting.com/2010/02/17/how-to-test-a-wpf-app-using-ironruby-and-white/

+0

Escritura realmente agradable, Nat. Pulgares arriba de mí –

+1

Wrestling with White se volvió demasiado doloroso, así que escribí bewildr (https://github.com/natritmeyer/bewildr). ¡Está en uso en la BBC y funciona de maravilla! –

2

principio fuimos con blanco, y luego se alejó de ella. Intenta ser genérico y abstracto sobre la API Win32, Winforms, aplicaciones Java y la API de automatización de la interfaz de usuario de MS. La API de automatización de la interfaz de usuario de MS también intenta ser genérica y abstracta sobre win32 api y winforms y WPF, por lo que terminas en un escenario de "denominador común más bajo de denominador común más bajo".

El resultado de esto fue que la API de búsqueda de elementos blancos simplemente no era lo suficientemente flexible como para encontrar varios elementos de UI que necesitábamos encontrar y no exponía los elementos del marco de automatización de la interfaz de usuario subyacentes para que lo hagamos algo útil con eso.

Terminamos yendo con un marco de clase-de-cosecha propia; Usamos el framework MS UIAutomation directamente, pero tenemos métodos de extensión y clases de ayuda para manejar los escenarios que no aborda. (Entrada de teclado y mouse, principalmente).

Nota: nuestros scripts de prueba y el framework nacional utilizan IronRuby. La capacidad de Ruby para agregar métodos a las clases existentes y su sintaxis flexible (combinada con method_missing) son asombrosas para este tipo de cosas.

+1

Edwards, ¿por qué no probó la API Microsoft.VisualStudio.TestTools.UITesting (una que se usa en la prueba de UI codificada detrás de la escena)? Lo estoy preguntando porque acabo de cambiar a este de UIA. – atiyar

+0

@Nero: Tres razones. En primer lugar, no existía hasta el lanzamiento de visual studio 2010. En segundo lugar, debe comprar la versión Premium de VS en lugar de la estándar, que es un gran salto en el precio, especialmente aquí en Nueva Zelanda. En tercer lugar, eché un vistazo a las cosas de la prueba de interfaz de usuario codificadas en el estudio visual, y no me gustó para nada. Era demasiado complejo, no fácil de usar y difícil de depurar. El código API subyacente en sí mismo puede ser mejor que el material que visual studio genera, pero no lo vi en ese momento, ya que no me di cuenta de que podía usarlo de forma independiente –