ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
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 84
Abonament PDF

Alegerea corectă a frameworkului de automatizare pentru REST API-uri

Alexandru Belean
Senior Software Engineer @ Cognizant Softvision



PROGRAMARE

Începi să lucrezi la un proiect nou și trebuie să construiești o nouă arhitectură a unui framework de testare automată a REST API-urilor. Dar… ești neinițiat în această "lume" și nu știi de unde să începi. Stai și te întrebi: care este cel mai bun framework și cel mai bun limbaj de programare pe care să-l folosesc?

Exact această întrebare mi-am pus-o și eu. Acum, vă voi prezenta unele frameworkuri din experiența mea, punctând pentru fiecare în parte punctele tari și cele slabe .

Ceea ce trebuie luat în considerare este că toate aceste frameworkuri ce vor fi menționate mai jos, trebuie să intre în consonanță cu _frameworkul customizat al proiectului. Am avut parte de câteva provocări privind integrarea fiecăruia cu soluția noastră customizată. Dar toate aceste provocări pot fi apreciate, de fapt, în cheia frumuseții construirii și implementării unei noi arhitecturi software.

jMeter

Când am început să lucrez la proiectul meu actual, frameworkul de automatizare folosit pentru testarea de REST API-uri a fost jMeter. Fiecare tester sau developer este informat sau ar trebui să fie, în legătură cu avantajele jMeter.

jMeter este o aplicație foarte puternică pentru load/performance/stress/capacity testing. Dar, de asemenea, este și foarte eficientă pe partea de testare a REST API-urilor, deoarece este foarte adaptabil. Alegerea jMeter ca principal framework de testare automată este o alegere bună, dacă proiectul este de mici dimensiuni. În cazul în care lucrezi la un proiect mare, cu foarte multe endpointuri, sau cu foarte multe environmenturi și cu o aplicație de Integrare Continuă pentru rularea testelor, toate acestea pot cauza foarte multe probleme.

De ce ar trebui să folosesc jMeter? Această întrebare are foarte multe răspunsuri. Unul din cele mai convingătoare răspunsuri este că jMeter este chiar ușor de folosit și are Interfață Grafică cu Utilizatorul. De asemenea, jMeter are o comunitate matură, unde poți găsi răspunsuri la toate întrebările tale. Acesta este primul punct forte pentru jMeter.

Alt punct forte pentru jMeter este "modularizarea". Poți să creezi fragmente de teste și să le reutilizezi în alte suite (jMeter Test plans) utilizând "Include module" controller. Utilizând acest stil de creare al frameworkului de testare, se poate parametriza fiecare caz de testat și poți rula oricare caz de testat dorit, nu toate testele în același timp. Dar dacă ai multe module, pot apărea câteva probleme.

Un mare alt avantaj de luat în considerare este că jMeter este open source. Se pot crea pluginuri pentru el. Se poate scrie cod nativ în Java în foarte multe dintre utilitățile puse la dispoziție. Având posibilitatea de a scrie cod Java îți oferă multe oportunități pentru o mai bună tratare a excepțiilor sau afirmațiilor(assertions).

Acum să luăm în considerare și posibilele probleme care pot apărea. Să zicem că avem 5 suite cu câte 100 de cazuri de testat (minim 100 de cereri HTTP) cu cel puțin 2 afirmații (codul răspunsului și corpul răspunsului). Trebuie să rulăm aceste suite pe 5 environmenturi de testat diferite. Rulând fiecare suită în parte, nu cauzează nicio problemă. Problemele apar când le rulezi pe toate 5, în paralel. jMeter folosește foarte multă memorie și procesorul, dacă REST API-urile returnează multe date care trebuie procesate. Se poate observa că suitele rulează foarte, foarte încet. Acesta ar fi primul punct slab pentru jMeter.

Afirmam că având multe module, pot apărea probleme. Dacă imporți 100 de fragmente de test într-o suită, acea suită va încărca fragmentele foarte, foarte încet, din cauză că este folosit procesorul și memoria la capacitate maximă. Un alt efect este încetinirea rulării testelor.

Să facem un rezumat cu punctele forte și punctele slabe. Ca puncte forte reamintim că este ușor de utilizat, are Interfață grafică, rulează cod nativ Java și este modular. Iar ca puncte slabe ar fi consumul mare de procesor și memorie, în cazul în care se rulează foarte multe teste în paralel de pe aceeași mașină.

Pe proiectul nostru foloseam jMeter pentru REST API-uri, dar când numărul de teste a ajuns la ordinul sutelor am început să avem problemele menționate mai sus.

Care a fost următoarea noastră mișcare? Să căutăm o nouă soluție de automatizare, un nou framework.

jUnit

Fiecare inginer software în Java a auzit despre jUnit. Acesta este un framework de testare pentru limbajul de programare Java și este foarte important în dezvoltarea test driven development.

jUnit este foarte puternic, dar și el are avantaje și dezavantaje în folosirea lui ca framework principal pentru testare. Are cereri HTTP implementate direct în framework. Aceasta este o particularitate de necontestat, recunoscută a jUnit-ului, dar care are limitările ei. URL-ul trebuie să fie o variabilă constantă (finală), deci nu mai putem vorbi de parametrizare. Acesta este un foarte mare inconvenient, dar care nu ne- împiedicat să reîncepem căutările.

RobotFramework

De la Java la Python. Aceasta este o cale foarte, foarte lungă… Dar orice are un punct de început. Acesta a fost al nostru.

RobotFramework este un framework de automatizare care este, de fapt, un înveliș peste librăria Selenium 2. El este keyword driver development framework implementat în Python. Poți să scrii metode în Python sau Java și să le imporți în proiect, iar apoi să le folosești drept keyword-uri. Așadar, în loc să apelezi o metodă getSomething(param), apelezi pur și simplu "getSomething param" - acesta fiind keywordul.

Fiind implementat în Python și Selenium 2, acesta este foarte eficient în automatizarea interfețelor, dar nu în segmentul de REST API-uri. Acesta este un aspect sensibil, din pricina scopului nostru. Trebuia să decidem dacă începem să scriem noi metode pentru testarea de API-uri sau să folosim alt framework. A trebuit să alegem alt framework, dar nu ne-am oprit în a folosi RobotFramework. Îl valorificăm pentru unele teste de automatizare al interfețelor.

Dacă începi un nou proiect de automatizare și ești nou în acest domeniu, acesta este cel mai ușor framework de folosit. Un punct forte pentru RobotFramework în acest caz.

RestAssured

Înapoi la Java. RestAssured este un framework de automatizare foarte productiv, scris în Java. Prin design este dedicat testării de cereri HTTP, deci de REST API-uri. Pentru noi acesta a fost o importantă calitate. Așa că am început să-l folosim.

Dacă limbajul tău de programare principal este Java, atunci RestAssured este cel mai bun framework de automatizare pentru REST API-uri.

Sintaxa este ca la BDD - given() -> when() -> then():

Doar atât de puține cuvinte despre acest framework. De ce? Vă las pe voi să descoperiți frumusețea lui.

Concluzii

Această concluzie se fundamnetează doar pe punctul nostru de vedere. Unii vor alege să folosească RobotFramework pentru automatizarea de REST API-uri, alții vor alege cererile HTTP implementate direct în limbajul de programare etc. Fiecare inginer software are preferințele lui în alegerea limbajului de programare, a framework-ului și a celorlalte resurse necesare.

Așadar, din perspectiva noastră, cel mai bun framework pentru automatizarea REST API-urilor este RestAssured. Este ușor de folosit, modular și poți manipula cererile HTTP în orice fel dorești.

Dacă ai în plan să începi un nou proiect pentru testarea automată a REST API-urilor și nu știi de unde să începi, ar trebui să începi prin a citi despre RestAssured și despre un framework de rulat teste, cum ar fi jUnit sau testNG. RestAssured și jUnit sunt perechea perfectă la început de drum pentru oricine.

NUMĂRUL 143 - Software Craftsmanship

Sponsori

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