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: