REST Assured vs. JMeter: O comparație a instrumentelor de testare REST
Publicat: 2022-03-11Testarea 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
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.
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ță.
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:
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:
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:
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.
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.
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.
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 |