tools test source open framework engineer automatization user-interface testing automation

user-interface - framework - testing tools open source



Prueba automatizada de GUI (6)

Hay muchas más alternativas (de código abierto) si está probando un producto web. Para un producto de escritorio, algunas herramientas populares de automatización de GUI de escritorio de propósito general a continuación (sin ningún orden en particular). He trabajado con todo esto personalmente, y todos hacen el trabajo. Si opta por ir con una herramienta de proveedor, obtenga los POC para los que está considerando y tome la decisión según la herramienta que mejor se adapte a la compañía en general. Una herramienta puede ser una mejor opción para una aplicación en particular, pero puede haber otros proyectos / aplicaciones para considerar.

  • QuickTest Pro (sucesor de HP en WinRunner)
  • Rational Functional Tester (sucesor de IBM de Robot)
  • TestPartner

Esta pregunta no se trata de pruebas unitarias. Y es para un producto de escritorio.

Se trata de probar la interfaz gráfica de usuario y probar que se ingresen las cosas correctas en el cuadro de texto correcto en el momento correcto.

Una empresa en la que solía trabajar usaba WinRunner (departamento diferente, así que no sé mucho más que eso), pero HP lo ha cerrado ahora pero a ellos no parece importarles si te quedas con HP o te vas a otro lado. No puedes leer sobre el producto hasta que te hayas registrado, lo cual es molesto.

La herramienta debe funcionar con MFC (no negociable) y la herramienta ideal también ...

  • ser automatizado
  • ser guionizable
  • trabaje con diferentes resoluciones de pantalla automáticamente.
  • ser capaz de ''espiar'' cuadros de texto estáticos individuales, etc.
  • Lo suficientemente intuitivo para que los no programadores puedan crear las secuencias de comandos.
  • tener herramientas de informes, incluido el correo electrónico de usuarios individuales.

¿Qué hacen los demás usuarios de SO para las pruebas automatizadas de GUI?


Las aplicaciones de escritorio o web tienen el mismo patrón de prueba aquí (he trabajado en ambas).

Coloque la menor lógica posible en la interfaz de usuario y pruebe todo lo que está debajo. Entonces dices, ¿pero qué pasa si quiero probar que tal o cual suceda cuando se hace clic en un botón? El método que se llama cuando se hace clic en ese botón debe llamar a otra clase que realmente piense.

Se podría decir, pero estoy usando algunas clases / métodos estáticos que solo pueden existir en mi interfaz de usuario, envolverlos con un adaptador y utilizar esa interfaz para que el código sea comprobable.

Las partes de sus pruebas GUI que desea automatizar deben estar automatizadas debajo de la IU. Hay partes de su GUI que no puede automatizar. Verificando para asegurarse de que las cosas "se ven bien", o probando que puedes ver ciertos elementos, etc. Todo eso es lo que tus humanos deberían estar haciendo. Asegurándose de que los eventos se activan correctamente, y de que los valores se devuelven de manera adecuada desde sus objetos comerciales, son todas las pruebas unitarias.

Puedo ver en su pregunta que ya ha decidido que necesita un analizador de GUI automático, pero esa no es la herramienta adecuada para este trabajo. Si decides usar eso, estás tratando de encontrar la mejor manera de hacer lo incorrecto.

Si crees que no se trata de pruebas unitarias porque estás probando interacciones GUI, entonces puedo garantizar que no estás realizando pruebas unitarias lo suficientemente cerca de tu UI. Si lo fuera, sentiría que la mayor parte de lo que probaría era redundante.

Si no está de acuerdo conmigo, publique algunos motivos y lo solucionaremos.


Usamos el marco SAFS para Rational Robot (RRAFS). También hay implementaciones de SAFS para WinRunner (WRAFS) y parece que tienen una nueva implementación de "Pruebas basadas en imágenes", con la que no estoy familiarizado.

Este marco hace un buen trabajo al separar la implementación de UI de los scripts de prueba. Probé cuatro lanzamientos de una aplicación web desarrollada por dos equipos diferentes (un equipo que usa ASP clásico y otro que usa ASP.NET) y solo tuve que cambiar el mapa de aplicaciones de mis objetos de interfaz de usuario, las pruebas en sí mismas no necesitaban cambio.

Dicho esto, el lenguaje del marco es engorroso y requiere acostumbrarse. No es muy robusto, en términos de construcciones de lenguaje, pero con un poco de esfuerzo puede hacer lo que necesite. Es algo así como "programar" en el lenguaje de lotes de Windows, pero para las pruebas;)

Para abordar sus requisitos individuales arriba:

1) La herramienta debe funcionar con MFC (no negociable). El marco SAFS usa una herramienta de "grabación de reproducción" de terceros para conducir las pruebas, como Rational Robot o Mercury WinRunner. Si esa herramienta puede interactuar con aplicaciones MFC, entonces el marco puede. No sé cómo la implementación de "Pruebas basadas en imágenes" conduce las pruebas, pero supongo que también puede funcionar con MFC.

2) ser automatizado El marco SAFS se integra con el marco STAF , que le permitirá automatizar la ejecución de sus pruebas. Tengo una prueba de concepto de prueba que usa STAF para iniciar una imagen de máquina virtual desde un conjunto de imágenes, instalar la aplicación bajo prueba, ejecutar la prueba RRAFS y colocar los resultados en un servidor web para que otros puedan acceder.

3) ser guionizable Sí, pero como se mencionó, no es el lenguaje de programación más robusto. Escribí un complemento de Excel que nuestros evaluadores usan para escribir sus pruebas que simplifica un poco las cosas.

4) trabajar con diferentes resoluciones de pantalla de forma automática. Sí, ya que se ve "oculto" en los objetos de la interfaz de usuario y no en la pantalla. Excepto por tal vez la opción "Prueba basada en imágenes" ...

5) ser capaz de ''espiar'' cuadros de texto estáticos individuales, etc. Sí, puede esperar a que aparezca un objeto UI, desaparecer, tener un valor, cambiar un valor, etc.

6) lo suficientemente intuitivo para que los no programadores puedan crear los scripts. Con un poco de entrenamiento. Hemos tenido un éxito limitado. Algunas personas de QA pueden escribir las pruebas, algunas luchan.

7) tienen herramientas de informes, incluido el correo electrónico de usuarios individuales. Sí, utilizando el marco STAF puede publicar resultados en un servidor web, enviar correos electrónicos, etc.


Procedente de un fuerte historial de Mercury / HP, recomendaría altamente usar QuickTest Professional para su prueba GUI. Tiene la misma funcionalidad que WinRunner, pero sin mucho código. Se pueden realizar comprobaciones sencillas de GUI a través de la interfaz QTP con un código VB personalizado mínimo, si corresponde. Las verificaciones de texto junto a las casillas se pueden hacer con simples comparaciones usando la hoja de datos en QTP.

Si está acostumbrado a WinRunner, y conoce VBScript (no tanto TSL), entonces definitivamente miraría a QTP.

En cuanto a sus otros requisitos, QTP también tiene la función Spy, como WinRunner, que enumerará todas las propiedades y acciones que puede realizar en los objetos. Y en cuanto a la simplicidad de uso, en mi trabajo anterior, haríamos que los comprobadores de empresas o sistemas crearan simples secuencias de comandos para el humo, luego las tomaría y codificaría para realizar más pruebas en profundidad (valores de datos múltiples, comprobación de errores, etc.). Y en cuanto a la generación de informes, QTP hará informes sencillos de aprobado / no aprobado / advertencia en las etiquetas que ingrese, junto con los datos personalizados que puede ingresar. Por lo tanto, podría usar una declaración de caso para completar sus valores de salida en función de sus resultados. No enviará correo electrónico directamente, pero si se integra con TestDirector / QualityCenter, puede configurar desde allí, junto con la automatización del inicio de sus scripts y la parametrización de datos desde allí (lo que es bueno enviar de vuelta a los evaluadores deben haber rellenado datos sin estar involucrados en el script).

Palmadita



Muchas buenas respuestas aquí, pero quería abordar esta declaración de objetivos, específicamente:

  • lo suficientemente intuitivo para que los no programadores puedan crear los guiones

Puedo entender por qué querrías esto, pero es mucho más difícil de lo que piensas. Si bien puede encontrar cualquier cantidad de herramientas que pretendan facilitar la escritura de scripts, en la práctica, necesitará al menos algunas personas en su equipo de automatización que entiendan la programación. Escribir scripts que sean razonablemente robustos va a involucrar una o más de las llamadas de bucle, si / then / else y subrutina. No es el tipo de cosas que los no programadores van a encontrar intuitivas.

Tenga especial cuidado con la idea de que pueda "grabar" a una persona usando una herramienta, y luego reproducirla para probarla. Ese tipo de "automatización" a menudo es tan frágil que terminará modificando o regrabando el script para casi todos los cambios en el software.