Calabash Android Tutorial sugli strumenti di test

⚡ Riepilogo intelligente

Calabash è un framework di test di accettazione open-source che guida azioni reali dell'interfaccia utente su Android e applicazioni iOS, utilizzando un linguaggio semplice Cucumber scenari supportati da definizioni di passaggi Ruby e da un server di test lato dispositivo.

  • 🔸 Definizione: Calabash Automatizza tocchi, immissione di testo e asserzioni su applicazioni mobili native e ibride, sia su dispositivi reali che su emulatori.
  • ☑️ Stack del linguaggio: Gli scenari sono scritti in file di funzionalità Gherkin, mentre i metodi corrispondenti si trovano in file Ruby all'interno di step_definitions.
  • Fondazione BDD: Lo sviluppo guidato dal comportamento (Behavior Driven Development) consente a imprenditori, sviluppatori e tester di concordare sul comportamento prima ancora che esista uno script.
  • 🧪 Ordine di installazione: Java JDK, poi Ruby, poi Android Studio, quindi la gemma calabash-android, verificata con un comando di versione.
  • Flusso di esecuzione: Firma nuovamente l'APK, crea il server di test, collega un dispositivo, interroga i localizzatori e infine esegui i file delle funzionalità.
  • 📊 Stato attuale: Calabash è archiviato e non viene aggiornato, quindi i nuovi progetti generalmente scelgono Appium, Espresso oppure XCUITest in alternativa.

Calabash tutorial dello strumento di test per Android mostra Cucumber file di funzionalità che guidano un'applicazione mobile

Cosa è Calabash?

Calabash è un'accettazione open-source Collaudo framework che ti consente di scrivere ed eseguire test per iOS e Android Apps.

Si tratta di un framework di interfaccia utente automatizzato che consente di scrivere test in Ruby utilizzando Cucumber.

Calabash Funziona abilitando interazioni automatiche dell'interfaccia utente all'interno di un'applicazione mobile, come la pressione di pulsanti, l'inserimento di testo, la convalida delle risposte, ecc. Può essere configurato per funzionare su diversi dispositivi. Android e dispositivi iOS, che forniscono feedback e convalide in tempo reale.

⚠️ Nota sulla versione: Microsoft ha concluso i suoi contributi a Calabash dopo la versione finale di iOS 11 e Android 8 uscite e il repository calabash-android Ora si descrive come un progetto in cerca di un manutentore. La procedura descritta di seguito è conservata così come è stata scritta, mentre le alternative moderne sono trattate nell'ultima sezione.

Perché Calabash Automazione?

Prima di installare qualsiasi cosa, è utile valutare i vantaggi offerti dal framework rispetto ai costi di manutenzione.

Vantaggi Svantaggi
Aiuta ad aumentare il throughput/produttività. È richiesta competenza per scrivere gli script di test di automazione.
Qualità migliorata o maggiore prevedibilità della qualità Il debug dello script di test è un grosso problema.
Maggiore robustezza (coerenza) di processi o prodotti. La manutenzione del test è costosa in caso di metodi di riproduzione.
Maggiore coerenza della produzione e riduzione dei costi e delle spese di manodopera La manutenzione dei file di dati di test risulta difficile se lo script di test testa più schermate

Calabash e BDD

  • Calabash is Sviluppo guidato dal comportamento (BDD)È uguale a Sviluppo guidato dai test (TDD)ma invece di creare test per descrivere la struttura delle API, viene specificato il comportamento dell'applicazione.
  • BDD è un processo in cui più parti interessate contribuiscono a creare una comprensione comune di ciò che deve essere costruito.
  • BDD è utile nella creazione del software giusto e nella progettazione dal punto di vista dell'imprenditore.

Il diagramma sottostante mostra come un Calabash La suite è strutturata a livelli, dal file delle funzionalità leggibile dal punto di vista aziendale in alto fino all'interazione con il dispositivo in basso.

Calabash Diagramma a livelli BDD che mostra i file delle funzionalità, le definizioni dei passaggi e il livello di automazione del dispositivo.

Come installare Calabash

Calabash on Windows richiede l'installazione di quattro prerequisiti in ordine. Completa ogni parte completamente prima di iniziare la successiva, perché la gemma calabash-android controlla Ruby e il Android SDK durante l'installazione.

Parte I) Installazione Java JDK – Fare riferimento a questa guida – /install-java.html

Parte II) Scarica e installa Ruby.

Passaggio 1) Scarica Ruby da URL https://rubyinstaller.org/downloads

Pagina di download di RubyInstaller che elenca le versioni di Ruby disponibili per Windows

Passaggio 2) Apri il file .exe e segui le istruzioni visualizzate sullo schermo. Una volta completata l'installazione, vedrai la schermata seguente. Fai clic su Fine.

Schermata di completamento della procedura guidata di installazione di Ruby con il pulsante Fine evidenziato

Avvia il prompt dei comandi con Ruby attivo Windows 10 e digita sotto Comando.

ruby -v

La console visualizza la versione dell'interprete installato, come mostrato di seguito.

Prompt dei comandi con Ruby che mostra il numero di versione di Ruby installato

Parte III) Scarica e installa Android

Passaggio 1) Scarica Android Studio at https://developer.android.com/studio

Android Studio procedura guidata di configurazione in esecuzione su Windows durante l'installazione

Passaggio 2) Apri il file .exe, segui le istruzioni visualizzate sullo schermo e completa l'installazione. Fai clic sul pulsante Fine al termine.

Android Studio schermata di installazione completata con il pulsante Fine

Parte IV) Installare Calabash Android

Passaggio 1) Nella console digita gem install calabash-android. L'installazione inizierà e richiederà del tempo per essere completata.

Output della console durante l'installazione della gemma calabash-android e delle sue dipendenze

Passaggio 2) Una volta completata l'installazione, digitare calabash-android version

Console che conferma la versione installata della gemma calabash-android.

Lavorando con Calabash

Una volta installata la gemma, il compito successivo è individuare la cartella del framework e comprenderne la struttura di base.

Apri la cartella “calabash-android-0.9.0”. Si trova nel percorso C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. I nomi delle cartelle cambieranno in sincronia con la versione di ruby/calabash che installi sul tuo computer.

Aprire la cartella dello scheletro della funzionalità. Cerca questo quadro di base.

Calabash cartella scheletro funzionalità contenente le directory support e step_definitions

  • Il file *.feature contiene gli scenari che automatizzeremo.
  • Il metodo utilizzato dal file di funzionalità è scritto nel file *.rb all'interno della cartella “step_definitions”.
  • I metodi comuni, la configurazione dell'ambiente, l'installazione dell'app e gli hook devono essere inseriti nella cartella "supporto".

Dimettersi e creare l'app

  • Calabash-rilasciare Android *.apk
  • Calabash- build Android *.apk

La rifirma sostituisce la firma dello sviluppatore con una chiave di debug, consentendo al server di test di strumentare l'applicazione, e la fase di compilazione produce tale server di test, come mostrato nell'output della console riportato di seguito.

Output della console dei comandi calabash-android resign e build che generano un server di test

Collega il dispositivo al sistema/Apri l'emulatore

Controllare il dispositivo collegato. Digita il comando

adb devices

Dovrebbe essere visualizzato l'elenco dei dispositivi collegati. Se il dispositivo non è presente, seguire i passaggi di debug e abbinamento USB in Guida alla connessione ADB Risolve la maggior parte dei casi.

Elenco dei comandi adb devices allegati Android dispositivo tramite numero di serie

Come trovare il localizzatore di elementi

  • Apri la console. Digita il comando.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Il comando soprastante avvia l'app sul dispositivo. Per trovare il localizzatore dell'elemento usa il seguente comando.
    query "*"

Questo visualizzerà tutti i localizzatori degli elementi nella schermata corrente. I tester che preferiscono un ispettore visivo possono verificare la stessa gerarchia con uiautomatorviewer.

Calabash Stampa nella console l'albero degli elementi interrogati per la schermata dell'applicazione corrente

Calabash Struttura del progetto e fasi predefinite

Invece di copiare manualmente la cartella gem, il framework può generare un progetto funzionante per te. Eseguendo il generatore all'interno della directory del tuo progetto si crea lo standard Cucumber layout che ogni Calabash la suite si aspetta.

calabash-android gen

L'albero generato separa le tre problematiche di una suite BDD:

  • Caratteristiche/ — gli scenari Gherkin, uno .caratteristica file per percorso utente.
  • caratteristiche/definizioni_di_passo/ — i metodi Ruby che corrispondono a ciascuna riga di Gherkin, incluso il file calabash_steps.rb incluso.
  • funzionalità/supporto/ — configurazione dell'ambiente e meccanismi di aggancio per installare, avviare e arrestare l'applicazione in ogni scenario.

Il file calabash_steps.rb incluso è più importante di quanto sembri a prima vista. Fornisce un ampio set di passaggi predefiniti in inglese, in modo che un primo scenario possa premere pulsanti, inserire testo ed effettuare asserzioni su stringhe visibili prima ancora di scrivere un singolo metodo personalizzato. I passaggi personalizzati sono necessari solo quando il percorso va oltre queste frasi predefinite.

Due impostazioni a livello di progetto è utile conoscere fin da subito. Gli screenshot vengono salvati per impostazione predefinita nella directory di lavoro corrente, mentre la variabile d'ambiente SCREENSHOT_PATH li reindirizza altrove, mantenendo così gli artefatti di compilazione in ordine su una macchina condivisa. L'interazione con le finestre di dialogo di sistema o con altre applicazioni richiede il backend UIAutomator2, avviato con start_test_server_in_background(with_uiautomator: true).

Creazione di nuovi script

Aprire il file delle funzionalità e le seguenti righe

File della funzionalità di login aperto in un editor che mostra i passaggi dello scenario 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"

Aprire il file di definizione del passaggio e definire il metodo nel file *.rb.

Mappa del file di definizione dei passaggi Rubyping una linea di cetrioli a un Calabash query elemento

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

Eseguire il progetto di prova

Per eseguire il progetto di test, utilizzare il comando seguente

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

Cucumber Il programma stampa ogni passaggio durante l'esecuzione e un'esecuzione corretta termina con lo scenario e i totali dei passaggi mostrati qui.

Calabash output di esecuzione che mostra ogni passaggio di Gherkin eseguito sul dispositivo

Calabash Riepilogo della console che riporta gli scenari superati e il numero di passaggi dopo l'esecuzione

Uncommon Calabash Errori e come risolverli

La maggior parte degli errori al primo avvio deriva dalle regole di packaging e di autorizzazione da cui dipende il server di test, non dallo scenario in sé. La tabella seguente associa i sintomi segnalati più frequentemente alla loro causa documentata.

Sintomo Probabile causa e soluzione
L'applicazione si blocca non appena inizia un test. L'APK non ha il permesso android.permission.INTERNET, necessario al server di test per accettare i comandi. Dichiara il permesso in AndroidManifest.xml e ricompila.
I pulsanti e il testo non rispondono ai tocchi Non è stata dichiarata alcuna targetSdkVersion. Aggiungere una voce uses-sdk che specifichi il livello SDK con cui è stata compilata l'applicazione.
Il server di test non riesce a connettersi all'applicazione. L'APK non è stato firmato nuovamente con la chiave di debug. Eseguire il comando di firma, quindi ricompilare prima di eseguire.
Al momento dell'esecuzione non viene visualizzato alcun dispositivo. Il debug USB è disattivato oppure il driver è mancante. Verificare innanzitutto che il numero di serie compaia nell'output di adb devices.
I passaggi falliscono con un errore di passaggio non definito La formulazione Gherkin non corrisponde ad alcuna espressione regolare in step_definitions. Copia il frammento suggerito Cucumber stampa e implementalo.

Due voci nel file manifest correggono le prime due righe. Aggiungile prima di firmare nuovamente l'APK.

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

I problemi di timeout sono generalmente dovuti a fattori ambientali piuttosto che funzionali. Un emulatore lento, l'avvio a freddo dell'applicazione o una sincronizzazione in background possono far sì che una schermata superi la finestra di attesa, quindi è consigliabile aumentare il timeout prima di riscrivere un passaggio che in realtà era corretto.

Is Calabash Ancora in fase di manutenzione? Alternative per il test di dispositivi mobili moderni

Calabash non è più attivamente sviluppato. Microsoft ha smesso di contribuire dopo aver supportato la versione finale di iOS 11 e Android Dopo 8 release, il progetto è ora un codice sorgente open-source archiviato e privo di un manutentore. Le suite esistenti funzionano ancora su dispositivi meno recenti, ma i nuovi sviluppi dovrebbero essere avviati su un framework supportato.

Contesto Piattaforma più adatto a
Appium Android e iOS Suite multipiattaforma in Java, Python, Rubino o JavaScript e il sostituto più vicino per un Calabash squadra.
Espresso Android esclusivamente Test veloci in-process scritti in Kotlin o Java dagli sviluppatori dell'applicazione stessi.
XCUITest solo iOS Native Xcode suite, il successore supportato del ritirato Framework di automazione dell'interfaccia utente.
Maestro e Detox Android e iOS Progetti open-source più recenti volti a migliorare la resistenza ai bug e le applicazioni React Native.

L'abitudine BDD stessa si trasferisce senza problemi. I file delle funzionalità Gherkin rimangono esattamente come sono e cambiano solo i corpi delle definizioni dei passaggi, perché Cucumber si trova sopra il driver piuttosto che al suo interno. I team che migrano di solito mantengono i file delle funzionalità, riscrivono i passaggi Ruby rispetto a Appiume riutilizzare lo stesso test mobile matrice del dispositivo e test di automazione pipeline che già gestiscono.

DOMANDE FREQUENTI

Sì. Una gemma calabash-ios separata gestiva le applicazioni iOS attraverso lo stesso Ruby e Cucumber livello. Condivide lo stato di deprecazione del Android gemma, quindi il lavoro iOS attuale è meglio servito da XCUITest o Appium.

I modelli di machine learning ora riparano automaticamente i localizzatori danneggiati, segnalano scenari anomali confrontando le cronologie di esecuzione e raggruppano i report di arresto anomalo in modo che i difetti più gravi emergano per primi. La decisione su cosa verificare spetta comunque al tester.

Copilot elabora bene le parti ripetitive, come ad esempio un blocco wait_for wrap.ping una query di elemento. Non può conoscere gli identificatori degli elementi della tua applicazione, quindi considera ogni passaggio generato come una bozza da verificare rispetto al risultato di una query reale.

Cucumber è il runner BDD generico che legge Gherkin e chiama i metodi Ruby. Calabash è la libreria di automazione mobile che quei metodi chiamano. Cucumber decide cosa viene eseguito; Calabash esegue il tocco, l'inserimento del testo e l'asserzione.

Gli screenshot vengono scritti per impostazione predefinita nella directory di lavoro corrente, con un nome sequenziale a ogni esecuzione. Impostando la variabile d'ambiente SCREENSHOT_PATH prima dell'esecuzione, i file vengono reindirizzati a una cartella specifica, mantenendo così gli artefatti dell'integrazione continua separati dal codice sorgente.

No. Calabash strumenta un APK compilato, ed è per questo che esiste il passaggio di firma. L'accesso al codice sorgente consente di aggiungere identificatori di elementi stabili, ma il framework stesso necessita solo di una build che gli sia consentito firmare e strumentare.

Sì. Poiché l'esecuzione è una singola chiamata da riga di comando, qualsiasi server di build può richiamarla dopo la produzione dell'APK. Jenkins Il processo in genere firma l'APK, avvia un emulatore, esegue le funzionalità contrassegnate e archivia i report.

Mantieni invariati i file delle funzionalità Gherkin e riscrivi solo i corpi della definizione dei passaggi rispetto a Appium client. Le query sugli elementi diventano strategie di localizzazione e gli hook che hanno installato l'applicazione diventano funzionalità desiderate nella configurazione del driver.

Riassumi questo post con: