Testarea interfeței Android și iOS cu Calabash

Publicat: 2022-03-11

Testarea este o parte esențială a oricărui proces de dezvoltare a aplicațiilor mobile. Indiferent dacă automatizați astfel de teste sau nu, niciun dezvoltator sănătos nu consideră că munca lor este făcută decât dacă și-a testat aplicația.

O aplicație bine testată trece de obicei prin mai mulți pași de testare: testare unitară, testare de integrare, testare de acceptare și așa mai departe. Pe măsură ce aplicația dvs. crește, importanța testării crește și automatizarea testării devine o necesitate.

Testare de acceptare Calabash pentru Android și iOS

În timp ce alte platforme, cum ar fi web-ul, au avansat semnificativ în ceea ce privește mecanismele și cadrele de testare, domeniul mobil nu rămâne în urmă. În acest articol, veți afla cum puteți utiliza Calabash pentru a automatiza interfața de utilizare pentru aplicațiile dvs. Android și iOS, folosind instrucțiuni în limba engleză simplă și pentru a face testarea de acceptare cât mai simplă posibil.

Despre ce este testarea UI?

Dacă ți-ai testat aplicațiile manual, probabil că pierzi o mare parte din timp efectuând aceleași sarcini din nou și din nou. Faceți câteva modificări codului, construiți aplicația, o rulați pe un dispozitiv sau un emulator și vă jucați cu aplicația pentru a vă da seama dacă funcționează conform așteptărilor.

Prin automatizarea testării UI, puteți efectua aceiași pași manuali automat. Dacă aplicația dvs. are o dimensiune decentă, acest lucru vă poate economisi mult timp și, de asemenea, vă poate salva aplicația de a fi plină de erori jenante, în special cele de regresie.

„Sună grozav”, spui, dar cum o faci pentru aplicația ta pentru Android sau iOS?

Cadre de testare a UI pentru Android și iOS

Dacă citiți documentația oficială pentru Android și iOS, ei vă sugerează să scrieți și să rulați teste UI în IDE-urile lor oficiale. Pentru Android, este Android Studio, iar pentru iOS, este Xcode.

Documentația oficială merge până la a recomanda cadre specifice pentru testare. Documentația oficială Android acoperă câteva subiecte despre Espresso, cadrul de testare Android UI. În mod similar, Apple sugerează utilizarea cadrului XCTest.

Și dacă aveți de gând să lucrați serios la testele UI, este posibil să urmați aceste sugestii, ceea ce are sens, deoarece Espresso este întreținut de Google și face parte din Android Support Repository. Este foarte probabil ca Espresso să suporte toate noile funcții pe care Google le va introduce pentru Android în viitor. Ai putea spune același lucru despre cadrul XCTest pentru iOS.

Cu toate acestea, merită să rețineți că, în ciuda numeroaselor beneficii ale testării automate, mulți dezvoltatori pur și simplu nu le scriu deloc.

Fiecare dezvoltator care este conștient de automatizările de testare, în adâncul interiorului, știe că este o idee grozavă. Dar, când vine vorba de a se așeza și de a scrie aceste teste, mulți dezvoltatori încep să se întrebe dacă merită timpul lor, deoarece „atingerea butonului” manual se dovedește a fi o operațiune mult mai rapidă decât scrierea unui cod care va „atinge acest buton”. automat. Uneori, nici clienții și managerii, care așteaptă cu nerăbdare să încerce aplicația, nu ajută.

Mulți dezvoltatori, în acel moment, decid că este mai bine să continue să lucreze la noi caracteristici ale aplicației, decât să scrie teste automate de UI pentru cele existente.

Când aplicația crește, devine din ce în ce mai consumator de timp să „atingeți aceste butoane” manual de fiecare dată când actualizați aplicația.

Dar dacă ar exista un cadru care să facă testarea UI mai ușoară și să nu îți ofere nicio scuză pentru a nu scrie teste UI pentru aplicațiile tale?

Faceți cunoștință cu Calabash.

Calabash: Test de acceptare automat pentru aplicațiile mobile

Cu aproximativ un an în urmă, am început să caut un cadru de testare care să fie ușor de utilizat pentru cei care nu sunt dezvoltatori de software. Și atunci am găsit Calabash.

Acest cadru de testare open source, dezvoltat și întreținut de echipa Xamarin, funcționează atât pentru Android, cât și pentru iOS. Vă permite să scrieți și să executați teste de acceptare automate pentru aplicațiile mobile.

Testele de acceptare sunt în general cele care urmează după testele de sistem care determină dacă aplicația dvs. îndeplinește cerințele de afaceri. Având în vedere că funcționează la nivel de UI, acest lucru funcționează bine ca alegerea noastră de cadru de automatizare a testării UI.

Calabash poate interacționa cu aplicația dvs. la fel ca Espresso sau XCTest. Cu toate acestea, ceea ce face din Calabash o alegere excelentă aici este sprijinul său pentru Castravete.

Cucumber este un instrument care poate rula teste automate scrise în limba engleză simplă (dacă doriți, îl puteți ajusta pentru a utiliza orice alt limbaj simplu). Deci, pentru a scrie teste automate pe Cucumber, testatorul nu trebuie să cunoască Java, Objective-C sau orice alt limbaj de programare.

Ce face ca Calabash să bifeze?

Cadrul Calabash este format din biblioteci care pot interacționa cu aplicațiile Android și iOS. Poate fi rulat pe dispozitive reale. Deci poate face lucruri pe care testerul le face manual.

Există două proiecte diferite pe GitHub care fac posibilă Calabash:

  • calabash-android - pentru Android

  • calabash-ios - pentru iOS

Calabash poate funcționa cu orice cadru de testare bazat pe Ruby. În acest articol, vom acoperi Castravetele - cel mai popular și convenabil mod de a scrie teste pentru Calabash.

Înainte de a continua, dacă doriți să încercați Calabash în timp ce urmați restul articolului, asigurați-vă că aveți Ruby instalat pe computer. Puteți găsi instrucțiuni detaliate de instalare aici.

Apoi, instalați Calabash pentru platforma dvs. preferată, urmând linkurile GitHub de mai sus.

Scrierea primului test pe Calabash

Scrierea testelor pe Calabash este destul de ușoară. Să vedem cum arată un test simplu pentru o aplicație iOS:

 Feature: User Login Scenario: Unsuccessful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "tstuser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Username you entered is incorrect" Scenario: Successful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "testeruser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Hey testeruser!"

Aici, o aplicație este testată cu un nume de utilizator și o parolă incorecte, apoi este testată cu un nume de utilizator și o parolă corecte. Testul se așteaptă ca aplicația să eșueze autentificarea pentru primul scenariu, dar să reușească în al doilea.

Puteți crea câte scenarii este nevoie și tot ce trebuie să faceți este să descompuneți pașii/instrucțiunile în propoziții simple în engleză. La fel cum ai scrie o poveste!

Oricine știe despre dezvoltarea comportamentală (BDD) se va trezi deja familiarizat cu acest lucru.

Cum funcționează Calabash?

Pentru a vedea ce se întâmplă în spatele pașilor pe care îi folosește testerul, puteți deschide proiectul pe GitHub și verifica următorul fișier:

 calabash-cucumber/features/step_definitions/calabash_steps.rb

Să vedem o definiție a următorului pas:

 When I enter "testeruser" into the "Username" field
 Then /^I enter "([^\"]*)" into the "([^\"]*)" field$/ do |text_to_type, field_name| touch("textField marked: '#{field_name}'") wait_for_keyboard keyboard_enter_text text_to_type sleep(STEP_PAUSE) end

Acest mic fragment de cod Ruby caută un anumit câmp, îl atinge, așteaptă să apară tastatura, tastează textul din variabila text_to_type și așteaptă puțin înainte de a trece la pasul următor.

Primul cuvânt al pasului poate fi „Dat”, „Când”, „Atunci”, „Și” sau „Dar”. Nu contează ce cuvânt cheie vei folosi. Puteți folosi oricare dintre ele pentru a face povestea mai clară.

Cum să adăugați pași personalizați

Dacă aveți nevoie de un pas care nu este încă implementat în Calabash, îl puteți scrie singur. Sintaxa este exact aceeași ca și în pașii deja predefiniti.

De exemplu, dacă un tester trebuie să acceseze câmpul de intrare prin substituent, în loc de numele câmpului:

 Then /^I enter "([^\"]*)" into the field with placeholder "([^\"]*)"$/ do |text_to_type, placeholder| touch("textField placeholder:'#{placeholder}'") wait_for_keyboard() keyboard_enter_text text_to_type sleep(STEP_PAUSE) end

Definiția acestui pas este aproape aceeași cu cea anterioară, dar accesați câmpul prin substituent în loc de numele câmpului. Având în vedere cum arată aplicația dvs., acest lucru poate face lucrurile și mai ușoare pentru tester.

Și este ușor și pentru dezvoltator. Dezvoltatorul implementează pasul o dată, iar apoi testatorul îl folosește ori de câte ori are nevoie. Mai mult, nu trebuie să cunoașteți o mulțime de Ruby pentru a vă implementa propriii pași personalizați.

Puteți găsi funcțiile Ruby pe care le puteți utiliza aici:

http://www.rubydoc.info/gems/calabash-cucumber/Calabash/Cucumber

Xamarin Test Cloud

Mai există o provocare atunci când testați aplicațiile mobile. Ar trebui să le testați pe cât mai multe dispozitive posibil, pentru că există atât de multe dispozitive și atât de multe versiuni de sistem de operare.

Aici este locul în care Xamarin Test Cloud ajută foarte mult. Există aproximativ 2.000 de dispozitive reale în cloud și vestea bună este că acceptă testele Calabash.

Aceleași teste Calabash care v-au ajutat să economisiți timp, evitându-vă să faceți lucrări repetitive, pot fi acum folosite pentru a vă testa aplicația pe multe dispozitive reale.

Începeți să scrieți teste UI

Indiferent dacă Calabash este soluția de testare de care are nevoie aplicația dvs., cu avantajele pe care le aduce, nu lasă loc pentru scuze atunci când vine vorba de scrierea de teste automate de UI pentru aplicațiile dvs. mobile. Calabash poate fi insuficient dacă aplicația dvs. se bazează în mare măsură pe anumite caracteristici ale dispozitivului (de exemplu, camera), dar totuși face ca testele pentru majoritatea aplicațiilor să fie mult mai ușoare.