De ce TestMace este mai bun decât Postman

De ce TestMace este mai bun decât Postman

Salutare tuturor, iată TestMace! Poate că mulți oameni știu despre noi de la al nostru anterior articole. Pentru cei care tocmai s-au alăturat: dezvoltăm un IDE pentru a lucra cu API-ul TestMace. Cea mai frecventă întrebare când se compară TestMace cu produsele concurente este „Cu ce ​​ești diferit de Postman?” Am decis că este timpul să dăm un răspuns detaliat la această întrebare. Mai jos am subliniat avantajele noastre față de poștaș.

Împărțirea în noduri

Dacă lucrați cu Postman, atunci știți că interfața de solicitare conține toate funcționalitățile necesare. Există scripturi, teste și, de fapt, solicitările în sine. Acest lucru le face mai ușor pentru începători, dar în scenariile mari această abordare nu este flexibilă. Ce se întâmplă dacă doriți să creați mai multe interogări și să efectuați agregarea pe acestea? Ce se întâmplă dacă doriți să executați un script fără o solicitare sau mai multe scripturi separate logic la rând? La urma urmei, este o idee bună să separați testele de scripturile utilitare obișnuite. În plus, abordarea „adăugați toate funcționalitățile într-un singur nod” nu este scalabilă - interfața devine rapid supraîncărcată.

TestMace împarte inițial toate funcționalitățile în diferite tipuri de noduri. Doriți să faceți o cerere? Este pentru tine pasul cererii nodul Vrei să scrii un scenariu? Este pentru tine scenariu nodul Aveți nevoie de teste? Vă rog - afirmație nodul Da, încă poți să închei toată chestia asta dosar nodul Și toate acestea pot fi ușor combinate între ele. Această abordare nu este doar foarte flexibilă, dar și, în conformitate cu principiul responsabilității unice, vă permite să utilizați doar ceea ce aveți cu adevărat nevoie în acest moment. De ce am nevoie de scripturi și teste dacă vreau doar să fac o solicitare?

Format de proiect care poate fi citit de om

Există o diferență conceptuală între TestMace și Postman în modul în care sunt stocate. În Postman, toate cererile sunt stocate undeva în stocarea locală. Dacă este nevoie să partajați cereri între mai mulți utilizatori, atunci trebuie să utilizați sincronizarea încorporată. De fapt, aceasta este o abordare general acceptată, dar nu lipsită de dezavantaje. Dar securitatea datelor? La urma urmei, politica unor companii poate să nu permită stocarea datelor cu terți. Cu toate acestea, credem că TestMace are ceva mai bun de oferit! Și numele acestei îmbunătățiri este „format de proiect care poate fi citit de om”.

Să începem cu faptul că în TestMace, în principiu, există o entitate „proiect”. Iar aplicația a fost dezvoltată inițial pentru a stoca proiecte în sistemele de control al versiunilor: arborele de proiect este aproape unul la unu proiectat pe structura fișierului, yaml este folosit ca format de stocare (fără paranteze și virgule suplimentare), iar reprezentarea în fișier a fiecărui nod este descrisă în detaliu în documentație cu comentarii. Dar, în majoritatea cazurilor, nu veți căuta acolo - toate numele câmpurilor au nume logice.

Ce oferă acest lucru utilizatorului? Acest lucru vă permite să schimbați fluxul de lucru al echipei în mod foarte flexibil, folosind abordări familiare. De exemplu, dezvoltatorii pot stoca un proiect în același depozit ca și backend-ul. În ramuri, pe lângă schimbarea bazei de cod în sine, dezvoltatorul poate corecta scripturile și testele de interogare existente. După ce ați efectuat modificări în depozit (git, svn, mercurial - orice vă place mai mult), CI (preferatul dvs., neimpus de nimeni) lansează utilitarul nostru de consolă testmace-cli, iar raportul primit după execuție (de exemplu, în format junit, care este suportat și în testmace-cli) este trimis către sistemul corespunzător. Și problema de securitate menționată mai sus nu mai este o problemă.

După cum puteți vedea, TestMace nu își impune ecosistemul și paradigma. În schimb, se încadrează cu ușurință în procesele stabilite.

Variabile dinamice

TestMace urmează conceptul fără cod: dacă o problemă poate fi rezolvată fără utilizarea codului, încercăm să oferim această oportunitate. Lucrul cu variabile este exact funcționalitatea în care, în majoritatea cazurilor, puteți face fără programare.

Exemplu: am primit un răspuns de la server și dorim să salvăm o parte din răspuns într-o variabilă. În Postman, într-un script de testare (ceea ce este ciudat în sine) am scrie ceva de genul:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

Dar, în opinia noastră, scrierea unui scenariu pentru un scenariu atât de simplu și folosit frecvent pare redundantă. Prin urmare, în TestMace este posibil să atribuiți o parte din răspuns unei variabile folosind interfața grafică. Uite ce simplu este:

De ce TestMace este mai bun decât Postman

Și acum, cu fiecare solicitare, această variabilă dinamică va fi actualizată. Dar puteți obiecta, argumentând că abordarea Postman este mai flexibilă și vă permite nu numai să faceți o misiune, ci și să efectuați o preprocesare. Iată cum se modifică exemplul anterior:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

Ei bine, în acest scop TestMace are scenariu nod, care acoperă acest scenariu. Pentru a reproduce cazul anterior, dar deja executat de TestMace, trebuie să creați un nod de script în urma solicitării și să utilizați următorul cod ca script:

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

După cum puteți vedea, compoziția nodurilor a servit bine și aici. Și pentru un caz atât de simplu așa cum este descris mai sus, puteți pur și simplu să atribuiți expresia ${crypto.MD5($response.data)} variabilă creată prin GUI!

Crearea de teste prin GUI

Postman vă permite să creați teste prin scrierea de scripturi (în cazul Postman, acesta este JavaScript). Această abordare are multe avantaje - flexibilitate aproape nelimitată, disponibilitatea soluțiilor gata făcute etc.

Cu toate acestea, realitatea este adesea de așa natură (noi nu suntem așa, viața este așa) încât un tester nu are abilități de programare, dar și-ar dori să aducă beneficii echipei chiar acum. Pentru astfel de cazuri, urmând conceptul fără cod, TestMace vă permite să creați teste simple printr-o GUI fără a recurge la scrierea de scripturi. Iată, de exemplu, cum arată procesul de creare a unui test care compară valorile pentru egalitate:

De ce TestMace este mai bun decât Postman

Cu toate acestea, crearea de teste într-un editor grafic nu elimină posibilitatea scrierea testelor în cod. Toate bibliotecile sunt aici ca și în nodul de script și chai pentru teste de scriere.

Adesea apar situații când o anumită interogare sau chiar un întreg script trebuie executat de mai multe ori în diferite părți ale proiectului. Un exemplu de astfel de solicitări ar putea fi autorizarea personalizată în mai multe etape, aducerea mediului la starea dorită etc. În general, vorbind în termeni de limbaje de programare, ne-am dori să avem funcții care să poată fi reutilizate în diferite părți ale aplicației. În TestMace această funcție este realizată de legătură nodul Este foarte usor de folosit:
1) creați o interogare sau un script
2) creați un nod de tip Link
3) în parametri, specificați un link către scriptul creat în primul pas

Într-o versiune mai avansată, puteți specifica ce variabile dinamice din script sunt transmise la un nivel superior în raport cu linkul. Sună confuz? Să presupunem că am creat un Folder cu numele create-post, în cadrul căruia i se atribuie o variabilă dinamică acestui nod postId. Acum în nodul Link create-post-link puteți specifica în mod explicit că variabila postId atribuit unui strămoș create-post-link. Acest mecanism (din nou, în limbajul de programare) poate fi folosit pentru a returna un rezultat dintr-o „funcție”. În general, este grozav, DRY este în plină desfășurare și, din nou, nicio linie de cod nu a fost deteriorată.

De ce TestMace este mai bun decât Postman

În ceea ce privește Postman, există o solicitare de caracteristici pentru reutilizarea solicitărilor agățat din 2015, și se pare că există chiar unele indiciică lucrează la această problemă. În forma sa actuală, Postman are, desigur, capacitatea de a schimba firul de execuție, ceea ce, teoretic, face posibilă implementarea unui comportament similar, dar acesta este mai mult un hack murdar decât o abordare cu adevărat funcțională.

Alte diferente

  • Control mai mare asupra domeniului de aplicare a variabilelor. Cel mai mic domeniu în care poate fi definită o variabilă în Postman este colectarea. TestMace vă permite să definiți variabile pentru orice interogare sau folder. În Postman Share, colecția vă permite să exportați numai colecții, în timp ce în TestMace partajarea funcționează pentru orice nod
  • TestMace acceptă anteturi moștenite, care poate fi înlocuit implicit în interogări secundare. Poștașul are ceva despre asta: sarcină, și este chiar închis, dar este oferit ca soluție... utilizați scripturi. În TestMace, totul este configurat prin GUI și există o opțiune pentru a dezactiva opțional anteturile moștenite în anumiți descendenți
  • Anulați/Refaceți. Funcționează nu numai la editarea nodurilor, ci și la mutarea, ștergerea, redenumirea și alte operațiuni care schimbă structura proiectului
  • Fișierele atașate solicitărilor devin parte din proiect și sunt stocate împreună cu acesta, fiind în același timp perfect sincronizate, spre deosebire de Postman. (Da, nu mai trebuie să selectați manual fișierele de fiecare dată când începeți și să le transferați colegilor din arhive)

Caracteristici care sunt deja pe drum

Nu am putut rezista tentației de a ridica vălul secretului asupra următoarelor lansări, mai ales când funcționalitatea este foarte gustoasă și este deja în curs de lustruire pre-lansare. Deci, hai să ne întâlnim.

Funcții

După cum știți, Postman folosește așa-numitele variabile dinamice pentru a genera valori. Lista acestora este impresionantă iar marea majoritate a funcțiilor sunt folosite pentru a genera valori false. De exemplu, pentru a genera un e-mail aleator trebuie să scrieți:

{{$randomEmail}}

Totuși, deoarece acestea sunt variabile (deși dinamice), ele nu pot fi folosite ca funcții: nu sunt parametrizabile, prin urmare nu va fi posibil să se ia un hash dintr-un șir.

Intenționăm să adăugăm funcții „cinstite” la TestMace. Chiar în interiorul ${} va fi posibil nu numai să accesați o variabilă, ci și să apelați o funcție. Acestea. dacă trebuie să generați notoriu e-mail fals, vă vom scrie pur și simplu

${faker.internet.email()}

Pe lângă faptul că este o funcție, veți observa că este posibil să apelați o metodă pe un obiect. Și în loc de o listă mare de variabile dinamice, avem un set de obiecte grupate logic.

Ce se întâmplă dacă vrem să calculăm hash-ul unui șir? Uşor!

${crypto.MD5($dynamicVar.data)}

Vei observa că poți chiar să treci variabile ca parametri! În acest moment, un cititor curios poate bănui că ceva nu este în regulă...

Utilizarea JavaScript în expresii

... Și pe bună dreptate! Când se formau cerințele pentru funcții, am ajuns brusc la concluzia că javascript valid ar trebui să fie scris în expresii. Deci acum sunteți liber să scrieți expresii precum:

${1 + '' + crypto.MD5('asdf')}

Și toate acestea fără scripturi, chiar în câmpurile de introducere!

Cât despre Postman, aici poți folosi doar variabile, iar când încerci să scrii cea mai mică expresie, validatorul înjură și refuză să o calculeze.

De ce TestMace este mai bun decât Postman

Completare automată avansată

În prezent, TestMace are o completare automată standard care arată astfel:

De ce TestMace este mai bun decât Postman

Aici, pe lângă linia de auto-completare, este indicat căruia îi aparține această linie. Acest mecanism funcționează numai în expresiile înconjurate de paranteze ${}.

După cum puteți vedea, au fost adăugați markeri vizuali care indică tipul de variabilă (de exemplu, șir, număr, matrice etc.). De asemenea, puteți schimba modurile de completare automată (de exemplu, puteți selecta completarea automată cu variabile sau anteturi). Dar nici acesta nu este cel mai important lucru!

În primul rând, completarea automată funcționează chiar și în expresii (acolo unde este posibil). Cam asa arata:

De ce TestMace este mai bun decât Postman

Și în al doilea rând, completarea automată este acum disponibilă în scripturi. Aruncă o privire la cum funcționează!

De ce TestMace este mai bun decât Postman

Nu are rost să comparăm această funcționalitate cu Postman - autocompletarea se limitează doar la liste statice de variabile, anteturi și valorile acestora (corectează-mă dacă am uitat ceva). Scripturile nu sunt completate automat :)

Concluzie

Octombrie a marcat un an de la începutul dezvoltării produsului nostru. În acest timp, am reușit să facem o mulțime de lucruri și, în unele privințe, am ajuns din urmă concurenților noștri. Dar oricum ar fi, scopul nostru este să facem un instrument cu adevărat convenabil pentru lucrul cu API-uri. Mai avem mult de lucru, iată un plan aproximativ pentru dezvoltarea proiectului nostru pentru anul care vine: https://testmace.com/roadmap.

Feedbackul dvs. ne va permite să navigăm mai bine prin abundența de funcții, iar sprijinul dvs. ne oferă putere și încredere că facem ceea ce trebuie. Se întâmplă că astăzi este o zi importantă pentru proiectul nostru - ziua în care TestMace a fost publicat ProductHunt. Vă rugăm să susțineți proiectul nostru, este foarte important pentru noi. Mai mult, există o ofertă tentantă pe pagina noastră PH astăzi și este limitată

Sursa: www.habr.com

Adauga un comentariu