¿Cómo podría hacer pruebas automáticas para GUI?

8

¿Cómo puedo comprobar automáticamente qué se ve y qué no? O al menos, ¿cómo puedo organizar algunas pruebas parcialmente automáticas?

IDE: Eclipse (podría usar también IntelliJ Idea si es necesario)

Herramienta de prueba: Junit (de nuevo, podría usar otra cosa si se aconseja, pero mejor si es gratis)

Sistema operativo de la aplicación: Android

SO del desarrollador: Linux (podría cambiar para MAC o Windows (de mala gana))

Lenguaje: Java

Todo el trabajo va en el dispositivo externo. Sin emulador

La aplicación es una envoltura de usuario para el reproductor de TV de firmware, denominada actividad externa. Entonces, el 70% del código es para GUI. (El otro 30% habla a los servidores y proporciona información a la GUI)

Antes de programar la función de prueba, no uso ninguna herramienta. Ahora tengo una herramienta a mano. Pero no puedo imaginar cómo podría probar la interfaz de usuario, con la herramienta o sin ella. (Dicho estrictamente, con las conexiones a Internet también tengo problemas, pero probablemente los dejaré para la otra pregunta). La respuesta no tiene que depender demasiado de la plataforma, los principios e ideas también ayudarán.

Por supuesto, es bueno verificarlo, es algún elemento en otro y está verificado o no. Algunos controles de regresión serían buenos para eso. Pero también debo estar seguro de que el elemento mencionado no está cortado por otros elementos y parpadea como pedí por animación.

Los consejos aquí: /software/63245/is-there-a-tool-to-test-java-ui no ayudarán, solo hay herramientas, no principios, y ninguno de los Las herramientas podrían ayudar en mi situación.

Gangnus
fuente
¿consideró preguntar en sqa.stackexchange.com ? Por cierto, ¿qué está disponible para capturar en las pruebas: objetos de GUI, píxeles de pantalla, eventos de dispositivo de teclado / puntero?
mosquito
Gracias. No sabía sobre ese servidor aquí. Tal vez, más tarde algún moderador moverá mi pregunta allí. (Por cierto, no entiendo por qué la prueba necesita su propio servidor). En cuanto a su otra oración, creo, es como de costumbre en Android: ¿los objetos, sí, los píxeles, pueden ser, a través de algunos trucos? - No sé, eventos - sí. ¿Puede Junit leer píxeles de la interfaz gráfica de usuario?
Gangnus
Una gran herramienta de prueba automatizada de código abierto para Android es Robotium .
Corey D

Respuestas:

5

La mayoría de las veces, el mejor consejo para las pruebas automáticas de GUI es desarrollar su aplicación en un estilo Modelo-Vista-Presentador y escribir sus pruebas contra el Presentador. El tema se discute aquí:

http://danbunea.blogspot.com/2005/11/model-view-presenter-is-testing_27.html

(hay más enlaces al final de ese artículo).

Por supuesto, eso podría no ayudarlo a "verificar automáticamente lo que se ve y lo que no", pero puede ayudarlo a probar al máximo la lógica de la interfaz de usuario.

Doc Brown
fuente
Gracias por el artículo. El problema es que, en mi aplicación, por el contrario, la vista es la parte más complicada, y el presentador y el modelo son lo suficientemente primitivos, y es la parte de la vista la que necesito probar. Quiero exactamente como lo he dicho, "verificar automáticamente lo que se ve y lo que no" O en parte automáticamente.
Gangnus
+1, me ha dirigido a otra pregunta ( programmers.stackexchange.com/questions/133134/… ) :-) Estaré encantado de leer su opinión al respecto.
Gangnus
1

Existen marcos de prueba que le permiten interactuar directamente con la pantalla; En mi trabajo utilizamos IBM Rational Functional Tester, que nos permite hacer clic en botones, etc., así como las pruebas programáticas habituales. Obviamente, eso no es gratis, pero buscarlo en wikipedia proporciona esta lista de alternativas. Como estás viendo Java, está CubicTest , que es un complemento de Eclipse; Las alternativas incluyen Maveryx y Abbot .

Yamikuronue
fuente
+1 por tu intento. Pero estas herramientas no funcionan para Android, como veo.
Gangnus
@Gangnus Drat, esperaba que al menos uno lo hiciera. No estoy familiarizado con el desarrollo específico de Android, desafortunadamente
Yamikuronue
Por desgracia, tengo un problema realmente difícil: mi aplicación se está depurando no en el emulador, es decir, en una PC, sino en el dispositivo externo Andoid. Por lo tanto, estoy casi seguro de que no hay una herramienta lista para probarlo. Debería organizar el proceso yo mismo. Pero cómo ... qué tengo que verificar, cuáles son los problemas de hacer tales pruebas, cómo se organizan las pruebas regresivas ... Todos me dan enlaces a herramientas, pero necesito enlaces a pensamientos. Por supuesto, tomaría una herramienta con mucho gusto, pero no hay una ... Qué mundo tan triste ... :-)
Gangnus
@Gangnus Mi compañero de trabajo me informa que incluso el emulador dificulta la depuración de la GUI a menos que tenga algo diseñado para ello, ya que es una capa adicional para tratar. En cuanto al modelado de las pruebas, utilizamos una herramienta para crear diagramas de flujo que describen la ruta a través del programa; Creo que nuestra herramienta está hecha internamente, pero tiene la capacidad de generar listas de todos los recorridos posibles del diagrama de flujo (que se convierten en nuestros scripts de prueba), lo que suena como una característica que debería poder encontrar fácilmente o hacerlo usted mismo
Yamikuronue
0

Yo uso testcomplete. Es la herramienta más completa que he usado para automatizar las pruebas de GUI. http://smartbear.com/products/qa-tools/automated-testing/ échales un vistazo. Estoy realmente seguro de que será una buena opción para ti y es compatible con Java.

Jaspreet Chahal
fuente
Gracias, pero es: a) Windows b) no para Android c) no es gratis. Podría superar "c" e incluso "a", pero "b" es una lástima.
Gangnus
-2

He estado usando https://marketplace.atlassian.com/plugins/com.thed.zephyr.je/cloud/overview por un tiempo. Tiene complementos como ZAPI que ayudan a automatizar las pruebas.

Una sanguijuela
fuente
1
Las respuestas que son esencialmente "solo enlace" no son muy útiles. Ahora, si agregó ejemplos de cómo los complementos abordan la pregunta del OP, podría hacer que esta respuesta sea útil.
Jay Elston el