ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 57
Abonament PDF

Appium & Opium - Soluții alternative pentru testare automată

Silviu Lascu
Test Consultant @ Endava



Raul Cocis Mureșan
Senior Automation Tester @ Endava



TESTARE


Știm deja că milioane de oameni din întreaga lumea folosesc telefoane mobile și tablete, iar numărul utilizatorilor este într-o creștere continuă, ceea ce determină și o creștere exponențială în piata aplicatiilor mobile. Companiile dezvoltatoare de aplicatii mobile trebuie să se asigure că produsele livrate sunt de bună calitate și se diferențiază, pentru a avea un feedback cat mai bun din partea utilizatorilor. Acest lucru devine o provocare, având în vedere diversitatea tipurilor de device-uri mobile și a sistemelor de operare. Pentru a asigura o acoperire cât mai largă și eficientă, testarea acestor aplicații trebuie automatizată. De aceea este nevoie de o soluție cât mai generică și care să acopere cât de mult posibil testarea aplicației.

În ultima perioadă, cel mai mare trend în testarea aplicațiilor mobile pe o gamă largă de device-uri și sisteme de operare, este testarea în cloud, care suportă atât testare manuală cât și cea automata. Dar această variantă este și foarte costisitoare, iar de cele mai multe ori bugetul proiectului nu permite această abordare.

Există un număr destul de mare de servicii de testare în Cloud care pot fi folosite pentru testarea automată a aplicațiilor mobile. Amintim printre aceștea Testdroid, SauceLabs, AWS Device Farm, Browserstack. Fiecare provider dispune de sute sau mii de dispozitive mobile începând de la produse low-end și până la telefoane/tablete de top. Detaliile tehnice din spatele acestor soluții sunt diferite de la provider la provider, astfel, testele scrise pentru unul din provideri nu vor fi 100% compatibile cu un alt provider, în cazul în care se dorește schimbarea provider-ului.

Prețurile pentru aceste servicii diferă de la un furnizor la altul sau de la un abonament la altu. Există și abonamente ieftine, care s-ar încadra în bugetul proiectelor, dar acestea nu ofera nici 10% din potențialul unui abonament complet și din testele noastre, s-au dovedit aproape inutilizabile pe termen lung sau pentru o testare eficientă a aplicației. Abonamentele complete oferă multe functionalități care ar putea asigura testarea eficientă, dar prețul acestora este undeva de la câteva sute de dolari pe lună până la câteva mii pentru un abonament enterprise.

Din cauza acestor costuri foarte mari, ne-am decis să căutăm o soluție proprie, prin care să înlocuim, pe cât posibil, necesitatea testării în cloud. Evident acest lucru nu este posibil 100%. Pentru o soluție mai complexă și mai eficientă, asemănătoare soluțiilor enterprise existente, e nevoie de o investiție mare și consistentă de timp și de resurse, iar testarea pe emulatoare nu este deloc relevantă pentru a avea rezultate reale (device-urile reale se comportă diferit față de emulatoare, iar viteza de execuție diferă considerabil).

Planul nostru a fost să încercăm să găsim o soliție alternativă practică, prin care să asigurăm un serviciu de testare suficient de bun și pe un număr diferit de device-uri. Evident, nu am reinventat roata, și nici nu am încercat acest lucru. Soluția propusă necesită în continuare utilizarea de device-uri fizice, dar nu mai este nevoie de platforma de cloud care impune un anumit mod de a scrie și executa testele, nu mai este nevoie ca device-urile să se afle fizic în locația unde este proiectul si nici nu este nevoie să trimitem aplicațiile testate unui 3rd party. Totul se testeză în rețeaua internă, fără a avea probleme de securitate.

Soluția Aleasă

Pentru început, am încercat să ne axăm pe cele mai populare sisteme de operare mobile: Android și iOS. Am pornit de la o idee mică, să avem un framework generic, pe care să îl putem folosi ca bază la testarea aplicațiilor mobile.

Din momentul în care am decis care este gama de device-uri care va avea nevoie de acoperire, ne-am îndreptat atenția spre alegerea unui tool de automatizare. După o perioada de testare a mai multor soluții, am ales Appium.

Ce este Appium?

Appium este un tool open-source, pentru testarea aplicatiilor mobile de tip nativ, hibrid sau web. Este construit și bazat pe Selenium, dar se axează pe testarea aplicațiilor mobile.

  1. Pentru început, am pornit cu construcția unui framework generic, cu care să testăm local aplicații iOS și Android. Am creat un framework generic, folosind JAVA și TestNG, pe care l-am folosit pe câteva proiecte pentru testarea mobilă local (mașina pe care se scriu testele este și mașina care le execută).

  2. Următorul pas a fost să integrăm soluția într-un CI machine, pentru a ne integra în procesul de Continous Integration din cadrul proiectelor.

  3. După ce ne-am asigurat că soluția poate fi integrată în procesul de CI, ne-am îndreptat atenția spre execuția remote a testelor, într-un mod similar cu ceea ce există în serviciile de cloud.

Execuția remote

Componente

Pentru a putea executa remote testele s-a creat un serviciu REST alcatuit din 2 componente:

  1. Un server care este deploy-at într-un server web (cu un UI, care afișează lista de device-uri vizibile)

  2. Clienți locali (Agenți), care se rulează pe mașinile unde se vor executa teste (sub forma unor jar-uri)

  3. O componentă Java integrată în framework-ul de testare (care se ocupă de call-urile REST la nivel de teste)

Cum funcționează

Server-ul așteaptă call-uri de la client și afișează pe un UI informația primită.

Clienții caută în mod repetat (o dată/minut) device-urile conectate la mașina pe care rulează și sunt pregatite pentru execuția testelor. Aceștia trimit informatia către server, care la rândul lui afișează informația primită.

Informația constă în identificatorii de locație (IP-uri) cât și caracteristicile device-urilor care sunt pregătite pentru execuția testelor.

La bază, Appium suportă execuție remote, atât timp cât există un server Appium care rulează la URL-ul destinație. Pentru asta, componenta din cadrul testelor apelează serviciul REST, cu un call de genul "este un device cu caracteristicile <…> liber pentru testare?", iar în funcție de răspuns, componenta decide dacă va executa sau nu testele.

În cazul unui răspuns pozitiv, server-ul oferă informațiile necesare pentru execuția testelor componentei Java din framework-ul de testare, iar acesta, la rândul lui, trimite către REST un request de execuție. Serviciul REST pornește server-ul de Appium la IP-ul unde va urma execuția, iar, dupaă ce acest server este pornit, se execută și testele pe device-ul dorit aflat în locatia remote.

După ce execuția se finalizează, componenta Java din framework-ul de testare trimite un call către REST, de oprire a server-ului Appium de la locația remote, iar rezultatele acestei execuții vor fii vizibile local, pe mașina de unde s-a inițiat request-ul de rulare al testelor.

Deocamdată, solutia remote suportă doar un singur sistem de operare mobil și anume Android. Testele au fost executate cu succes în diferite locatii și pe mai multe device-uri simultan.

Ce urmează?

Planul este ca pe viitor să oferim suport și pentru iOS, iar, într-un final toată execuția să fie localizată într-un UI (start execuție -> raport final) astfel eliminând și mașina locală care pornește execuția. Ne dorim să dezvoltăm și să eficientizăm cât mai mult soluțiile, pentru a facilita procesul și a oferi în continuare servicii de calitate.

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects