Vad gör TestMace bÀttre Àn Postman?

Vad gör TestMace bÀttre Àn Postman?

Hej alla, hÀr Àr vi TestMace! MÄnga kanske kÀnner oss genom vÄra de tidigare artiklar. För dem som just har kopplat upp sig: vi utvecklar en IDE för att arbeta med API TestMace. Den vanligaste frÄgan vid jÀmförelse av TestMace med konkurrerande produkter Àr: "Hur skiljer ni er frÄn Postman?" Vi har bestÀmt oss för att det Àr dags att ge ett utförligt svar pÄ denna frÄga. Nedan har vi punkt för punkt beskrivit vÄra fördelar gentemot Postman.

Uppdelning i noder

Om du arbetar med Postman vet du att förfrÄgningsgrÀnssnittet innehÄller all nödvÀndig funktionalitet. HÀr finns bÄde skript, tester och förfrÄgningar. Detta förenklar arbetet för nybörjare, men pÄ större scenarier Àr denna metod inte flexibel. Vad hÀnder om du vill skapa flera förfrÄgningar och göra en aggregering pÄ dem? Vad hÀnder om du vill köra ett skript utan förfrÄgan eller flera logiskt separerade skript i följd? I slutÀndan skulle det vara bra att separera tester frÄn vanliga utilitariska skript. Dessutom Àr tillvÀgagÄngssÀttet "att lÀgga till all funktionalitet i en nod" inte skalbart - grÀnssnittet blir snabbt överbelastat.

TestMace delar frĂ„n början upp all funktionalitet i olika typer av noder. Vill du göra en förfrĂ„gan? HĂ€r har du request step nod. Vill du skriva ett skript? HĂ€r har du script nod. Behöver du tester? VarsĂ„god - Assertion nod. Åh ja, du kan ocksĂ„ slĂ„ in allt detta i en folder nod. Och allt detta gĂ„r lĂ€tt att kombinera. Detta tillvĂ€gagĂ„ngssĂ€tt Ă€r inte bara mycket flexibelt, utan enligt principen om enhetlig ansvarighet tillĂ„ter det att anvĂ€nda bara det du verkligen behöver just nu. Varför skulle jag behöva skript och tester om jag bara vill göra en förfrĂ„gan?

MÀnskligt lÀsbart projektformat

Det finns en konceptuell skillnad mellan TestMace och Postman i hur de lagrar data. I Postman lagras alla förfrÄgningar nÄgonstans i det lokala lagret. Om det finns ett behov av att dela förfrÄgningar mellan flera anvÀndare mÄste man anvÀnda den inbyggda synkroniseringen. Detta Àr faktiskt en allmÀnt accepterad metod, men den har sina nackdelar. Hur Àr det med datasÀkerheten? Faktum Àr att vissa företags policyer kanske inte tillÄter lagring av data hos tredje part. Men vi anser att TestMace kan erbjuda nÄgot bÀttre! Och namnet pÄ denna förbÀttring Àr "mÀnskligt lÀsbart projektformat".

LĂ„t oss börja med att sĂ€ga att det faktiskt finns en entitet "projekt" i TestMace. Applikationen har frĂ„n början utvecklats med tanke pĂ„ att lagra projekt i versionshanteringssystem: projekttrĂ€det projiceras praktiskt taget rakt av pĂ„ filstrukturen, lagringsformatet som anvĂ€nds Ă€r yaml (utan onödiga klamrar och kommatecken), och filpresentationen av varje nod Ă€r detaljerat beskriven i dokumentationen med kommentarer. Men i de flesta fall kommer du inte att behöva titta dĂ€r — alla fĂ€ltnamn har logiska beteckningar.

Vad ger detta anvĂ€ndaren? Det möjliggör en mycket flexibel förĂ€ndring av teamets arbetsflöde, med hjĂ€lp av bekanta metoder. Till exempel kan utvecklare lagra projektet i samma repository som backend. I grenarna, förutom att Ă€ndra sjĂ€lva kodbasen, kan utvecklaren justera existerande frĂ„gescenarier och tester. Efter att Ă€ndringarna har bekrĂ€ftats i repositoryt (git, svn, mercurial — vad du Ă€n föredrar) kör CI (din favorit som ingen har pĂ„dyvlat) vĂ„rt kommandoradsverktyg testmace-cli, och rapporten som genereras efter körningen (till exempel i junit-format, som ocksĂ„ stöds av testmace-cli) skickas till det motsvarande systemet. Och den ovan nĂ€mnda sĂ€kerhetsfrĂ„gan Ă€r inte lĂ€ngre ett problem.

Som ni kan se, TestMace inför inte sin egen ekosystem eller paradigm. IstÀllet integreras det lÀtt i redan etablerade processer.

Dynamiska variabler

TestMace följer konceptet no-code: om problemet kan lösas utan att anvÀnda kod, försöker vi ge den möjligheten. Att arbeta med variabler Àr just den funktionaliteten dÀr man i de flesta fall kan klara sig utan programmering.

Exempel: vi fick ett svar frÄn servern, och vi vill spara en del av svaret i en variabel. I Postman skulle vi i testscripten (vilket i sig Àr konstigt) skriva nÄgot i stil med:

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

Men enligt vÄr mening verkar det överflödigt att skriva ett skript för ett sÄ enkelt och ofta anvÀnt scenario. DÀrför finns det i TestMace en möjlighet att tilldela variabeln en del av svaret, med hjÀlp av det grafiska grÀnssnittet. Se hur enkelt det Àr:

Vad gör TestMace bÀttre Àn Postman?

Och nu kommer denna dynamiska variabel att uppdateras vid varje förfrÄgan. Men du kan invÀnda och hÀvda att Postman-metoden Àr mer flexibel och tillÄter inte bara att göra en tilldelning, utan ocksÄ att utföra viss förbehandling. HÀr Àr hur du kan modifiera det tidigare exemplet:

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

NÄvÀl, för detta finns det script en nod i TestMace som tÀcker detta scenario. För att Äterskapa det tidigare fallet, men nu i TestMace, krÀvs att du efter förfrÄgan skapar en script-nod och anvÀnder följande kod som script:

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

Som du kan se har kompositionen av noder gjort stor nytta hÀr. Och för ett sÄ enkelt fall, som det ovan beskrivna, kan du faktiskt bara tilldela ett uttryck ${crypto.MD5($response.data)} till den variabel som skapas via det grafiska grÀnssnittet!

Skapande av tester via GUI

Postman möjliggör skapande av tester genom att skriva skript (i Postman Ă€r det JavaScript). Denna metod har en mĂ€ngd fördelar — nĂ€stan obegrĂ€nsad flexibilitet, tillgĂ„ng till fĂ€rdiga lösningar, etc.

Men verkligheten Àr ofta sÄdan (inte vi, utan livet), att testaren saknar programmeringsfÀrdigheter, och man vill gÀrna bidra till teamet redan nu. För sÄdana fall, i enlighet med no-code-konceptet, lÄter TestMace dig skapa enkla tester via det grafiska grÀnssnittet, utan att skriva skript. HÀr Àr exempel pÄ hur processen för att skapa ett test som jÀmför vÀrden ser ut:

Vad gör TestMace bÀttre Àn Postman?

Men att skapa tester i den grafiska redaktören utesluter inte möjligheten att skriva tester i kod. HÀr finns alla samma bibliotek som i script-noden, och chai för att skriva tester.

UppstÄr ofta situationer dÀr en viss förfrÄgan eller till och med ett helt scenario mÄste utföras flera gÄnger pÄ olika delar av projektet. Exempel pÄ sÄdana förfrÄgningar kan vara anpassad flerstegsautentisering, att sÀtta miljön i rÀtt tillstÄnd, etc. Om vi pratar i termer av programmeringssprÄk skulle man vilja ha funktioner som kan ÄteranvÀndas pÄ olika stÀllen i applikationen. I TestMace utför denna funktion link Knut. Det Àr mycket enkelt att anvÀnda:
1) Skapa en begÀran eller ett skript
2) Skapa en nod av typen LĂ€nk
3) Ange lÀnken till skriptet som skapades i steg ett i parametrarna

I en mer avancerad variant kan du ange vilka dynamiska variabler frÄn skriptet som ska föras vidare till överliggande nivÄer relativt lÀnken. LÄter det förvirrat? Anta att vi har skapat en mapp med namnet create-post, dÀr en dynamisk variabel tilldelas denna nod postId. Nu i LÀnk-noden create-post-link kan du uttryckligen ange att variabeln postId tilldelas förÀldern create-post-link. Denna mekanism (Äterigen, uttryckt i programmeringstermer) kan anvÀndas för att returnera resultat frÄn "funktionen". Allt som allt Àr det fantastiskt, DRY i full skala och Äterigen har ingen kodlinje skadats.

Vad gör TestMace bÀttre Àn Postman?

NÀr det gÀller Postman har funktionen för ÄteranvÀndning av begÀrningar hÀngt sedan 2015, och det verkar till och med finnas nÄgra ledtrÄdar, pÄ att det arbetas pÄ detta problem. I sitt nuvarande skick har Postman naturligtvis möjlighet till flödesÀndring, vilket i teorin troligen skulle kunna möjliggöra ett sÄdant beteende, men det Àr snarare en smutsig hack Àn en verkligt fungerande metod.

Övriga skillnader

  • Större kontroll över variablers synlighet. Den minsta omfattningen inom vilken en variabel kan definieras i Postman Ă€r samlingen. TestMace gör det möjligt att definiera variabler för vilken begĂ€ran eller mapp som helst. I Postman tillĂ„ter delning av samlingar att exportera endast samlingar, medan i TestMace fungerar delning för varje nod
  • TestMace stöder Ă€rvda rubriker, som som standard kan inkluderas i underliggande begĂ€rningar. NĂ€r det gĂ€ller Postman finns det uppgift, och det Ă€r till och med stĂ€ngt, men som lösning föreslĂ„s
 att anvĂ€nda skript. I TestMace konfigureras allt detta genom GUI och det finns möjlighet att valfritt stĂ€nga av Ă€rvda rubriker i specifika underordnade
  • Ångra/Gör om. Fungerar inte bara vid redigering av noder, utan ocksĂ„ vid flyttning, radering, omdöpning och andra operationer som Ă€ndrar projektstrukturen
  • Filer som bifogas till begĂ€rningar blir en del av projektet och lagras tillsammans med det, och synkroniseras perfekt, till skillnad frĂ„n Postman. (Ja, du behöver inte lĂ€ngre manuellt vĂ€lja filer varje gĂ„ng och överföra till kollegor i arkiv)

Funktioner som redan Àr pÄ vÀg

Vi kunde inte motstÄ frestelsen att öppna en liten del av hemligheten kring kommande releaser, sÀrskilt inte nÀr funktionerna Àr sÄ attraktiva och redan genomgÄr en förrelease-finslipning. LÄt oss vÀlkomna dem.

Funktioner

Som bekant anvÀnds sÄ kallade dynamiska variabler för att generera vÀrden i Postman. Listan Àr imponerande och den övervÀldigande majoriteten av funktionerna syftar till att generera falska vÀrden. Till exempel, för att generera en slumpmÀssig e-postadress behöver man skriva:

{{ $randomEmail }}

Men eftersom detta Àr variabler (Àven om de Àr dynamiska) kan de inte anvÀndas som funktioner: de Àr inte parameteriserade, och dÀrmed gÄr det inte att ta en hash av en strÀng.

PÄ TestMace planerar vi att lÀgga till "Àrliga" funktioner. Direkt inom ${} kan du inte bara referera till en variabel utan Àven anropa en funktion. Det vill sÀga, om vi behöver generera den beryktade falska e-postadressen skriver vi helt enkelt

${faker.internet.email()}

Förutom att det Àr en funktion, kan man ocksÄ se att det finns möjlighet att anropa metod frÄn ett objekt. Och istÀllet för en stor platt lista av dynamiska variabler har vi en uppsÀttning logiskt grupperade objekt.

Vad hÀnder om vi vill rÀkna ut en hash frÄn en strÀng? Inga problem!

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

Man kan se att man till och med kan skicka variabler som parametrar! Vid detta tillfÀlle kan den nyfikna lÀsaren misstÀnka att nÄgot Àr fel...

AnvÀndning av JavaScript i uttryck

... och med rÀtta! NÀr kraven pÄ funktionerna formulerades kom vi plötsligt fram till att uttryck mÄste tillÄta giltig JavaScript. SÄ nu Àr det fritt fram att skriva uttryck i stil med:

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

Och allt detta utan skript direkt i inmatningsfÀlten!

NÀr det gÀller Postman kan man bara anvÀnda variabler, och vid försök att skriva ens ett litet uttryck klagar validatorn och vÀgrar att berÀkna det.

Vad gör TestMace bÀttre Àn Postman?

Avancerad autocompletion

För nÀrvarande har TestMace standardautocompletion som ser ut pÄ följande sÀtt:

Vad gör TestMace bÀttre Àn Postman?

HÀr, förutom den autocompleta strÀngen, anges Àven vad denna strÀng tillhör. Denna mekanism fungerar endast i uttryck som Àr inneslutna i klamrar ${}.

Som du kan mÀrka har vi lagt till visuella markörer som indikerar typ av variabel (t.ex. strÀng, tal, array osv.). Du kan ocksÄ vÀxla mellan autocompletion-lÀgen (t.ex. vÀlja autocompletion med variabler eller rubriker). Men Àven det Àr inte det viktigaste!

För det första fungerar autocompletion Àven i uttryck (dÀr det Àr möjligt). SÄ hÀr ser det ut:

Vad gör TestMace bÀttre Àn Postman?

Och för det andra Àr autocompletion nu ocksÄ tillgÀngligt i skripten. Titta pÄ hur det fungerar!

Vad gör TestMace bÀttre Àn Postman?

Det Ă€r inte meningsfullt att jĂ€mföra denna funktionalitet med Postman - dĂ€r begrĂ€nsas autocompletion endast till statiska listor av variabler, rubriker och deras vĂ€rden (korrigera mig om jag missat nĂ„got). Skripten autocompletas inte 🙁

Slutsats

I oktober firade vi ett Är sedan vi började utveckla vÄr produkt. Under denna tid har vi gjort mycket och i vissa avseenden hunnit ikapp vÄra konkurrenter. Men hur som helst, vÄrt mÄl Àr att skapa ett riktigt anvÀndarvÀnligt verktyg för att arbeta med API. Vi har fortfarande mycket arbete kvar, hÀr Àr en ungefÀrlig utvecklingsplan för vÄrt projekt under det kommande Äret: https://testmace.com/roadmap.

Din feedback kommer att hjÀlpa oss att bÀttre navigera i mÀngden funktioner, och ditt stöd ger oss kraft och förtroende i att det vi gör Àr viktigt. Det rÄkade bli sÄ att idag Àr en betydelsefull dag för vÄrt projekt - dagen för publiceringen av TestMace pÄ ProductHunt. VÀnligen stöd vÄrt projekt, det Àr vÀldigt viktigt för oss. Speciellt eftersom vi har ett lockande erbjudande pÄ vÄr PH-sida idag, och det Àr begrÀnsat

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster