Hva gjør TestMace bedre enn Postman

Hva gjør TestMace bedre enn Postman

Hei alle sammen, her er vi TestMace! Mange kjenner kanskje til oss fra våre de forrige artiklene. For de som nettopp har koblet seg til: vi utvikler et IDE for arbeid med API TestMace. Det mest stilte spørsmålet når man sammenligner TestMace med konkurrerende produkter er - «Hva skiller dere fra Postman?». Vi har bestemt oss for å gi et grundig svar på dette spørsmålet. Nedenfor har vi punktvis oppsummert våre fordeler i forhold til Postman.

Oppdeling i noder

Hvis du jobber med Postman, vet du at forespørselens grensesnitt inneholder all nødvendig funksjonalitet. Her finner du skript, tester og selve forespørslene. Dette forenkler arbeidet for nybegynnere, men i større scenarier er ikke denne tilnærmingen fleksibel. Hva om du ønsker å lage flere forespørseler og aggregere dem? Hva om du vil kjøre et skript uten forespørsel eller flere logisk atskilte skript på rad? Til slutt ville det være fint å skille tester fra vanlige nyttige skript. I tillegg er tilnærmingen «vi legger all funksjonalitet i én node» ikke skalerbar — grensesnittet blir raskt overbelastet.

TestMace deler opprinnelig all funksjonalitet inn i ulike typer noder. Vil du lage en forespørsel? Her har du request step node. Vil du skrive et skript? Her har du script node. Trenger du tester? Vær så god — Assertion node. Åh ja, du kan også pakke alt dette inn i folder node. Og alt dette lar seg enkelt kombinere. Denne tilnærmingen er ikke bare veldig fleksibel, men i samsvar med prinsippet om enkeltansvar, lar deg bruke bare det du faktisk trenger i øyeblikket. Hvorfor trenger jeg skript og tester hvis jeg bare vil lage en forespørsel?

Menneskelig lesbar prosjektformat

Det er et konseptuelt skille mellom TestMace og Postman når det kommer til lagring. I Postman lagres alle forespørslene et sted i lokal lagring. Hvis det er behov for å dele forespørslene mellom flere brukere, må man bruke innebygd synkronisering. Faktisk er dette en allment akseptert tilnærming, men ikke uten ulemper. Hvordan er sikkerheten til dataene? Fordi politikken til noen selskaper kan forby lagring av data hos tredjepart. Vi mener imidlertid at TestMace kan tilby noe bedre! Og navnet på denne forbedringen er «menneskelig lesbar prosjektformat».

La oss begynne med at TestMace i utgangspunktet har en enhet kalt “prosjekt”. Applikasjonen ble opprinnelig utviklet med tanke på lagring av prosjekter i versjonskontrollsystemer: prosjektstrukturen projiseres nesten direkte på filsystemet, lagringsformatet som brukes er yaml (uten unødvendige parenteser og komma), og den filbaserte representasjonen av hver node er detaljert beskrevet i dokumentasjonen med kommentarer. Men i de fleste tilfeller vil du ikke se på det — alle felt navngivningene er logiske.

Hva gir dette brukeren? Det gjør det mulig å endre teamets arbeidsflyt på en veldig fleksibel måte, ved å bruke kjente metoder. For eksempel kan utviklere lagre prosjektet i samme depot som backend. I grenene, i tillegg til endringer i selve kodebasen, kan utvikleren rette opp eksisterende forespørselsscenarier og tester. Etter bekreftelse av endringene i depotet (git, svn, mercurial — hva du liker best) lanserer CI (din favoritt, ingen påtvunget) vår kommandolinjeverktøy testmace-cli, og rapporten som genereres etter kjøringen (for eksempel i junit-format, som også støttes i testmace-cli) sendes til det aktuelle systemet. Og det ovennevnte spørsmålet om sikkerhet er ikke lenger et problem.

Som du kan se, pålegger ikke TestMace sitt eget økosystem og paradigme. I stedet integreres det enkelt i allerede etablerte prosesser.

Dynamiske variabler

TestMace følger no-code-konseptet: hvis et problem kan løses uten å bruke kode, prøver vi å gi den muligheten. Arbeid med variabler er akkurat den funksjonaliteten hvor det i de fleste tilfeller er mulig å unngå programmering.

Eksempel: vi fikk et svar fra serveren, og vi ønsker å lagre en del av svaret i en variabel. I Postman ville vi i testskriptet (som i seg selv er merkelig) skrevet noe i retning av:

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

Men etter vår mening ser det å skrive et skript for et så enkelt og ofte brukt scenario overflødig ut. Derfor har TestMace muligheten til å tilordne en del av svaret til en variabel ved å bruke det grafiske grensesnittet. Se hvor enkelt det er:

Hva gjør TestMace bedre enn Postman

Og nå vil denne dynamiske variabelen oppdateres ved hver forespørsel. Men du kan kanskje innvende og si at Postman-tilnærmingen er mer fleksibel og tillater ikke bare å gjøre en tildeling, men også å utføre en form for forhåndsbehandling. Her er hvordan du kan modifisere det forrige eksemplet:

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

Vel, for dette finnes script en node i TestMace som dekker dette scenariet. For å gjenskape det forrige tilfellet, men nå i TestMaces utførelse, må du etter forespørselen opprette en script-node og bruke følgende kode som skript:

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

Som du ser, har sammensetningen av noder også vært til stor hjelp her. Og for et så enkelt tilfelle som beskrevet ovenfor, kan du til og med bare tilordne uttrykket ${crypto.MD5($response.data)} til variabelen som opprettes via det grafiske grensesnittet!

Oppretting av tester via GUI

Postman gjør det mulig å lage tester ved å skrive skript (i Postman er dette JavaScript). Denne tilnærmingen har mange fordeler – praktisk talt ubegrenset fleksibilitet, tilgjengeligheten av ferdige løsninger, osv.

Men virkeligheten er ofte slik (vi er ikke skyld i det, livet er slik) at testeren ikke har programmeringsferdigheter, men ønsker å bidra til teamet nå. For slike tilfeller, i tråd med no-code-konseptet, lar TestMace deg lage enkle tester gjennom det grafiske grensesnittet uten å skrive skript. Her er, for eksempel, hvordan prosessen med å lage en test som sammenligner verdier for likhet ser ut:

Hva gjør TestMace bedre enn Postman

Men oppretting av tester i den grafiske redaktøren fritar ikke muligheten for å skrive tester i kode. Her bruker du de samme bibliotekene som i script-noden, og chai for å skrive tester.

Oppstår ofte situasjoner der en bestemt forespørsel eller til og med et helt scenario må kjøres flere ganger på forskjellige deler av prosjektet. Eksempler på slike forespørsel kan være tilpasset flertrinnsautorisering, sette opp miljøet til ønsket tilstand, osv. Generelt, hvis vi snakker i programmeringsspråk, vil man gjerne ha funksjoner som kan gjenbrukes i ulike deler av applikasjonen. I TestMace utfører denne funksjonen link nod. Det er veldig enkelt å bruke:
1) opprett en forespørsel eller et skript
2) opprett en node av typen Link
3) i innstillingene angir du linken til skriptet som ble opprettet i første trinn

I en mer avansert variant kan du spesifisere hvilke dynamiske variabler fra skriptet som skal overføres til nivået over i forhold til linken. Høres dette komplisert ut? La oss si at vi har opprettet en Mappe med navnet create-post, der en dynamisk variabel blir tildelt denne noden postId. Nå kan du i Link-noden create-post-link ange eksplisitt at variabelen postId tilordnes til overordnet create-post-link. Denne mekanismen (igjen, i programmeringsspråk) kan brukes til å returnere et resultat fra en «funksjon». Generelt er det flott, DRY i full vekst og igjen har ingen linjer med kode blitt skadet.

Hva gjør TestMace bedre enn Postman

Når det gjelder Postman, har forespørselen om gjenbruk av forespørslene hengt siden 2015, og det ser til og med ut til å være noen antydninger, om at det jobbes med dette problemet. For øyeblikket har Postman selvfølgelig muligheten til å bytte utførelsesflyt, noe som i teorien muligens lar deg implementere en slik oppførsel, men det er mer en skitten hack enn en virkelig fungerende tilnærming.

Andre forskjeller

  • Større kontroll over synlighetsområdet for variabler. Det minste omfanget, der du kan definere en variabel i Postman, er collection. TestMace lar deg definere variable for enhver forespørsel eller mappe. I Postman lar Share collection deg eksportere bare samlinger, mens i TestMace fungerer deling for enhver node
  • TestMace støtter arvede overskrifter, som som standard kan settes inn i underordnede forespørsel. I Postman er det på dette området oppgave, og det er faktisk lukket, men som løsning foreslås det å... bruke skripter. I TestMace konfigureres alt dette gjennom GUI, og det er en mulighet for valgfrie avstengninger av arvede overskrifter i spesifikke etterkommere.
  • Angre/Gjør om. Fungerer ikke bare ved redigering av noder, men også ved flytting, sletting, omdøping og andre operasjoner som endrer prosjektstrukturen.
  • Filer knyttet til forespørslene blir en del av prosjektet og lagres sammen med det, samtidig som de synkroniseres perfekt, i motsetning til Postman. (Ja, du trenger ikke lenger å velge filer manuelt hver gang ved hver oppstart og sende dem til kolleger i arkiver).

Funksjoner som allerede er på vei

Vi klarte ikke å motstå fristelsen til å åpne sløret over de kommende utgivelsene, spesielt når funksjonaliteten er så fristende og allerede gjennomgår en pre-release-finish. Så, la oss møte det.

Functions

Som kjent brukes såkalte dynamiske variabler for å generere verdier i Postman. Listen over dem er imponerende og flertallet av funksjonene tjener til å generere falske verdier. For eksempel, for å generere en tilfeldig e-post må du skrive:

{{$randomEmail}}

Men siden dette er variabler (om enn dynamiske), kan de ikke brukes som funksjoner: de er ikke parametriserbare, og derfor kan man ikke ta hashen av strengen.

I TestMace planlegger vi å legge til "ærlige" funksjoner. Rett inne i ${} vil det være mulig å ikke bare referere til en variabel, men også kalle en funksjon. Altså, hvis vi ønsker å generere den beryktede falske e-posten, skriver vi rett og slett

${faker.internet.email()}

I tillegg til at dette er en funksjon, kan man merke seg at det er mulig å kalle metoden til objektet. Og i stedet for en stor flat liste over dynamiske variabler, har vi et sett av logisk grupperte objekter.

Og hva om vi ønsker å beregne hasjen av en streng? Lett!

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

Man kan merke seg at man til og med kan sende variabler som parametere! På dette punktet kan den nysgjerrige leseren mistenke noe...

Bruk av JavaScript i uttrykk

... Og ikke uten grunn! Da kravene til funksjonene ble formulert, innså vi plutselig at vi måtte tillate gyldig JavaScript i uttrykkene. Derfor er du nå fri til å skrive uttrykk som:

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

Og alt dette uten skripting rett i inndatafeltene!

Når det gjelder Postman, kan man bare bruke variabler, og ved forsøk på å skrive et minimalt uttrykk, reagerer validatoren med å klage og nekter å beregne det.

Hva gjør TestMace bedre enn Postman

Avansert autocompletion

For øyeblikket har TestMace standard autocompletion som ser slik ut:

Hva gjør TestMace bedre enn Postman

Her angis det i tillegg til den autocompletable strengen hva den aktuelle strengen tilhører. Denne mekanismen virker kun i uttrykk omkranset av ${}.

Som kan merkast, har det kome visuelle markørar som indikerer typen av variabel (som streng, tal, matrise osv.). Det er også mogleg å endre autokompliteringsmodus (for eksempel kan ein velje autokomplettering med variablar eller overskrifter). Men sjølv dette er ikkje det viktigaste!

For det første, autokomplettering fungerer til og med i uttrykk (der det er mogleg). Slik ser det ut:

Hva gjør TestMace bedre enn Postman

Og for det andre er autokomplettering no også tilgjengeleg i skript. Ta ein titt på korleis det fungerer!

Hva gjør TestMace bedre enn Postman

Det er ingen mening å samanlikne denne funksjonen med Postman – der er autokomplettering avgrensa til berre statiske lister over variablar, overskrifter og verdiane deira (rett meg om eg har gløymt noko). Skript får ikkje autokomplettering 🙁

Konklusjon

I oktober fylte det eitt år sidan utviklinga av produktet vårt starta. I løpet av denne tida har vi klart å gjere mykje og har nådd opp til konkurrentane våre på nokre parameter. Men uansett, vårt mål er å lage eit verkeleg brukervennleg verktøy for arbeid med API. Vi har framleis mykje arbeid igjen, her er ein omtrentlig utviklingsplan for prosjektet vårt det kommende året: https://testmace.com/roadmap.

Tilbakemeldingane frå dykk gir oss betre oversyn over mengda av funksjonar, og støtta dykkar gir oss styrke og tryggleik til å vite at vi gjer noko nyttig. Det har seg slik at i dag er ein viktig dag for prosjektet vårt – dagen for publiseringa av TestMace på ProductHunt. Vennligst støtt prosjektet vårt, det betyr mykje for oss. Spesielt sidan det er eit fristande tilbod på PH-sida vår i dag, og det er avgrensa

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster