Cu ce este TestMace mai bun decât Postman

Cu ce este TestMace mai bun decât Postman

Salut tuturor, sunt aici TestMace! Este posibil ca mulți dintre voi să ne cunoașteți din precedentele noastre . Pentru cei care s-au alăturat recent: dezvoltăm un IDE pentru a lucra cu API-ul TestMace. Cea mai frecventă întrebare când comparăm TestMace cu produsele concurente este: „Ce vă diferențiază de Postman?”. Am decis că este timpul să oferim un răspuns detaliat la această întrebare. Mai jos am enumerat avantajele noastre în fața articolele noastrePostman Postman.

Divizarea în noduri

Dacă lucrezi cu Postman, știi că interfața de solicitare conține toate funcționalitățile necesare. Aici sunt scripturi, teste și, desigur, solicitările în sine. Aceasta simplifică lucrul pentru începători, însă pentru scenariile mari, această abordare nu este flexibilă. Ce se întâmplă dacă vrei să creezi mai multe solicitări și să le agregi? Ce se întâmplă dacă vrei să execuți un script fără o solicitare sau mai multe scripturi logic separate una după alta? Până la urmă, ar fi bine să separi testele de scripturile utilitare obișnuite. În plus, abordarea „adăugăm toată funcționalitatea într-un singur nod” nu este scalabilă — interfața devine rapid aglomerată.

TestMace separă de la bun început întreaga funcționalitate în diferite tipuri de noduri. Vrei să faci o solicitare? Iată-ți request step nod. Vrei să scrii un script? Iată-ți script nod. Ai nevoie de teste? Te rog — Afirmarea nod. Oh da, poți înfășura toate acestea într-un folder nod. Și toate acestea se combină ușor între ele. Această abordare nu numai că este foarte flexibilă, dar, conform principiului responsabilității unice, permite utilizarea doar a ceea ce ai cu adevărat nevoie în momentul respectiv. De ce am nevoie de scripturi și teste, dacă vreau doar să fac o solicitare?

Formatul proiectului ușor de citit

Între TestMace și Postman există o diferență conceptuală în modul de stocare. În Postman toate solicitările sunt stocate undeva în stocarea locală. Dacă există necesitatea de a partaja solicitările între mai mulți utilizatori, trebuie să utilizezi sincronizarea încorporată. De fapt, aceasta este o abordare comun acceptată, dar nu lipsită de dezavantaje. Ce zici de securitatea datelor? Politica unor companii ar putea să nu permită stocarea datelor la terți. Cu toate acestea, considerăm că TestMace poate oferi ceva mai bun! Iar numele acestei îmbunătățiri este "formatul proiectului ușor de citit".

Să începem prin a menționa că în TestMace există o entitate denumită „proiect”. Aplicația a fost concepută inițial pentru a stoca proiecte în sisteme de control al versiunilor: structura arborelui proiectului se proiectează practic 1:1 pe structura de fișiere, iar formatul de stocare utilizat este yaml (fără paranteze și virgule suplimentare), iar reprezentarea fișierului fiecărui nod este detaliată în documentația cu comentarii. Însă, în cele mai multe cazuri, nu veți avea nevoie să accesați aceste detalii — toate numele câmpurilor au denumiri logice.

Ce oferă utilizatorului? Aceasta permite o modificare foarte flexibilă a fluxului de lucru al echipei, utilizând abordări familiare. De exemplu, dezvoltatorii pot stoca proiectul în același depozit cu backend-ul. În ramuri, pe lângă modificarea efectivă a bazei de cod, dezvoltatorul poate corecta scenariile de cereri existente și testele. După ce modificările sunt confirmate în depozit (git, svn, mercurial — ce preferați), CI (preferatul vostru, impus de nimeni) rulează utilitarul nostru din linia de comandă testmace-cli, iar raportul generat în urma execuției (de exemplu, în format junit, care este, de asemenea, acceptat în testmace-cli) este trimis în sistemul corespunzător. De asemenea, problema menționată anterior cu securitatea nu mai reprezintă o problemă.

După cum vedeți, TestMace nu impune ecosistemul și paradigma sa. În schimb, se integrează ușor în procesele deja stabilite.

Variabile dinamice

TestMace urmează conceptul no-code: dacă o problemă poate fi rezolvată fără utilizarea codului, ne străduim să oferim această posibilitate. Lucrul cu variabilele este exact funcționalitatea în care, în cele mai multe cazuri, se poate evita programarea.

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

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

Dar, în opinia noastră, scrierea unui script pentru un scenariu atât de simplu și utilizat frecvent pare excesivă. De aceea, în TestMace aveți posibilitatea de a atribui o variabilă unei părți din răspuns, utilizând interfața grafică. Vedeți cât de simplu este:

Cu ce este TestMace mai bun decât Postman

Și acum, la fiecare solicitare, această variabilă dinamică va fi actualizată. Dar puteți să obiectați, argumentând că abordarea lui Postman este mai flexibilă și permite nu doar atribuirea, ci și realizarea unei prelucrări preliminare. Iată cum poate fi modificat exemplul anterior:

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

Ei bine, pentru acest lucru TestMace are script un nod care acoperă acest scenariu. Pentru a reproduce cazul anterior, dar deja în execuția TestMace, este necesar să creați un nod de script imediat după solicitare și să folosiț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, compozitia nodurilor a fost de mare ajutor și aici. Iar pentru un caz atât de simplu, precum cel descris mai sus, puteți pur și simplu să atribuiți expresia ${crypto.MD5($response.data)} unei variabile create prin intermediul interfeței grafice!

Crearea testelor prin GUI

Postman permite crearea testelor prin scrierea de scripturi (în cazul Postman-ului, acesta este JavaScript). Această abordare are numeroase avantaje — flexibilitate practic nelimitată, soluții gata de utilizare etc.

Cu toate acestea, realitatea este adesea astfel (nu noi suntem așa, așa e viața), încât testerul nu are abilități de programare, iar echipa ar dori să contribuie deja. Pentru astfel de cazuri, urmând conceptul no-code, TestMace permite crearea de teste simple prin intermediul interfeței grafice, fără a recurge la scrierea de scripturi. Iată, de exemplu, cum arată procesul de creare a unui test care compară valorile pentru egalitate:

Cu ce este TestMace mai bun decât Postman

Cu toate acestea, crearea de teste în editorul grafic nu anulează posibilitatea de a scrie teste în cod. Aici sunt aceleași biblioteci ca și în nodul de script, și chai pentru scrierea testelor.

Adesea, apar situații în care o anumită solicitare sau chiar un întreg scenariu trebuie să fie executat de mai multe ori în diferite părți ale proiectului. Un exemplu al acestor solicitări poate fi un proces de autentificare personalizată în mai multe etape, aducerea mediului într-o stare dorită etc. În general, dacă vorbim în termeni de limbaje de programare, ar fi bine să avem funcții care pot fi reutilizate în diferite părți ale aplicației. În TestMace, această funcție este îndeplinită de link nod. Folosirea sa este foarte simplă:
1) creați o cerere sau un script
2) creați un nod de tip Link
3) în parametrii specificați linkul către scriptul creat la pasul anterior

Într-o variantă mai avansată, puteți specifica ce variabile dinamice din script să fie transferate la un nivel superior în raport cu linkul. Sună complicat? Să zicem că am creat un Folder numit create-post, în interiorul căruia acest nod primește o variabilă dinamică postId. Acum, în nodul Link create-post-link puteți specifica în mod explicit ca variabila postId să fie atribuită părintelui create-post-link. Acest mecanism (încă o dată, vorbind în limbaj de programare) poate fi folosit pentru a returna rezultatul dintr-o „funcție”. În general, este grozav, DRY în toată splendoarea sa, iar din nou nu a fost afectată nicio linie de cod.

Cu ce este TestMace mai bun decât Postman

Cât despre Postman, solicitarea de funcții pentru reutilizarea cererilor este activă din 2015, și se pare că chiar există câteva indicii, că se lucrează la această problemă. În forma sa actuală, Postman are, desigur, posibilitatea de a schimba fluxul de execuție, ceea ce în teorie, probabil, permite realizarea acestui comportament, dar mai degrabă este un hack murdar decât o abordare realmente funcțională.

Alte diferențe

  • Un control mai mare asupra domeniului de vizibilitate al variabilelor. Cel mai mic domeniu în care o variabilă poate fi definită în Postman este colecția. TestMace permite definirea variabilelor pentru orice cerere sau folder. În Postman, Partajarea colecției permite exportul doar al colecțiilor, în timp ce în TestMace partajarea funcționează pentru orice nod.
  • TestMace suportă antete moștenite, care, în mod implicit, pot fi aplicate cererilor copil. În Postman cu privire la acest lucru există o sarcină, și aceasta este chiar închisă, dar ca soluție, se propune... utilizarea scripturilor. În TestMace, totul este configurat prin GUI și există posibilitatea de a dezactiva opțional antetele moștenite în anumite copii.
  • Undo/Redo. Funcționează nu doar la editarea nodurilor, ci și la mutare, ștergere, redenumire și alte operații care modifică structura proiectului.
  • Fișierele atașate cererilor devin parte din proiect și sunt stocate împreună cu acesta, sincronizându-se perfect, spre deosebire de Postman. (Da, nu mai este necesar să selectați manual fișierele la fiecare rulare și să le transmiteți colegilor în arhive.)

Funcții care sunt deja în curs de dezvoltare

Nu am putut rezista tentației de a deschide puțin cortina misterului asupra următoarelor lansări, mai ales când funcționalitatea este foarte atrăgătoare și deja trece prin finisaje pre-lansare. Așadar, să salutăm.

Functions

După cum se știe, pentru generarea valorilor în Postman se folosesc așa numitele variabile dinamice. Lista lor este impresionantă iar majoritatea funcțiilor servesc pentru generarea valorilor fictive. De exemplu, pentru a genera un email aleatoriu, trebuie să scriem:

{{$randomEmail}}

Cu toate acestea, deoarece acestea sunt variabile (chiar dacă sunt dinamice), nu pot fi utilizate ca funcții: nu sunt parametrizabile, așadar nu putem lua hash-ul unei string.

La TestMace, intenționăm să adăugăm funcții ‘corecte’. Direct în ${} va fi posibil nu doar să facem referire la o variabilă, ci și să apelăm o funcție. Adică, dacă vrem să generăm acel celebru email fals, pur și simplu vom scrie

${faker.internet.email()}

Pe lângă faptul că este o funcție, se poate observa că există posibilitatea de a apela o metodă a obiectului. Și în locul unei liste mari plate de variabile dinamice, avem un set de obiecte grupate logic.

Și ce se întâmplă dacă dorim să calculăm hash-ul unui string? Simplu!

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

Se poate observa că, ca parametri, putem transmite chiar și variabile! În acest loc, cititorul curios ar putea bănuiesc ceva…

Folosirea JavaScript în expresii

… Și pe bună dreptate! Atunci când au fost formulat cerințele pentru funcții, am ajuns brusc la concluzia că în expresii trebuie să permitem scrierea de JavaScript valid. Așadar, acum ești liber să scrii expresii în stilul:

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

Și totul fără scripturi direct în câmpurile de introducere!

În ceea ce privește Postman, aici poți folosi doar variabile, iar, în încercarea de a scrie o expresie minimă, validatoarele refuză să o calculeze.

Cu ce este TestMace mai bun decât Postman

Autocompletare avansată

În prezent, TestMace dispune de o autocompletare standard, care arată astfel:

Cu ce este TestMace mai bun decât Postman

Aici, pe lângă șirul autocompletabil, se indică la ce aparține acest șir. Acest mecanism funcționează doar în expresii închise între ${}.

Așa cum puteți observa, au fost adăugate marcaje vizuale care indică tipul variabilei (de exemplu, șir, număr, tablă etc.). De asemenea, este posibil să schimbați modurile de completare automată (de exemplu, puteți alege completarea automată cu variabile sau antete). Dar chiar și asta nu este cel mai important!

În primul rând, completarea automată funcționează chiar și în expresii (acolo unde este posibil). Iată cum arată asta:

Cu ce este TestMace mai bun decât Postman

Și în al doilea rând, acum completarea automată este disponibilă și în scripturi. Uitați cum funcționează!

Cu ce este TestMace mai bun decât Postman

Nu are sens să comparăm această funcționalitate cu Postman — acolo, completarea automată este limitată doar la listele statice ale variabilelor, antetelor și valorilor lor (corectați-mă dacă am uitat ceva). Scripturile nu beneficiază de completare automată 🙁

Concluzie

În octombrie s-a împlinit un an de la începerea dezvoltării produsului nostru. În acest timp, am reușit să facem multe lucruri și, pe anumite dimensiuni, am ajuns din urmă concurenții noștri. Dar, oricum, obiectivul nostru este de a crea un instrument cu adevărat confortabil pentru lucrul cu API. Ne mai așteaptă multă muncă, iată un plan aproximativ de dezvoltare a proiectului nostru pentru anul următor: https://testmace.com/roadmap.

Feedback-ul dumneavoastră ne va ajuta să ne orientăm mai bine în abundența de funcții, iar sprijinul dumneavoastră ne oferă forță și încredere că facem ceea ce trebuie. Așa s-a întâmplat că astăzi este o zi importantă pentru proiectul nostru — ziua publicării TestMace pe ProductHunt. Vă rugăm să sprijiniți proiectul nostru, este foarte important pentru noi. Mai ales că pe pagina noastră de PH există o ofertă tentantă astăzi, și este limitată

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster