banner

4.1. ¿Pruebas de GUI, o pruebas basadas en la GUI?


¿Son las pruebas de GUI lo mismo que las pruebas basadas en GUI? No, hay diferencias. Aunque se suele usar ambos términos para referirse al mismo tipo de pruebas, en realidad corresponden o dos tipos diferentes. Las prueba de GUI, UI, o interfaz de usuario buscan validar el comportamiento de la interfaz. Es decir las pruebas de GUI se orientan a detectar errores propios de la interfaz gráfica tales como problemas en el layout, lógica de presentación, estilos, responsividad, recursos, ortografía, etc. Las pruebas basadas en GUI buscan validar el comportamiento del sistema a través de la GUI.

Ambas, pruebas de GUI y pruebas basadas en GUI, necesitan (i) ejecutar eventos de forma manual o automática, simulando el uso de la aplicación y (2) reconocer el estado de la GUI y detectar un error en esta. En el caso de pruebas basadas en GUI también es necesario detectar la ocurrencia de un error en las otras capas de la aplicación.

Ejecutar eventos sobre la GUI, en el caso de pruebas automáticas, requiere de una API o una utilidad que proporcione la funcionalidad de ejecución de eventos sobre la interfaz. Por ejemplo, en el caso de aplicaciones Android, se cuenta con APIs como Espresso o UIAutomator que tienen métodos para ejecutar acciones como tap/click, scroll, y digitar texto. Del lado de las utilidades, el SDK de Android (instalado en las máquinas de desarrollo) permite invocar de forma remota, la ejecución del comando input (del sistema operativo Android del dispositivo) que permite generar las mismas acciones proporcionadas por la PAI. La invocavión de este comando se hace a través del android debug bridge del SDK. Por ejemplo, si de forma remota quiero hacer tap en la posición {60, 80} de la pantalla del dispositivo, el comando a ejecutar (en la máquina de desarrollo) es adb shell input tap 60 80. Si se quiere ingresar el texto "hola" el comando es adb shell input text "hola".

El comando input permite también ejecutar botones del dispositivo, ejecutar long taps, y swipes. En google pueden buscar "adb shell input" y encontrarán múltiples páginas que describen como usar el comando.

En el caso de aplicaciones web, JavaScript y los frameworks o librerías construidas sobre JS se pueden usar para ejecutar eventos programáticamente sobre la UI. Sin embargo, la ejecución requiere de un mecanismo de identificación de los componentes gráficos a ejecutar. Aquí está la diferencia entre las utilidades de bajo nivel que ejecutan eventos sobre coordenadas específicas (como en el caso de adb shell input), y las librerías/frameworks que hacen uso de selectores/localizadores. Los selectores permiten identificar un componente gráfico de forma directa con un id (como en el caso de Espresso) o través de tipos de componente o clase de estilo aplicada al componente.





results matching ""

    No results matching ""