Calabash Android Tutorial sobre herramientas de prueba

⚡ Resumen inteligente

Calabash es un marco de pruebas de aceptación de código abierto que impulsa acciones reales de la interfaz de usuario en Android y aplicaciones para iOS, utilizando un lenguaje sencillo. Cucumber escenarios respaldados por definiciones de pasos en Ruby y un servidor de pruebas en el dispositivo.

  • 🔸 Definición: Calabash Automatiza las pulsaciones, la introducción de texto y las comprobaciones en aplicaciones móviles nativas e híbridas, tanto en dispositivos reales como en emuladores.
  • ☑️ Pila de lenguajes: Los escenarios se escriben en archivos de características Gherkin, y los métodos correspondientes se encuentran en archivos Ruby dentro de step_definitions.
  • ✅ Fundación BDD: El desarrollo basado en el comportamiento permite que los propietarios de negocios, los desarrolladores y los evaluadores se pongan de acuerdo sobre el comportamiento antes de que exista cualquier script.
  • 🧪 Orden de configuración: Java JDK, luego Ruby, luego Android Studio, luego la gema calabash-android, verificada con un comando de versión.
  • 🛠️ Flujo de ejecución: Firma el APK, crea el servidor de prueba, conecta un dispositivo, consulta los localizadores y, a continuación, ejecuta los archivos de características.
  • 📊 Estado actual: Calabash está archivado y sin mantenimiento, por lo que los nuevos proyectos generalmente eligen Appium, Espresso o XCUITest en su lugar.

Calabash Tutorial de herramienta de prueba para Android demostración Cucumber archivos de características que controlan una aplicación móvil

¿Qué es Calabash?

Calabash es una aceptación de código abierto Pruebas marco que le permite escribir y ejecutar pruebas para iOS y Android Aplicaciones.

Es un marco de interfaz de usuario automatizado que permite escribir pruebas en Ruby utilizando Cucumber.

Calabash Funciona habilitando interacciones automáticas de la interfaz de usuario dentro de una aplicación móvil, como presionar botones, ingresar texto, validar respuestas, etc. Se puede configurar para ejecutarse en diferentes Android y dispositivos iOS, que proporciona comentarios y validaciones en tiempo real.

⚠️ Nota de versión: Microsoft puso fin a sus contribuciones a Calabash después del iOS 11 final y Android 8 lanzamientos y el repositorio calabash-android Ahora se describe a sí mismo como un proyecto que busca un responsable de mantenimiento. El tutorial que aparece a continuación se conserva tal como está escrito, y las alternativas modernas se tratan en la última sección.

Por qué Calabash de mercadeo?

Antes de instalar nada, conviene sopesar los beneficios que ofrece la plataforma frente a los costes de mantenimiento.

Ventajas Desventajas
Ayuda a aumentar el rendimiento/productividad. Se requiere competencia para escribir los scripts de prueba de automatización.
Calidad mejorada o mayor previsibilidad de la calidad. La depuración del script de prueba es un problema importante.
Mejora de la robustez (consistencia) de procesos o productos. El mantenimiento de las pruebas es costoso en el caso de los métodos de reproducción.
Mayor consistencia de la producción y reducción de costos y gastos laborales. El mantenimiento de los archivos de datos de prueba es difícil si el script de prueba prueba más pantallas.

Calabash y TDC

  • Calabash is Desarrollo impulsado por el comportamiento (BDD)Es lo mismo que Desarrollo basado en pruebas (TDD)Pero en lugar de crear pruebas para describir la estructura de las API, se especifica el comportamiento de la aplicación.
  • BDD es un proceso en el que múltiples partes interesadas intervienen para crear un entendimiento común de lo que se debe construir.
  • BDD es útil para crear el software adecuado y diseñarlo desde la perspectiva del propietario de la empresa.

El diagrama a continuación muestra cómo un Calabash El conjunto de herramientas está estructurado en capas, desde el archivo de características legible para la empresa en la parte superior hasta la interacción con el dispositivo en la parte inferior.

Calabash Diagrama de capas BDD que muestra los archivos de características, las definiciones de pasos y la capa de automatización del dispositivo.

Cómo instalar Calabash

Calabash on Windows Necesita cuatro prerrequisitos instalados en orden. Complete cada parte por completo antes de comenzar la siguiente, porque la gema calabash-android comprueba Ruby y el Android SDK durante la instalación.

Parte I) Instalación Java JDK – Consulte esta guía – /instalar-java.html

Parte II) Descargue e instale Ruby.

Paso 1) Descarga Ruby desde el URL https://rubyinstaller.org/downloads

Página de descarga de RubyInstaller que enumera las versiones de Ruby disponibles para Windows

Paso 2) Abra el archivo ejecutable y siga las instrucciones en pantalla. Una vez finalizada la instalación, verá la siguiente pantalla. Haga clic en Finalizar.

Pantalla de finalización del asistente de configuración de Ruby con el botón Finalizar resaltado.

Inicie el símbolo del sistema con Ruby activado Windows 10 y escriba debajo de Comando.

ruby -v

La consola muestra la versión del intérprete instalado, como se indica a continuación.

Símbolo del sistema con Ruby mostrando el número de versión de Ruby instalada.

Parte III) Descargar e instalar Android

Paso 1) Descargar Android Studio at https://developer.android.com/studio

Android Studio Asistente de configuración ejecutándose en Windows durante la instalación

Paso 2) Abra el archivo ejecutable, siga las instrucciones en pantalla y complete la instalación. Haga clic en el botón Finalizar cuando haya terminado.

Android Studio Pantalla de finalización de instalación con el botón de finalización

Parte IV) Instalación Calabash Android

Paso 1) En la consola, escribe gem install calabash-android. La instalación comenzará y tardará un tiempo en completarse.

Salida de la consola mientras se instala la gema calabash-android y sus dependencias.

Paso 2) Una vez finalizada la instalación, escriba calabash-android version

Consola que confirma la versión de la gema calabash-android instalada.

Para lograr autenticidad fue clave trabajar con Calabash

Una vez instalada la gema, la siguiente tarea es localizar la carpeta del framework y comprender la estructura básica con la que viene instalada.

Abra la carpeta “calabash-android-0.9.0”. Se encuentra en la ruta C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Los nombres de las carpetas cambiarán en sincronía con la versión de Ruby/calabash que instale en su máquina.

Abra la carpeta del esqueleto de características. Esté atento a este marco básico.

Calabash Carpeta de esqueleto de características que contiene los directorios de soporte y definiciones de pasos.

  • El archivo *.feature contiene escenarios que vamos a automatizar.
  • El método utilizado por el archivo de características está escrito en el archivo *.rb dentro de la carpeta “step_definitions”.
  • Los métodos comunes, la configuración del entorno, la instalación de aplicaciones y los enlaces deben colocarse dentro de la carpeta "soporte".

Renunciar y construir la aplicación

  • Calabash-Android renuncia *.apk
  • Calabash-Android compilación *.apk

Al firmar, se reemplaza la firma del desarrollador con una clave de depuración para que el servidor de pruebas pueda instrumentar la aplicación, y el paso de compilación genera ese servidor de pruebas, como muestra la salida de la consola a continuación.

Salida de la consola de los comandos de confirmación y compilación de calabash-android que generan un servidor de prueba.

Conecte el dispositivo al sistema/Abra el emulador

Verifique el dispositivo conectado. Escriba el comando

adb devices

Se debe mostrar la lista de dispositivos conectados. Si el dispositivo no aparece, siga los pasos de depuración y emparejamiento USB en el Guía de conexión ADB resuelven la mayoría de los casos.

Listado de comandos de dispositivos adb (adjunto) Android Dispositivo por número de serie

Cómo encontrar el localizador de elementos

  • Abre la consola. Escriba el comando.
    calabash-android console "APK Path"
    start_test_server_in_background
  • El comando anterior ejecuta la aplicación en el dispositivo. Para encontrar el localizador de elementos, utilice el siguiente comando.
    query "*"

Esto mostrará todos los localizadores de elementos en la pantalla actual. Los evaluadores que prefieran un inspector visual pueden verificar la misma jerarquía con uiautomatorviewer.

Calabash La consola imprime el árbol de elementos consultados para la pantalla de la aplicación actual.

Calabash Estructura del proyecto y pasos predefinidos

En lugar de copiar manualmente la carpeta gem, el framework puede generar un proyecto funcional por usted. Ejecutar el generador dentro del directorio de su proyecto crea el estándar Cucumber diseño que cada Calabash suite espera.

calabash-android gen

El árbol generado separa las tres preocupaciones de un conjunto de herramientas BDD:

  • caracteristicas/ — los escenarios de Gherkin, uno .característica Archivo por recorrido del usuario.
  • características/definiciones_de_pasos/ — los métodos Ruby que coinciden con cada línea de Gherkin, incluido el archivo calabash_steps.rb incluido.
  • características/soporte/ — configuración del entorno y los mecanismos que instalan, inician y detienen la aplicación en cada escenario.

El archivo calabash_steps.rb incluido es más importante de lo que parece a simple vista. Contiene un amplio conjunto de pasos predefinidos en inglés, lo que permite crear un primer escenario donde se pueden pulsar botones, introducir texto y realizar comprobaciones sobre cadenas visibles antes de escribir un solo método personalizado. Los pasos personalizados solo son necesarios cuando el proceso requiere más que esas frases predefinidas.

Hay dos configuraciones a nivel de proyecto que conviene conocer desde el principio. Las capturas de pantalla se guardan en el directorio de trabajo actual por defecto, y la variable de entorno SCREENSHOT_PATH las redirige a otra ubicación, lo que mantiene los archivos de compilación ordenados en una máquina compartida. Para interactuar con los diálogos del sistema u otra aplicación, se requiere el backend UIAutomator2, que se inicia con start_test_server_in_background(with_uiautomator: true).

Crear nuevos guiones

Abra el archivo de características y las siguientes líneas

Archivo de características de inicio de sesión abierto en un editor que muestra los pasos del escenario Gherkin

Feature: Login feature
  Scenario: As a valid user I can log into my app
    When I press "Login"
    And I enter my username
    And I enter my password
    Then I see "Welcome to coolest app ever"

Abra el archivo de definición de pasos y defina el método en el archivo *.rb.

Mapa de archivos de definición de pasos de Rubyping una línea Gherkin a un Calabash consulta de elementos

Given /^I am on the login windows$/ do
   wait_for(:timeout =>100) { element_exists("* id:'loginInput;")}
   check_element_exists("* id:'loginInput;")
end

Ejecutar el proyecto de prueba.

Para ejecutar el proyecto de prueba, use el siguiente comando

calabash-android run "APK Path" "feature file Path" --tags "tag name"

Cucumber Imprime cada paso a medida que se ejecuta, y una ejecución exitosa finaliza con los totales de escenario y paso que se muestran aquí.

Calabash Salida de ejecución que muestra cada paso de Gherkin ejecutándose en el dispositivo.

Calabash Informe de resumen de la consola: escenarios superados y recuento de pasos después de la ejecución.

Preguntas frecuentes sobre bancarrota Calabash Errores y cómo solucionarlos

La mayoría de los fallos iniciales se deben a las reglas de empaquetado y permisos de las que depende el servidor de pruebas, no al escenario en sí. La siguiente tabla relaciona los síntomas más frecuentes con su causa documentada.

Síntoma Causa probable y solución
La aplicación se bloquea en el instante en que comienza una prueba. Al APK le falta android.permission.INTERNET, que el servidor de prueba necesita para aceptar comandos. Declare el permiso en AndroidManifest.xml y reconstruir.
Los botones y el texto no responden a los toques. No se ha declarado ninguna versión de targetSdkVersion. Añada una entrada uses-sdk que indique el nivel de SDK con el que se compiló la aplicación.
El servidor de prueba no puede conectarse a la aplicación. El archivo APK no se firmó con la clave de depuración. Ejecute el comando de firma y, a continuación, vuelva a compilar antes de ejecutarlo.
No se muestran dispositivos en tiempo de ejecución. La depuración USB está desactivada o falta el controlador. Primero, compruebe que el número de serie aparece en la salida de adb devices.
Los pasos fallan con un error de paso no definido. La redacción de Gherkin no coincide con ninguna expresión regular en step_definitions. Copie el fragmento sugerido. Cucumber imprime e implementa.

Dos entradas en el manifiesto corrigen las dos primeras filas. Añádalas antes de volver a firmar el APK.

<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:targetSdkVersion="SDK_VERSION" />

Los fallos por tiempo de espera suelen deberse a problemas ambientales más que funcionales. Un emulador lento, un inicio de aplicación en frío o una sincronización en segundo plano pueden provocar que una pantalla supere el tiempo de espera establecido, por lo que conviene aumentar el tiempo de espera antes de modificar un paso que, en realidad, era correcto.

Is Calabash ¿Aún se mantiene? Alternativas para las pruebas móviles modernas

Calabash Ya no se está desarrollando activamente. Microsoft dejó de contribuir después de dar soporte a la versión final de iOS 11 y Android Tras ocho versiones, el proyecto es ahora una base de código abierto archivada sin responsable de mantenimiento. Las suites existentes aún funcionan en dispositivos antiguos, pero se debería comenzar a trabajar en un marco de trabajo compatible.

Marco conceptual Plataforma Mejores adecuados para
Appium Android y iOS Suites multiplataforma en Java, Python, Rubí o JavaGuion y el reemplazo más cercano para un Calabash .
Espresso Android único Pruebas rápidas en proceso escritas en Kotlin o Java por los propios desarrolladores de la aplicación.
Prueba XCUITest solo iOS Nativo Xcode suites, el sucesor respaldado de los retirados Marco de automatización de la interfaz de usuario.
Maestro y Desintoxicación Android y iOS Nuevos proyectos de código abierto orientados a la resistencia a fallos puntuales y a las aplicaciones React Native.

El hábito BDD en sí se transfiere limpiamente. Los archivos de características de Gherkin permanecen exactamente como están, y solo cambian los cuerpos de las definiciones de pasos, porque Cucumber se sitúa encima del controlador en lugar de dentro de él. Los equipos que migran normalmente conservan los archivos de características y reescriben los pasos de Ruby en función de Appiumy reutilizar el mismo prueba móvil matriz de dispositivos y pruebas de automatización oleoducto que ya utilizan.

Preguntas Frecuentes

Sí. Una gema separada, calabash-ios, controlaba las aplicaciones de iOS a través del mismo Ruby y Cucumber capa. Comparte el estado de obsolescencia de la Android gema, por lo que el trabajo actual en iOS se realiza mejor con XCUITest o Appium.

Los modelos de aprendizaje automático ahora reparan automáticamente los localizadores dañados, detectan escenarios inestables comparando el historial de ejecuciones y agrupan los informes de fallos para que los defectos más graves salgan a la luz primero. La decisión sobre qué afirmar sigue recayendo en el evaluador.

Copilot redacta bien las partes repetitivas, como un bloque wait_for.ping una consulta de elementos. No puede conocer los identificadores de elementos de su aplicación, por lo que debe tratar cada paso generado como un borrador para verificarlo con el resultado de una consulta en tiempo real.

Cucumber es el ejecutor BDD genérico que lee Gherkin y llama a los métodos de Ruby. Calabash es la biblioteca de automatización móvil a la que llaman esos métodos. Cucumber decide qué se ejecuta; Calabash Realiza la pulsación, la entrada de texto y la aserción.

Las capturas de pantalla se guardan por defecto en el directorio de trabajo actual, con nombres secuenciales para cada ejecución. Si se configura la variable de entorno SCREENSHOT_PATH antes de la ejecución, se redirigen a una carpeta específica, lo que mantiene los artefactos de integración continua separados del código fuente.

No. Calabash Instrumenta un APK compilado, por eso existe el paso de firma. El acceso al código fuente ayuda a agregar identificadores de elementos estables, pero el framework en sí solo necesita una compilación que se pueda firmar e instrumentar.

Sí. Dado que la ejecución es una sola llamada de línea de comandos, cualquier servidor de compilación puede invocarla después de que se haya producido el APK. Jenkins El proceso normalmente consiste en volver a instalar el APK, iniciar un emulador, ejecutar las funciones etiquetadas y archivar los informes.

Mantenga los archivos de características de Gherkin sin cambios y reescriba solo los cuerpos de definición de pasos contra el Appium cliente. Las consultas de elementos se convierten en estrategias de localización, y los ganchos que instalaron la aplicación se convierten en capacidades deseadas en la configuración del controlador.

Resumir este post con: