Hvorfor TestMace er bedre end Postman

Hvorfor TestMace er bedre end Postman

Hej alle sammen, her skal du TestMace! Måske kender mange til os fra af vores Tidligere artikler. For dem, der lige har tilmeldt sig: Vi er ved at udvikle en IDE til at arbejde med TestMace API. Det oftest stillede spørgsmål, når man sammenligner TestMace med konkurrerende produkter, er "Hvordan adskiller du dig fra Postman?" Vi besluttede, at det var på tide at give et detaljeret svar på dette spørgsmål. Nedenfor har vi skitseret vores fordele i forhold til Postman.

Opdeling i noder

Hvis du arbejder med Postman, så ved du, at anmodningsgrænsefladen indeholder al den nødvendige funktionalitet. Der er scripts, tests og faktisk selve anmodningerne. Dette gør det lettere for begyndere, men i store scenarier er denne tilgang ikke fleksibel. Hvad hvis du vil oprette flere forespørgsler og udføre aggregering på dem? Hvad hvis du vil udføre et script uden en anmodning eller flere logisk adskilte scripts i træk? Det er trods alt en god idé at adskille tests fra almindelige hjælpescripts. Derudover er tilgangen "tilføj al funktionalitet til én node" ikke skalerbar - grænsefladen bliver hurtigt overbelastet.

TestMace opdeler i første omgang al funktionalitet i forskellige typer noder. Vil du stille en anmodning? Den er til dig anmodningstrin node Vil du skrive et manuskript? Den er til dig script node Brug for tests? Vær venlig - Påstand node Åh ja, du kan stadig pakke det hele ind mappe node Og alt dette kan nemt kombineres med hinanden. Denne tilgang er ikke kun meget fleksibel, men giver dig også, i overensstemmelse med princippet om enkelt ansvar, kun mulighed for at bruge det, du virkelig har brug for i øjeblikket. Hvorfor har jeg brug for scripts og tests, hvis jeg bare vil lave en anmodning?

Menneskelæsbart projektformat

Der er en begrebsmæssig forskel mellem TestMace og Postman i den måde, de opbevares på. I Postman er alle forespørgsler gemt et sted i lokalt lager. Hvis der er behov for at dele forespørgsler mellem flere brugere, så skal du bruge den indbyggede synkronisering. Faktisk er dette en generelt accepteret tilgang, men ikke uden dens ulemper. Hvad med datasikkerhed? Når alt kommer til alt, tillader nogle virksomheders politik muligvis ikke lagring af data hos tredjeparter. Vi mener dog, at TestMace har noget bedre at tilbyde! Og navnet på denne forbedring er "human-readable project format."

Lad os starte med det faktum, at der i TestMace i princippet er en "projekt"-entitet. Og applikationen blev oprindeligt udviklet med henblik på at gemme projekter i versionsstyringssystemer: projekttræet projiceres næsten én-til-én på filstrukturen, yaml bruges som lagringsformat (uden ekstra parenteser og kommaer), og filrepræsentation af hver node er beskrevet detaljeret i dokumentationen med kommentarer. Men i de fleste tilfælde vil du ikke kigge der - alle feltnavne har logiske navne.

Hvad giver det brugeren? Dette giver dig mulighed for at ændre teamets arbejdsflow meget fleksibelt ved hjælp af velkendte tilgange. For eksempel kan udviklere gemme et projekt i samme lager som backend. I brancher kan udvikleren ud over at ændre selve kodebasen rette eksisterende forespørgselsscripts og tests. Efter at have foretaget ændringer til depotet (git, svn, mercurial - hvad end du bedst kan lide), lancerer CI (din favorit, ikke påtvunget af nogen) vores konsolværktøj testmace-cli, og rapporten modtaget efter udførelse (for eksempel i junit-format, som også understøttes i testmace-cli) sendes til det relevante system. Og det ovennævnte sikkerhedsproblem er ikke længere et problem.

Som du kan se, påtvinger TestMace ikke sit økosystem og paradigme. I stedet passer det nemt ind i etablerede processer.

Dynamiske variabler

TestMace følger no-code konceptet: hvis et problem kan løses uden brug af kode, forsøger vi at give denne mulighed. At arbejde med variabler er præcis den funktionalitet, hvor man i de fleste tilfælde kan undvære programmering.

Eksempel: vi modtog et svar fra serveren, og vi vil gemme en del af svaret i en variabel. I Postman ville vi i et testscript (som er mærkeligt i sig selv) skrive noget som:

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

Men efter vores mening ser det overflødigt ud at skrive et manuskript til et så simpelt og ofte brugt scenarie. Derfor er det i TestMace muligt at tildele en del af svaret til en variabel ved hjælp af den grafiske grænseflade. Se hvor simpelt det er:

Hvorfor TestMace er bedre end Postman

Og nu med hver anmodning vil denne dynamiske variabel blive opdateret. Men du kan indvende og hævde, at Postman-tilgangen er mere fleksibel og giver dig mulighed for ikke kun at lave en opgave, men også at udføre en vis forbehandling. Sådan ændrer du det forrige eksempel:

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

Nå, til dette formål har TestMace script node, som dækker dette scenarie. For at reproducere den tidligere sag, men allerede udført af TestMace, skal du oprette en scriptnode efter anmodningen og bruge følgende kode som et script:

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

Som du kan se, fungerede sammensætningen af ​​noderne også her. Og for et så simpelt tilfælde som beskrevet ovenfor, kan du blot tildele udtrykket ${crypto.MD5($response.data)} variabel oprettet via GUI!

Oprettelse af tests via GUI

Postman giver dig mulighed for at oprette tests ved at skrive scripts (i tilfælde af Postman er dette JavaScript). Denne tilgang har mange fordele - næsten ubegrænset fleksibilitet, tilgængelighed af færdige løsninger mv.

Men virkeligheden er ofte sådan (sådan er vi ikke, livet er sådan), at en tester ikke har programmeringsevner, men han vil gerne bringe fordele til holdet lige nu. I sådanne tilfælde giver TestMace dig, efter konceptet uden kode, mulighed for at oprette simple tests gennem en GUI uden at ty til at skrive scripts. Her er for eksempel, hvordan processen med at lave en test, der sammenligner værdier for lighed, ser ud:

Hvorfor TestMace er bedre end Postman

At oprette tests i en grafisk editor eliminerer dog ikke muligheden at skrive test i kode. Alle de samme biblioteker er her som i script-noden, og chai til at skrive prøver.

Der opstår ofte situationer, når en bestemt forespørgsel eller endda et helt script skal udføres flere gange i forskellige dele af projektet. Et eksempel på sådanne anmodninger kunne være tilpasset flertrinsgodkendelse, at bringe miljøet til den ønskede tilstand osv. Generelt set i form af programmeringssprog vil vi gerne have funktioner, der kan genbruges i forskellige dele af applikationen. I TestMace udføres denne funktion af link node Det er meget nemt at bruge:
1) opret en forespørgsel eller et script
2) opret en node af typen Link
3) i parametrene skal du angive et link til det script, der blev oprettet i det første trin

I en mere avanceret version kan du angive, hvilke dynamiske variabler fra scriptet, der overføres til et højere niveau i forhold til linket. Lyder det forvirrende? Lad os sige, at vi har oprettet en mappe med navnet oprette-indlæg, inden for hvilken en dynamisk variabel er tildelt denne node postId. Nu i Link node oprette-post-link du kan udtrykkeligt angive, at variablen postId tildelt en forfader oprette-post-link. Denne mekanisme (igen, i programmeringssprog) kan bruges til at returnere et resultat fra en "funktion". Generelt er det fedt, DRY er i fuld gang og igen blev ikke en eneste linje kode beskadiget.

Hvorfor TestMace er bedre end Postman

Hvad angår Postman, er der en funktionsanmodning til genbrug af anmodninger hængende siden 2015, og det ser ud til, at der er endda nogle hintsat de arbejder på dette problem. I sin nuværende form har Postman selvfølgelig evnen til at ændre udførelsestråden, hvilket i teorien nok gør det muligt at implementere lignende adfærd, men dette er mere et dirty hack end en virkelig fungerende tilgang.

Andre forskelle

  • Større kontrol over omfanget af variabler. Det mindste omfang, inden for hvilket en variabel kan defineres i Postman, er indsamling. TestMace giver dig mulighed for at definere variabler for enhver forespørgsel eller mappe. I Postman Share Collection giver du mulighed for kun at eksportere samlinger, mens deling i TestMace fungerer for enhver node
  • TestMace understøtter arvelige overskrifter, som som standard kan erstattes med underordnede forespørgsler. Postmand har noget om dette: opgaven, og det er endda lukket, men det tilbydes som en løsning... bruge scripts. I TestMace er alt dette konfigureret via GUI, og der er en mulighed for at deaktivere nedarvede overskrifter i specifikke efterkommere
  • Fortryd/Gentag. Fungerer ikke kun ved redigering af noder, men også ved flytning, sletning, omdøbning og andre handlinger, der ændrer projektets struktur
  • Filer knyttet til anmodninger bliver en del af projektet og gemmes med det, mens de er perfekt synkroniserede, i modsætning til Postman. (Ja, du behøver ikke længere manuelt at vælge filer, hver gang du starter og overføre dem til kolleger i arkiver)

Funktioner, der allerede er på vej

Vi kunne ikke modstå fristelsen til at løfte sløret af hemmelighedskræmmeri over de næste udgivelser, især når funktionaliteten er meget velsmagende og allerede undergår en pre-release-polering. Så lad os mødes.

Funktioner

Postman bruger som bekendt såkaldte dynamiske variable til at generere værdier. Listen over dem er imponerende og langt de fleste funktioner bruges til at generere falske værdier. For at generere en tilfældig e-mail skal du f.eks. skrive:

{{$randomEmail}}

Men da disse er variable (omend dynamiske), kan de ikke bruges som funktioner: de kan ikke parametreres, derfor vil det ikke være muligt at tage en hash fra en streng.

Vi planlægger at tilføje "ærlige" funktioner til TestMace. Lige inde i ${} vil det ikke kun være muligt at få adgang til en variabel, men også at kalde en funktion. De der. hvis du har brug for at generere den notoriske falske e-mail, skriver vi bare

${faker.internet.email()}

Udover at det er en funktion, vil du bemærke, at det er muligt at kalde en metode på et objekt. Og i stedet for en stor flad liste af dynamiske variable, har vi et sæt logisk grupperede objekter.

Hvad hvis vi vil beregne hashen af ​​en streng? Let!

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

Du vil bemærke, at du endda kan sende variabler som parametre! På dette tidspunkt kan en nysgerrig læser mistænke, at der er noget galt...

Brug af JavaScript i udtryk

... Og med god grund! Da kravene til funktioner blev dannet, kom vi pludselig til den konklusion, at gyldigt javascript skulle skrives i udtryk. Så nu er du fri til at skrive udtryk som:

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

Og alt dette uden scripts, lige i inputfelterne!

Med hensyn til Postman kan man her kun bruge variable, og når man forsøger at skrive det mindste udtryk, bander validatoren og nægter at beregne det.

Hvorfor TestMace er bedre end Postman

Avanceret autofuldførelse

I øjeblikket har TestMace en standard autofuldførelse, der ser sådan ud:

Hvorfor TestMace er bedre end Postman

Her er det udover autofuldførelseslinjen angivet, hvad denne linje hører til. Denne mekanisme virker kun i udtryk omgivet af parenteser ${}.

Som du kan se, er der tilføjet visuelle markører, der angiver typen af ​​variabel (for eksempel streng, tal, matrix osv.). Du kan også ændre autofuldførelsestilstandene (du kan f.eks. vælge autofuldførelse med variabler eller overskrifter). Men selv dette er ikke det vigtigste!

For det første fungerer autofuldførelse selv i udtryk (hvor det er muligt). Sådan ser det ud:

Hvorfor TestMace er bedre end Postman

Og for det andet er autofuldførelse nu tilgængelig i scripts. Tag et kig på, hvordan det virker!

Hvorfor TestMace er bedre end Postman

Det nytter ikke at sammenligne denne funktionalitet med Postman - autofuldførelse er der kun begrænset til statiske lister over variabler, overskrifter og deres værdier (ret mig, hvis jeg har glemt noget). Scripts er ikke autofuldført :)

Konklusion

Oktober var et år siden starten på vores produktudvikling. I løbet af denne tid nåede vi at gøre en masse ting og på nogle punkter indhentede vi vores konkurrenter. Men uanset hvad, så er vores mål at lave et virkelig praktisk værktøj til at arbejde med API'er. Vi har stadig meget arbejde at gøre, her er en grov plan for udviklingen af ​​vores projekt for det kommende år: https://testmace.com/roadmap.

Din feedback vil give os mulighed for bedre at navigere i overfloden af ​​funktioner, og din støtte giver os styrke og tillid til, at vi gør det rigtige. Det forholder sig sådan, at i dag er en vigtig dag for vores projekt - dagen TestMace blev offentliggjort på ProductHunt. Støt venligst vores projekt, det er meget vigtigt for os. Desuden er der et fristende tilbud på vores PH-side i dag, og det er begrænset

Kilde: www.habr.com

Tilføj en kommentar