Hvordan er TestMace bedre end Postman?

Hvordan er TestMace bedre end Postman?

Hej alle sammen, jeg er her TestMace! Måske ved mange af jer, hvem vi er fra vores tidligere artikler. For dem, der lige er tilsluttet: Vi udvikler et IDE til arbejde med API TestMace. Det mest stillede spørgsmål, når man sammenligner TestMace med konkurrerende produkter, er: «Hvordan adskiller I jer fra Postman?». Vi har besluttet, at det er tid til at give et udførligt svar på dette spørgsmål. Nedenfor har vi punkt for punkt beskrevet vores fordele i forhold til Postman.

Opdeling i noder

Hvis du arbejder med Postman, ved du, at anmodningsgrænsefladen indeholder al den nødvendige funktionalitet. Der er scripts, tests og selve anmodningerne. Dette forenkler arbejdet for nybegyndere, men på store scenarier er denne tilgang ikke fleksibel. Hvad hvis man ønsker at oprette flere anmodninger og gøre aggregation på dem? Hvad hvis man ønsker at udføre et script uden anmodning eller flere logisk adskilte scripts i træk? I sidste ende ville det være godt at adskille tests fra almindelige nyttige scripts. Derudover er tilgangen «vi tilføjer al funktionalitet i én node» ikke skalerbar — grænsefladen bliver hurtigt overfyldt.

TestMace opdeler oprindeligt al funktionalitet i forskellige typer noder. Vil du lave en anmodning? Her er en request step node. Vil du skrive et script? Her er en script node. Har du brug for tests? Værsgo — Assertion node. Åh ja, du kan også pakke alt dette ind i en folder node. Og alt dette kan let kombineres med hinanden. Denne tilgang er ikke kun meget fleksibel, men i overensstemmelse med princippet om enkelt ansvar tillader den, at man kun bruger det, man virkelig har brug for i øjeblikket. Hvorfor har jeg brug for scripts og tests, hvis jeg bare vil lave en anmodning?

Menneskelæseligt projektformat

Mellem TestMace og Postman er der en konceptuel forskel i måden, data opbevares. I Postman opbevares alle anmodninger et sted i lokal lagring. Hvis der er brug for at dele anmodninger mellem flere brugere, skal man bruge den indbyggede synkronisering. Dette er faktisk en almindeligt anerkendt tilgang, men ikke uden ulemper. Hvad med databeskyttelse? Nogle virksomheders politikker tillader måske ikke opbevaring af data hos tredjepart. Men vi mener, at TestMace kan tilbyde noget bedre! Og dette forbedring hedder «menneskelæseligt projektformat».

Lad os starte med, at der i TestMace overhovedet findes en enhed kaldet "projekt". Og appen blev oprindeligt udviklet med henblik på at gemme projekter i versionskontrolsystemer: projektets træstruktur projiceres næsten identisk på filstrukturen, hvor yaml bruges som lagringsformat (uden unødvendige parenteser og kommaer), og den filmæssige repræsentation af hver node er detaljeret beskrevet i dokumentationen med kommentarer. Men i de fleste tilfælde vil du ikke kigge derhen — alle feltlængder har logiske navne.

Hvad giver dette brugeren? Det giver mulighed for meget fleksibelt at ændre teamets workflow ved hjælp af velkendte tilgange. For eksempel kan udviklerne gemme projektet i det samme repository som backend. I grene, ud over at ændre selve kodebasen, kan udvikleren rette eksisterende forespørgselscenarier og tests. Efter at ændringerne er fastlåst i repository'en (git, svn, mercurial — hvad du foretrækker), vil CI (din yndlings, som ingen har påtvunget) aktivere vores konsolværktøj. testmace-cli, og den rapport, der frembringes efter udførelsen (f.eks. i junit-format, som også understøttes i testmace-cli), sendes til det relevante system. Og det førnævnte problem med sikkerhed er heller ikke længere et problem.

Som du ser, påtvinger TestMace ikke sin økosystem og paradigm. I stedet integreres det let i allerede etablerede processer.

Dynamiske variabler

TestMace følger no-code konceptet: hvis et problem kan løses uden at bruge kode, forsøger vi at give mulighed for det. Arbejde med variabler er netop den funktionalitet, hvor man i de fleste tilfælde kan klare sig uden programmering.

Eksempel: vi har modtaget et svar fra serveren, og vi ønsker at gemme en del af svaret i en variabel. I Postman ville vi i testscriptet (hvilket i sig selv er mærkeligt) skrive noget i stil med:

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

Men efter vores mening virker det overflødigt at skrive et script til et så simpelt og ofte brugt scenarie. Derfor har TestMace mulighed for at tildele en variabel en del af svaret ved hjælp af et grafisk interface. Se hvor enkelt det er:

Hvordan er TestMace bedre end Postman?

Og nu vil denne dynamiske variabel blive opdateret ved hver anmodning. Men du kan indvende, at Postmans tilgang er mere fleksibel og giver mulighed for ikke bare at foretage en tildeling, men også udføre visse forbehandlingsoperationer. Her er hvordan du kan modificere det forrige eksempel:

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

Nå, til dette formål findes der i TestMace script en node, der dækker dette scenario. For at reproducere det forrige tilfælde, men nu i TestMace's udførelse, skal du efter anmodningen oprette en script-node og bruge den følgende kode som script:

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

Som du kan se, har sammensætningen af noder gjort en god tjeneste her. Og for et så simpelt tilfælde som det, der er beskrevet ovenfor, kan du direkte tildele udtrykket ${crypto.MD5($response.data)} til en variabel, der oprettes via det grafiske interface!

Oprettelse af tests via GUI

Postman giver mulighed for at oprette tests ved at skrive scripts (i tilfælde af Postman er det JavaScript). Denne tilgang har mange fordele - praktisk talt ubegribelig fleksibilitet, tilgængelighed af færdige løsninger osv.

Imidlertid er realiteterne ofte sådan (det er ikke os, livet er sådan), at testeren ikke har programmeringsevner, men man gerne ville bidrage til teamet allerede nu. I sådanne tilfælde, i overensstemmelse med no-code-konceptet, tillader TestMace at oprette enkle tests via det grafiske interface uden at skulle skrive scripts. Her er for eksempel, hvordan processen med at oprette en test, der sammenligner værdier for lighed, ser ud:

Hvordan er TestMace bedre end Postman?

Imidlertid annullerer oprettelsen af tests i den grafiske editor ikke muligheden for at skrive tests i koden. Her er alle de samme biblioteker som i script-noden, og chai til at skrive tests.

Opstår der ofte situationer, hvor en bestemt anmodning eller endda et helt scenario skal udføres flere gange i forskellige dele af projektet. Et eksempel på sådanne anmodninger kan være brugerdefineret multitrinsautorisering, tilpasning af miljøet til den ønskede tilstand osv. Generelt, hvis man taler i programmeringssprogs termer, ville man gerne have funktioner, som kan genbruges i forskellige dele af applikationen. I TestMace udfører denne funktion link Enheden. Det er meget enkelt at bruge:
1) Opret en anmodning eller script
2) Opret en node af typen Link
3) Angiv linket til scriptet, der blev oprettet i det første trin, i indstillingerne

I en mere avanceret version kan du angive, hvilke dynamiske variabler fra scriptet der skal sendes op til niveauet ovenfor i forhold til linket. Lyder det forvirrende? Lad os sige, at vi har oprettet en mappe med navnet create-post, hvor en dynamisk variabel tildeles denne node postId. Nu kan du i Link-noden create-post-link udtrykkeligt angive, at variablen postId tildeles den overordnede. create-post-linkDenne mekanisme (igen, for at tale programmeringssprog) kan bruges til at returnere et resultat fra "funktionen". Generelt er det fantastisk, DRY i fuld gang og ingen linjer af kode er lidt skadet.

Hvordan er TestMace bedre end Postman?

Hvad angår Postman, så hænger feature request om genbrug af anmodninger siden 2015, og der synes ligefrem at være nogle hints, om at der arbejdes på dette problem. I den nuværende form har Postman selvfølgelig mulighed for at ændre udførelsesstrømmen, hvilket teoretisk set måske tillader at implementere en sådan adfærd, men det er snarere et beskidt hack end en reel løsning.

Andre forskelle

  • Større kontrol over variablers synlighed. Den mindste omfang, inden for hvilket man kan definere en variabel i Postman, er en samling. TestMace giver mulighed for at definere variabler for enhver anmodning eller mappe. I Postman giver Del samling kun mulighed for at eksportere samlinger, mens deling i TestMace fungerer for enhver node
  • TestMace understøtter arvningsoverskrifter, som som standard kan indsættes i underordnede anmodninger. I Postman findes der en mulighed for dette, task, og den er endda lukket, men som løsning foreslås det at... bruge scripts. I TestMace konfigureres det hele via GUI, og der er mulighed for valgfri deaktivering af arvningsoverskrifter i specifikke efterkommere.
  • Fortryd/Gendan. Det fungerer ikke kun ved redigering af noder, men også ved flytning, sletning, omdøbning og andre operationer, der ændrer projektstrukturen.
  • Filer knyttet til anmodninger bliver en del af projektet og gemmes sammen med det, mens de synkroniseres perfekt, i modsætning til Postman. (Ja, du skal ikke længere vælge filer manuelt hver gang ved hver kørsel og sende dem til kollegerne i arkiver)

Features, der allerede er på vej

Vi kunne ikke modstå fristelsen til at løfte sløret for de kommende udgivelser, især når funktionaliteterne er så spændende og allerede gennemgår præ-release finpudsning. Så lad os tage imod.

Functions

Som bekendt bruges såkaldte dynamiske variabler til at generere værdier i Postman. Listen over dem er imponerende og størstedelen af funktionerne bruges til at generere falske værdier. For eksempel, for at generere en tilfældig email skal du skrive:

{{$randomEmail}}

Men da disse er variabler (om end dynamiske), kan de ikke bruges som funktioner: de er ikke parameteriserbare, og derfor kan du ikke tage en hash af en streng.

I TestMace planlægger vi at tilføje "ærlige" funktioner. Inden i ${} kan du ikke kun få adgang til en variabel, men også kalde en funktion. Så hvis du skal generere den berygtede falske email, skriver vi bare

${faker.internet.email()}

Udover at dette er en funktion, kan man bemærke, at der også er mulighed for at kalde metoder på objekter. Og i stedet for en stor flad liste af dynamiske variabler, har vi et sæt logisk grupperede objekter.

Hvad hvis vi vil beregne en hash af en streng? Det er nemt!

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

Man kan bemærke, at det endda er muligt at videregive variabler som parametre! Her kan den nysgerrige læser mistænke, at der er noget galt…

Brug af JavaScript i udtryk

… Og det med god grund! Da kravene til funktioner blev udarbejdet, indså vi pludselig, at vi skulle tillade valid JavaScript i udtryk. Derfor er du nu fri til at skrive udtryk i stil med:

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

Og alt dette uden scripts direkte i inputfelterne!

Når det kommer til Postman, kan man kun bruge variabler, og ved forsøg på at skrive et mere komplekst udtryk, vil validatoren klage og nægte at beregne det.

Hvordan er TestMace bedre end Postman?

Avanceret autoudfyldning

I øjeblikket har TestMace standard autoudfyldning, som ser således ud:

Hvordan er TestMace bedre end Postman?

Her angives udover den autoudfyldte streng, hvad denne streng tilhører. Denne mekanisme fungerer kun i udtryk indrammet med ${}.

Som man kan se, er der tilføjet visuelle markører, der angiver typen af variabel (for eksempel streng, tal, array osv.). Man kan også ændre autofuldførelsesindstillingerne (for eksempel kan man vælge autofuldførelse med variable eller overskrifter). Men det er stadig ikke det vigtigste!

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

Hvordan er TestMace bedre end Postman?

Og for det andet er autofuldførelse nu også tilgængeligt i scripts. Se hvordan det fungerer!

Hvordan er TestMace bedre end Postman?

Det giver ikke mening at sammenligne denne funktionalitet med Postman — der er autofuldførelsen kun begrænset til statiske lister over variable, overskrifter og deres værdier (ret mig, hvis jeg har glemt noget). Scripts autofulløres ikke 🙁

Konklusion

I oktober var det et år siden, vi begyndte at udvikle vores produkt. I løbet af denne tid har vi nået meget, og vi har indhentet vores konkurrenter på nogle parametre. Men uanset hvad er vores mål at skabe et virkelig brugervenligt værktøj til at arbejde med API. Vi har stadig meget arbejde foran os, her er en omtrentlig udviklingsplan for vores projekt det næste år: https://testmace.com/roadmap.

Din feedback vil hjælpe os med bedre at navigere i mængden af funktioner, og din støtte giver os styrke og selvtillid i, at vi gør det rette. I dag er en vigtig dag for vores projekt — dagen for offentliggørelsen af TestMace på ProductHunt. Venligst støt vores projekt, det er meget vigtigt for os. Især fordi der er et attraktivt tilbud på vores PH-side i dag, som er begrænset

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster