REST Assured vs. JMeter: O comparație a instrumentelor de testare REST

Publicat: 2022-03-11

Testarea automată este o componentă critică a procesului de asigurare a calității software. Dar testarea API-urilor de transfer de stat reprezentativ (REST) ​​poate fi o afacere dificilă. Mulți dintre cei care apelează la testarea manuală a API-urilor REST trec cu vederea detaliile și ratează modalitățile în care ar putea economisi timp.

Orice serviciu API REST testat corespunzător va avea următoarele domenii acoperite:

  • Testarea dacă serviciul API respectă standardele REST
  • Testarea codurilor de răspuns ale serviciului API
  • Afirmarea conținutului de răspuns al serviciului API
  • Analiza comparativă a performanței serviciului API

Instrumente pentru testul REST

Pentru aceasta, aveți nevoie de instrumentele potrivite. Apache JMeter și REST Assured sunt două instrumente de testare REST populare pentru testarea serviciilor API REST. Puteți afla mai multe despre cum le puteți utiliza în practică de aici și aici.

În acest articol, veți afla avantajele și dezavantajele ambelor instrumente și unde se potrivesc cel mai bine în proiectele dvs. API REST existente.

Ușurință de configurare

Există o condiție prealabilă: atât JMeter, cât și REST Assured necesită Java, așa că trebuie să aveți Java instalat pe computer pentru a rula JMeter sau REST Assured.

Instalarea Apache JMeter este foarte simplă: accesați pagina de descărcare, alegeți ZIP sau TAR, descărcați arhiva, despachetați-o și sunteți gata de plecare.

Accesați folderul în care ați dezambalat arhiva, accesați subfolderul bin și rulați jmeter.bat (sau similar pentru sistemul dvs. de operare, dacă nu este Windows). Pentru informații mai detaliate despre cum să configurați Apache JMeter, consultați această pagină.

Instalarea REST Assured este o experiență puțin diferită. REST Assured nu este un instrument independent. Este o bibliotecă Java. Pentru a-l folosi, trebuie să configurați un nou proiect Java și să îl includeți ca bibliotecă pentru proiectul dvs. Desigur, există suport pentru multe instrumente de compilare, așa că puteți doar să vă îndreptați soluția de dependență către un depozit public (Maven). Puteți găsi informații mai detaliate despre cum să configurați REST Assured aici.

Documentație

Documentația Apache JMeter poate fi găsită pe site-ul oficial JMeter. Oferă o documentație destul de amănunțită, de la început la funcții complexe, cum ar fi ascultătorii. De asemenea, pe site-ul oficial JMeter, puteți găsi link-uri către câteva resurse foarte bogate, cum ar fi tutoriale video. Dacă ești mai puțin îndrăgit de citit și mai mult de vizionat, acesta este cu siguranță un plus pentru tine.

Documentația REST Assured, ca instrument/biblioteca în sine, poate fi găsită în depozitul Github. Are o listă mare de caracteristici enumerate în documentația online, cu explicații foarte detaliate despre cum să realizați ceva. Cu toate acestea, întreaga documentație este o pagină web uriașă - nu cel mai ușor mod de a explora un instrument.

Crearea și întreținerea automată a testelor REST

Apache JMeter, ca aplicație autonomă cu o interfață grafică cu utilizatorul (GUI), vă permite să vă creați testele din GUI. Acest lucru poate fi util mai ales din cauza ierarhiei entităților introduse din JMeter — tot ceea ce creați în interiorul testului va fi afișat într-o reprezentare arborescentă în GUI JMeter.

Pentru a crea un test, nu trebuie să aveți abilități de codare. Cu toate acestea, GUI nu limitează niciuna dintre posibilitățile privind planificarea testelor. Dacă tot doriți să adăugați o programare/un flux personalizat, componentele BeanShell vă vor permite să faceți asta.

Captură de ecran JMeter GUI

Când salvați proiectul dvs. JMeter, tot ceea ce ați creat va fi salvat într-un fișier XML uriaș (cu extensia .jmx ). În general, chiar și pentru o mică modificare a unuia dintre teste, va trebui (foarte probabil) să redeschideți proiectul în GUI pentru a face schimbarea.

Dacă trebuie să colaborați cu alții pe același fișier de proiect JMeter, acest fișier XML uriaș nu va fi ușor de întreținut folosind niciunul dintre sistemele de management al controlului sursei (SCM) (cum ar fi Git, SVN, Perforce etc.).

REST Assured, pe de altă parte, necesită abilități de codare Java pentru a crea teste. Nu există nicio interfață grafică ușor de utilizat pentru crearea testelor. Cu toate acestea, REST Assured vă permite să scrieți testele folosind limbajul Gherkin (sintaxa Data-When-Then), așa că chiar dacă aveți nevoie de niște abilități de codare Java, testele sunt destul de ușor de citit de om.

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

Deoarece REST Assured este o bibliotecă și testele sunt de fapt scrise în Java, vă puteți organiza testele în fișiere Java separate, astfel încât atunci când trebuie să schimbați un test, trebuie doar să deschideți un fișier. Nu aveți nevoie de o interfață grafică, așa că puteți edita cu ușurință testul chiar și printr-un terminal SSH. Colaborarea cu ceilalți este destul de simplă, deoarece este ușor de întreținut fișierele Java folosind orice SCM.

Tipuri de teste REST

JMeter este bine cunoscut ca instrument de testare a performanței pentru testarea aplicațiilor și serviciilor web. Din cutie, are opțiuni frumoase de raportare cu diferite tipuri de diagrame pe care le puteți folosi pentru a afișa valorile testului de performanță.

Captură de ecran JMeter Response Times

Pe de altă parte, de asemenea, nu este scenariul principal de utilizare pentru JMeter. Puteți crea teste funcționale pentru API-urile REST cu JMeter, inclusiv afirmarea răspunsului.

Scenariul principal de utilizare al REST Assured este pentru testarea funcțională a serviciilor API REST. Vine chiar și cu propriul mecanism de afirmare a răspunsului (sintaxa Gherkin). Deoarece REST Assured este o bibliotecă Java, poate fi integrată cu ușurință cu teste unitare.

Când vine vorba de testarea performanței, REST Assured nu acceptă testarea de performanță imediată. Dacă, totuși, doriți să îl utilizați pentru testarea performanței, ar trebui să vă dezvoltați propriul cadru personalizat pentru testarea performanței în jurul REST Assured.

Executarea testului

Testele JMeter pot fi invocate în două moduri.

Din interfața cu utilizatorul făcând clic pe butonul Run:

Captură de ecran JMeter Run Button

Din linia de comandă:

 jmeter -n -t your_script.jmx

Recomandarea oficială de la JMeter este să nu rulați testele de performanță folosind GUI, deoarece testele vor rula mai lent (în ceea ce privește numărul de solicitări pe secundă) în comparație cu rularea lor din linia de comandă.

REST Assured, pe de altă parte, necesită un runner de testare separat, de exemplu jUnit sau TestNG (sau orice altă modalitate de executare a codului Java).

Din Eclipse folosind TestNG:

REST Assured Eclipse Captură de ecran

Din linia de comandă folosind, de exemplu, instrumentul Ant build:

 ant run-tests

Tipuri de rapoarte

Apache JMeter, datorită scopului său principal, are un număr mare de tipuri de rapoarte pe care le puteți crea din rezultatele testelor dumneavoastră. Deoarece puteți rula teste de performanță din JMeter, valorile de performanță sunt de obicei afișate folosind diagrame ca aceasta:

Raportul de performanță JMeter

Puteți afla mai multe despre rapoartele JMeter și despre tipurile de rapoarte pe care le puteți crea de aici.

REST Assured în sine nu creează niciun raport, așa că depinde de dvs. și de un cadru de testare pe care l-ați ales. Cu toate acestea, atunci când este integrat cu un cadru de testare unitară, puteți obține rapoarte destul de utilizabile în formate HTML, text sau XML.

Raport HTML REST Assured

Integrare cu Jenkins

Când vine vorba de integrarea continuă a produselor testate, este foarte important să integrați cadrul dvs. de automatizare a testelor cu instrumente CI atât pentru rularea testelor, cât și pentru raportarea rezultatelor.

Testele automate JMeter pot fi integrate cu ușurință cu Jenkins folosind pluginul Performance, care vă permite să configurați acțiuni post-build și să obțineți o pagină de tablou de bord frumoasă dintr-o pagină de locuri de muncă Jenkins.

Captură de ecran JMeter Jenkins

REST Assured poate fi, de asemenea, ușor integrat cu Jenkins, deoarece Jenkins are pluginuri pentru aproape toate cadrele de testare; de exemplu, pluginul TestNG care poate crea din nou o diagramă solidă a tendințelor pentru rezultatele testelor.

REST Assured Jenkins Captură de ecran

Activitate comunitară

Aceasta este o categorie care nu poate fi măsurată cu ușurință. Activitatea comunității depinde de o serie de factori, cum ar fi maturitatea instrumentului sau numărul de colaboratori.

Apache JMeter are o comunitate mai mare în prezent. Acest lucru se datorează în mare parte faptului că JMeter a apărut pe piață cu mult timp în urmă și este considerat standard în industrie atunci când vine vorba de testarea performanței aplicațiilor și serviciilor web. JMeter publică versiuni oficiale la fiecare 5-6 luni. Depozitul său GitHub este foarte activ, cu noi comiteri în fiecare zi. JMeter folosește Bugzilla ca instrument de urmărire a problemelor și are o listă de probleme deschise care sunt modificate frecvent. Există peste 23000 de rezultate pentru JMeter în căutarea StackOverflow. De pe site-urile de rețele sociale, JMeter are un cont oficial Twitter. Pe Facebook și LinkedIn, nu există un cont oficial pentru JMeter, dar există câteva grupuri, dintre care cel mai mare este acest grup Facebook și acest grup LinkedIn.

REST Assured se îndreaptă spre scena principală și a devenit prima alegere, o recomandare din mai multe surse, atunci când vine vorba de automatizarea testelor funcționale ale serviciului REST API. REST Assured a publicat lansări oficiale o dată la 6 luni în ultimii doi ani. Depozitul GitHub are o mulțime de colaboratori și este ceva mai puțin activ decât cel al lui JMeter, dar este și foarte activ. REST Assured urmărește problemele în depozitul GitHub, astfel încât totul este într-un singur loc. În StackOverflow, există peste 2000 de rezultate de căutare pentru REST Assured, așa că putem spune că este semnificativ mai scăzut în comparație cu rezultatele căutării JMeter. În ceea ce privește grupurile de rețele sociale, doar grupul LinkedIn a fost găsit cu un număr semnificativ mai mic de membri în comparație cu JMeter. Comunitatea REST Assured poate să nu fie la fel de mare ca comunitatea JMeter, dar este foarte activă.

rezumat

Atât JMeter, cât și REST Assured au avantajele lor unul față de celălalt. Dar, în funcție de proiectul la care lucrați, unul se va potrivi mai bine decât celălalt pentru automatizarea testării REST API. Ambele sunt foarte robuste, au opțiuni de testare utile, se laudă cu capabilități bune de raportare și pot fi integrate cu ușurință cu cadre de testare personalizate.

Iată un rezumat al tuturor criteriilor de comparare explorate în acest articol pentru aceste două instrumente de testare REST populare:

Apache JMeter Fiți siguri
Necesită abilități de codare Nu Da (Java)
Documente amănunțite da da
Testare funcțională Da (dar exagerat) da
Test de performanta da Nu (din cutie)
Potrivit pentru SCM (Git, P4...) Nu da
Rapoarte de testare da Nu
Integrare cu instrumentele CI da da
Integrare cu teste unitare Nu da
Testare paralelizare da da
Activitatea comunitară da da