Hvorfor TestMace er bedre enn Postman

Hvorfor TestMace er bedre enn Postman

Hei alle sammen, her er det TestMace! Kanskje mange kjenner til oss fra av våre tidligere Artikkel. For de som nettopp har blitt med: vi utvikler en IDE for å fungere med TestMace API. Det oftest stilte spørsmålet når man sammenligner TestMace med konkurrerende produkter er "Hvordan er du forskjellig fra Postman?" Vi bestemte oss for at det var på tide å gi et detaljert svar på dette spørsmålet. Nedenfor har vi skissert våre fordeler fremfor Postbud.

Deles opp i noder

Hvis du jobber med Postman, vet du at forespørselsgrensesnittet inneholder all nødvendig funksjonalitet. Det er skript, tester og faktisk selve spørringene. Dette gjør det lettere for nybegynnere, men i store scenarier er ikke denne tilnærmingen fleksibel. Hva om du vil opprette flere spørringer og utføre aggregering på dem? Hva om du vil kjøre et skript uten en forespørsel eller flere logisk adskilte skript på rad? Tross alt vil det være en god idé å skille tester fra vanlige hjelpeskript. I tillegg er tilnærmingen "legg til all funksjonalitet i én node" ikke skalerbar - grensesnittet blir raskt overbelastet.

TestMace deler i utgangspunktet all funksjonalitet inn i ulike typer noder. Vil du komme med en forespørsel? Den er til deg be om trinn node Vil du skrive et manus? Den er til deg script node Trenger du tester? Vær så snill - Påstand node Å ja, du kan fortsatt pakke hele saken inn mappe node Og alt dette kan enkelt kombineres med hverandre. Denne tilnærmingen er ikke bare veldig fleksibel, men lar deg også, i samsvar med prinsippet om enkelt ansvar, bruke bare det du virkelig trenger for øyeblikket. Hvorfor trenger jeg skript og tester hvis jeg bare vil sende en forespørsel?

Menneskelest prosjektformat

Det er en konseptuell forskjell mellom TestMace og Postman i måten de er lagret på. I Postman lagres alle forespørsler et sted i lokal lagring. Hvis det er behov for å dele forespørsler mellom flere brukere, må du bruke den innebygde synkroniseringen. Faktisk er dette en allment akseptert tilnærming, men ikke uten sine ulemper. Hva med datasikkerhet? Tross alt kan det hende at policyen til enkelte selskaper ikke tillater lagring av data hos tredjeparter. Vi tror imidlertid TestMace har noe bedre å tilby! Og navnet på denne forbedringen er "menneskelest prosjektformat."

La oss starte med det faktum at i TestMace, i prinsippet, er det en "prosjekt"-enhet. Og applikasjonen ble opprinnelig utviklet med tanke på å lagre prosjekter i versjonskontrollsystemer: prosjekttreet projiseres nesten én-til-en på filstrukturen, yaml brukes som lagringsformat (uten ekstra parentes og kommaer), og filrepresentasjon av hver node er beskrevet i detalj i dokumentasjonen med kommentarer. Men i de fleste tilfeller vil du ikke se der - alle feltnavn har logiske navn.

Hva gir dette brukeren? Dette lar deg endre teamets arbeidsflyt veldig fleksibelt ved å bruke kjente tilnærminger. For eksempel kan utviklere lagre et prosjekt i samme depot som backend. I grener, i tillegg til å endre selve kodebasen, kan utvikleren korrigere eksisterende spørringsskript og tester. Etter å ha begått endringer i depotet (git, svn, mercurial - hva du liker best), lanserer CI (din favoritt, ikke pålagt av noen) vårt konsollverktøy testmace-cli, og rapporten mottatt etter utførelse (for eksempel i junit-format, som også støttes i testmace-cli) sendes til riktig system. Og det ovennevnte sikkerhetsproblemet er ikke lenger et problem.

Som du kan se, påtvinger ikke TestMace sitt økosystem og paradigme. I stedet passer den lett inn i etablerte prosesser.

Dynamiske variabler

TestMace følger no-code konseptet: hvis et problem kan løses uten å bruke kode, prøver vi å gi denne muligheten. Å jobbe med variabler er akkurat den typen funksjonalitet der du i de fleste tilfeller kan klare deg uten programmering.

Eksempel: vi mottok et svar fra serveren, og vi ønsker å lagre deler av svaret i en variabel. I Postman, i et testmanus (som er merkelig i seg selv) ville vi skrive noe sånt som:

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

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

Hvorfor TestMace er bedre enn Postman

Og nå med hver forespørsel vil denne dynamiske variabelen bli oppdatert. Men du kan protestere og hevde at Postman-tilnærmingen er mer fleksibel og lar deg ikke bare lage en oppgave, men også utføre litt forhåndsbehandling. Slik endrer du det forrige eksemplet:

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

Vel, for dette formålet har TestMace script node, som dekker dette scenariet. For å reprodusere den forrige saken, men allerede utført av TestMace, må du opprette en skriptnode etter forespørselen og bruke følgende kode som et skript:

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

Som du kan se, fungerte sammensetningen av nodene også her. Og for et så enkelt tilfelle som beskrevet ovenfor, kan du ganske enkelt tilordne uttrykket ${crypto.MD5($response.data)} variabel opprettet via GUI!

Opprette tester via GUI

Postman lar deg lage tester ved å skrive skript (i tilfelle av Postman er dette JavaScript). Denne tilnærmingen har mange fordeler - nesten ubegrenset fleksibilitet, tilgjengelighet av ferdige løsninger, etc.

Virkeligheten er imidlertid ofte slik (vi er ikke sånn, livet er slik) at en tester ikke har programmeringskunnskaper, men han vil gjerne bringe nytte til teamet akkurat nå. For slike tilfeller, etter konseptet uten kode, lar TestMace deg lage enkle tester gjennom en GUI uten å ty til å skrive skript. Her er for eksempel hvordan prosessen med å lage en test som sammenligner verdier for likestilling ser ut:

Hvorfor TestMace er bedre enn Postman

Å lage tester i en grafisk editor eliminerer imidlertid ikke muligheten skrive tester i kode. Alle de samme bibliotekene er her som i skriptnoden, og chai for å skrive prøver.

Situasjoner oppstår ofte når en bestemt spørring eller til og med et helt skript må kjøres flere ganger i ulike deler av prosjektet. Et eksempel på slike forespørsler kan være tilpasset flertrinns autorisasjon, bringe miljøet til ønsket tilstand, etc. Generelt sett, når det gjelder programmeringsspråk, vil vi gjerne ha funksjoner som kan gjenbrukes i ulike deler av applikasjonen. I TestMace utføres denne funksjonen av link node Det er veldig enkelt å bruke:
1) opprette en spørring eller et skript
2) lag en node av typen Link
3) i parameterne, spesifiser en kobling til skriptet som ble opprettet i det første trinnet

I en mer avansert versjon kan du spesifisere hvilke dynamiske variabler fra skriptet som sendes til et høyere nivå i forhold til lenken. Høres det forvirrende ut? La oss si at vi opprettet en mappe med navnet opprette-innlegg, der en dynamisk variabel er tilordnet denne noden postId. Nå i Link node opprette-post-link du kan eksplisitt spesifisere at variabelen postId tildelt en stamfar opprette-post-link. Denne mekanismen (igjen, på programmeringsspråk) kan brukes til å returnere et resultat fra en "funksjon". Generelt er det kult, DRY er i full gang og igjen ble ikke en eneste linje med kode skadet.

Hvorfor TestMace er bedre enn Postman

Når det gjelder Postman, er det en funksjonsforespørsel for gjenbruk av forespørsler hengende siden 2015, og det ser ut til at det er jevnt noen hintat de jobber med dette problemet. I sin nåværende form har Postman selvfølgelig evnen til å endre utførelsestråden, noe som i teorien sannsynligvis gjør det mulig å implementere lignende oppførsel, men dette er mer et dirty hack enn en virkelig fungerende tilnærming.

Andre forskjeller

  • Større kontroll over omfanget av variabler. Det minste omfanget som en variabel kan defineres innenfor i Postman er innsamling. TestMace lar deg definere variabler for enhver spørring eller mappe. I Postman Share-samling lar deg kun eksportere samlinger, mens i TestMace fungerer deling for alle noder
  • TestMace støtter arvelige overskrifter, som kan erstattes med underordnede søk som standard. Postman har noe om dette: oppgaven, og det er til og med stengt, men det tilbys som en løsning ... bruke skript. I TestMace er alt dette konfigurert via GUI, og det er et alternativ for å deaktivere arvede overskrifter i spesifikke etterkommere
  • Angre gjør om. Fungerer ikke bare når du redigerer noder, men også når du flytter, sletter, gir nytt navn og andre operasjoner som endrer strukturen til prosjektet
  • Filer knyttet til forespørsler blir en del av prosjektet og lagres med det, samtidig som de er perfekt synkronisert, i motsetning til Postman. (Ja, du trenger ikke lenger å velge filer manuelt hver gang du starter og overføre dem til kolleger i arkiver)

Funksjoner som allerede er på vei

Vi kunne ikke motstå fristelsen til å løfte sløret av hemmelighold over de neste utgivelsene, spesielt når funksjonaliteten er veldig velsmakende og allerede er under pre-release-polering. Så la oss møtes.

funksjoner

Postman bruker som kjent såkalte dynamiske variabler for å generere verdier. Listen over dem er imponerende og de aller fleste funksjoner brukes til å generere falske verdier. For å generere en tilfeldig e-post, må du for eksempel skrive:

{{$randomEmail}}

Men siden disse er variabler (om enn dynamiske), kan de ikke brukes som funksjoner: de er ikke parameteriserbare, derfor vil det ikke være mulig å ta en hash fra en streng.

Vi planlegger å legge til "ærlige" funksjoner til TestMace. Rett innenfor ${} vil det ikke bare være mulig å få tilgang til en variabel, men også å kalle en funksjon. De. hvis du trenger å generere den beryktede falske e-posten, skriver vi ganske enkelt

${faker.internet.email()}

I tillegg til at det er en funksjon, vil du legge merke til at det er mulig å kalle en metode på et objekt. Og i stedet for en stor flat liste med dynamiske variabler, har vi et sett med logisk grupperte objekter.

Hva om vi vil beregne hashen til en streng? Enkelt!

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

Du vil legge merke til at du til og med kan sende variabler som parametere! På dette tidspunktet kan en nysgjerrig leser mistenke at noe er galt...

Bruke JavaScript i uttrykk

... Og med god grunn! Da kravene til funksjoner ble dannet, kom vi plutselig til at gyldig javascript skulle skrives i uttrykk. Så nå er du fri til å skrive uttrykk som:

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

Og alt dette uten skript, rett i inndatafeltene!

Når det gjelder Postman, her kan du bare bruke variabler, og når du prøver å skrive det minste uttrykket, forbanner validatoren og nekter å beregne det.

Hvorfor TestMace er bedre enn Postman

Avansert autofullføring

For øyeblikket har TestMace en standard autofullføring som ser slik ut:

Hvorfor TestMace er bedre enn Postman

Her er det i tillegg til autofullføringslinjen angitt hva denne linjen tilhører. Denne mekanismen fungerer bare i uttrykk omgitt av parentes ${}.

Som du kan se, er det lagt til visuelle markører som indikerer typen variabel (for eksempel streng, tall, array, etc.). Du kan også endre autofullføringsmodusene (du kan for eksempel velge autofullføring med variabler eller overskrifter). Men selv dette er ikke det viktigste!

For det første fungerer autofullføring selv i uttrykk (der det er mulig). Slik ser det ut:

Hvorfor TestMace er bedre enn Postman

Og for det andre er autofullføring nå tilgjengelig i skript. Ta en titt på hvordan det fungerer!

Hvorfor TestMace er bedre enn Postman

Det er ingen vits i å sammenligne denne funksjonaliteten med Postman - autofullføring der er begrenset til statiske lister over variabler, overskrifter og deres verdier (korriger meg hvis jeg har glemt noe). Skript er ikke autofullført :)

Konklusjon

Oktober var et år siden starten på vår produktutvikling. I løpet av denne tiden klarte vi å gjøre mange ting, og på noen måter tok vi igjen konkurrentene våre. Men uansett er målet vårt å lage et virkelig praktisk verktøy for å jobbe med APIer. Vi har fortsatt mye arbeid å gjøre, her er en grov plan for utviklingen av prosjektet vårt for det kommende året: https://testmace.com/roadmap.

Tilbakemeldingen din vil tillate oss å bedre navigere i overfloden av funksjoner, og støtten din gir oss styrke og tillit til at vi gjør det rette. Det har seg slik at i dag er en viktig dag for prosjektet vårt - dagen TestMace ble publisert ProductHunt. Støtt prosjektet vårt, det er veldig viktig for oss. Dessuten er det et fristende tilbud på vår PH-side i dag, og det er begrenset

Kilde: www.habr.com

Legg til en kommentar