TestMace. Snabb start

TestMace. Snabb start

Hej alla. Vi börjar lÄngsamt komma fram i ljuset och fortsÀtter vÄr serie av artiklar om vÄr produkt. Efter den föregÄende översiktsartikeln fick vi mÄnga Äterkopplingar (övervÀgande positiva), förslag och buggrapporter. Idag kommer vi att visa TestMace det i praktiken och ni kommer att kunna utvÀrdera nÄgra funktioner i vÄr applikation. För en mer komplett upplevelse rekommenderar jag att ni besöker vÄr dokumentation pÄ adressen http://docs-ru.testmace.com. SÄ, lÄt oss börja!

Installation

Vi börjar med det uppenbara. Applikationen Ă€r tillgĂ€nglig och kan verkligen testas pĂ„ tre plattformar – Linux, Windows, MacOS. Ni kan ladda ner installationsprogrammet för den intressanta OS frĂ„n vĂ„r website. För Linux-anvĂ€ndare finns det möjlighet att installera snap-paketet. Vi hoppas verkligen att vi snart ocksĂ„ fĂ„r till Microsoft Store och App Store (behövs det? Vad tycker ni?).

Testscenariot

Vi har valt följande standardscenario som testobjekt:

  • logga in: anvĂ€ndare – admin, lösenord – password
  • lĂ€gga till en ny post
  • kontrollera korrektheten i tillĂ€ggningen av posten

Vi kommer att testa pÄ https://testmace-quick-start.herokuapp.com/. Det Àr en vanlig json-server, som passar perfekt för att testa sÄdana applikationer. Vi har bara lagt till tokenbaserad autentisering pÄ alla rutter av json-server och skapat en login-metod för att fÄ den nÀmnda token. Vi kommer att gÄ framÄt steg för steg och gradvis förbÀttra vÄrt projekt.

Skapande av projekt och försök att skapa en entitet utan autentisering

Först skapar vi ett nytt projekt (Arkiv->Nytt projekt). Om ni kör applikationen för första gÄngen öppnas ett nytt projekt automatiskt. Vi börjar med att försöka göra en begÀran om att skapa en ny post (kanske skapandet av poster Àr tillgÀngligt utan autentisering). VÀlj i kontextmenyn Project noden som heter LÀgg till nod -> BegÀranSteg. Ange följande namn för noden: create-post. Resultatet blir att en ny nod skapas i trÀdet och fliken för denna nod öppnas. StÀll in följande parameterar för begÀran:

  • Typ av begĂ€ran: POST
  • url: https://testmace-quick-start.herokuapp.com/posts
  • BegĂ€rans kropp: json med vĂ€rdet {"title": "New testmace quick start post"}
    Om ni har gjort allt rÀtt kommer grÀnssnittet att se ut som följande:

TestMace. Snabb start

Men om vi försöker genomföra begÀran kommer servern att returnera kod 401 och utan autentisering Àr ingenting möjligt pÄ denna server. Ja, det Àr helt förvÀntat).

LÀgg till begÀran för autentisering

Som redan nÀmnts har vi en POST endpoint /login, som tar emot json av följande typ som begÀrans kropp: {"username": "", "password": ""}, dÀr username och password (Äterigen, frÄn den inledande ovan) har betydelse admin och password dÀrmed. I svaret returnerar denna endpoint json av typen {"token": ""}. Vi kommer att anvÀnda det för autentisering. LÄt oss skapa BegÀranSteg en nod med namnet login, dÀr förÀldern kommer att vara Projekt noden. Med hjÀlp av drag-and-drop flyttar du denna nod i trÀdet högre Àn noden create-post. Vi kommer att stÀlla in följande parametrar för den nyligen skapade förfrÄgan:

Vi utför förfrÄgan och fÄr en tvÄhundrad elva kod med token i svaret. SÄ hÀr:

TestMace. Snabb start

Refaktorering: tar bort domÀnerna

Tills dess Àr förfrÄgningarna inte kopplade i ett enda scenario. Men det Àr inte den enda bristen. Om du tittar noga kan du mÀrka att Ätminstone domÀnen dupliceras i bÄda förfrÄgningarna. Inte bra. Det Àr dags att refaktorera denna del av det framtida scenariot och variabler kommer att hjÀlpa oss med detta.

I första hand utför variabler samma roll som i andra liknande verktyg och programmeringssprĂ„k — eliminera duplicering, öka lĂ€sbarheten, osv. Mer om variabler kan lĂ€sas i vĂ„r dokumentation. I detta fall kommer vi att behöva anvĂ€ndardefinierade variabler.

Definiera en variabel pÄ projektets nivÄ domain med vÀrdet https://testmace-quick-start.herokuapp.com. För detta behöver du

  • öppna fliken för denna nod och klicka pĂ„ kalkylatorikonen till höger uppe
  • klicka pĂ„ + ADD VARIABLE
  • ange namn och vĂ€rde för variabeln
    I vÄrt fall kommer dialogen med den tillagda variabeln att se ut som följer:

TestMace. Snabb start

OK. Nu kan vi, tack vare arv, anvÀnda denna variabel i avkommor pÄ vilken nivÄ av inbÀddning som helst. I vÄrt fall Àr det noder login och create-post. För att anvÀnda variabeln i textrutan mÄste du skriva ${}. Till exempel, url för inloggning omvandlas till ${domain}/login, och för create-post noden kommer url att se ut som ${domain}/posts.

SÄledes, med principen DRY i Ätanke, har vi nÄgot förbÀttrat scenariot.

Spara token i en variabel

Eftersom vi pratar om variabler, lĂ„t oss utveckla detta Ă€mne nĂ„got. Just nu fĂ„r vi vid en lyckad inloggning en autentiseringstoken frĂ„n servern, som vi kommer att behöva i efterföljande förfrĂ„gningar. LĂ„t oss spara denna token i en variabel. Eftersom vĂ€rdet pĂ„ variabeln kommer att definieras under körning av scenariot, anvĂ€nder vi en speciell mekanism — dynamiska variabler.

För att börja, lĂ„t oss göra en inloggningsbegĂ€ran. I fliken Parsed svaret, hovra med muspekaren över token och vĂ€lj punkten i kontextmenyn (som anropas antingen med höger musknapp eller genom att trycka pĂ„ knappen 
) Tilldela till variabel. En dialogruta kommer att dyka upp med följande fĂ€lt:

  • Path — vilken del av svaret som tas (i vĂ„rt fall Ă€r det body.token)
  • Aktuellt vĂ€rde — vilket vĂ€rde som finns pĂ„ sökvĂ€gen Path (i vĂ„rt fall Ă€r detta token-vĂ€rdet)
  • Variabelnamn — namnet pĂ„ variabeln dĂ€r Aktuellt vĂ€rde det kommer att sparas. I vĂ„rt fall blir det token
  • Node — i vilken av förfĂ€derna variabeln kommer att skapas Variabelnamn. LĂ„t oss vĂ€lja Projekt

Fyllt dialog ser ut som följer:

TestMace. Snabb start

Nu, vid varje körning av noden, login kommer den dynamiska variabeln token att uppdateras med det nya vÀrdet frÄn svaret. Och denna variabel kommer att lagras i Projekt noden och tack vare Àrvandet vara tillgÀnglig för efterkommande.

För att referera till dynamiska variabler mÄste man anvÀnda inbyggd variabel $dynamicVar. Till exempel, för att nÄ det sparade tokenet bör du aktivera ${$dynamicVar.token}.

Vi skickar autentiseringstoken i begÀrningar

I tidigare steg fick vi autentiseringstoken och allt vi behöver göra Àr att lÀgga till en rubrik Authorization med vÀrdet Bearer i alla begÀrningar som krÀver autentisering, inklusive i create-post. Det finns flera sÀtt att göra detta:

  1. Manuellt kopiera token och lÀgga till autentiseringrubriken i intressanta begÀrningar. Denna metod fungerar, men dess anvÀndning Àr begrÀnsad till begÀrningar av typen "gjord och kastad". För flera körningar av scenarier Àr den inte lÀmplig.
  2. AnvÀnda funktionaliteten för autentisering.
  3. AnvÀnd standardrubriker

AnvĂ€ndningen av den andra metoden verkar uppenbar, men i kontexten av denna artikel Ă€r en sĂ„dan ansats
 ointressant. Egentligen: autentiseringsmekanismen Ă€r mer eller mindre bekant för er frĂ„n andra verktyg (Ă€ven om vi har saker som Ă€rvande av autentiseringar) och kommer sannolikt inte att vĂ€cka nĂ„gra frĂ„gor.

En annan historia Àr standardrubriker! Kort sagt Àr standardrubrikerna de som Àrvs frÄn HTTP-rubrikerna och som lÀggs till begÀran som standard om de inte uttryckligen stÀngs av. Med denna funktionalitet kan man till exempel implementera anpassad autentisering eller helt enkelt bli av med dubbletter i scenarier. Vi tillÀmpar denna funktion för att skicka en token i rubrikerna.

Tidigare har vi förutseende sparat token i en dynamisk variabel $dynamicVar.token pĂ„ nivĂ„n av Project-noden. ÅterstĂ„r att göra följande:

  1. Definiera standardrubriken Authorization med vÀrdet Bearer ${$dynamicVar.token} pÄ nivÄn av Project-noden. För detta ÀndamÄl mÄste du i Project-nodens grÀnssnitt öppna dialogen för standardrubriker (knappen Headers i det övre högra hörnet) och lÀgga till motsvarande rubrik. Dialogen med ifyllda vÀrden kommer att se ut som följer:
    TestMace. Snabb start
  2. Avaktivera denna rubrik frÄn login-begÀran. Det Àr uppenbart: vid inloggningen har vi Ànnu ingen token och genom denna begÀran sÀtter vi just den. DÀrför, i grÀnssnittet för login-begÀran, under fliken Headers i omrÄdet Inherited tar vi bort markeringen frÄn Authorization-rubriken.

Detta Àr allt. Nu kommer autentiseringsrubriken att lÀggas till i alla begÀrningar som Àr Àttlingar till Project-noden, förutom login-noden. Det betyder att vi nu redan har ett klart manus och vi behöver bara köra det. Vi kan köra manuset genom att vÀlja punkten Run i snabbmenyn för Project-noden.

Kontrollerar korrektheten av postskapandet

Vid detta stadium kan vÄrt manus logga in och, med hjÀlp av autentiseringstoken, skapa inlÀgg. Men vi mÄste se till att det nyss skapade inlÀgget har ett korrekt namn. Det vill sÀga, i grund och botten kvarstÄr följande:

  • Skicka en begĂ€ran för att hĂ€mta inlĂ€gget efter id,
  • Kontrollera att namnet som kommer frĂ„n servern överensstĂ€mmer med namnet som skickades vid skapandet av inlĂ€gget

LĂ„t oss titta pĂ„ det första steget. Eftersom vĂ€rdet pĂ„ id bestĂ€ms under skriptets körning Ă€r det nödvĂ€ndigt att skapa en dynamisk variabel (vi kallar den postId) frĂ„n noden create-post pĂ„ nivĂ„n av Project-noden. SĂ„ hĂ€r gör vi det vet vi redan, det Ă€r tillrĂ€ckligt att gĂ„ till avsnittet Spara token i en variabel. ÅterstĂ„r bara att skapa en begĂ€ran för att hĂ€mta inlĂ€gget med det angivna id:t. För detta Ă€ndamĂ„l ska vi skapa en RequestStep get-post med följande parametrar:

  • BegĂ€rningstyp: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

För att genomföra det andra steget behöver vi bekanta oss med Assertion noden. Assertion-noden Àr en nod som gör det möjligt att skriva kontroller för specifika förfrÄgningar. Varje Assertion-nod kan innehÄlla flera pÄstÄenden (kontroller). LÀs mer om alla typer av assertioner i vÄr dokumentationen. Vi kommer att anvÀnda Compare assertion med operatorn equal. Det finns flera sÀtt att skapa assertioner:

  1. LÄngt. Skapa assertion-nod manuellt frÄn kontextmenyn för RequestStep-noden. I den skapade Assertion-noden lÀggs det intressanta pÄstÄendet till och fÀlten fylls i.
  2. Snabbt. Skapa assertion-nod tillsammans med pÄstÄendet frÄn svaret av RequestStep-noden med hjÀlp av kontextmenyn.

Vi anvÀnder oss av det andra sÀttet. SÄ hÀr kommer det att se ut för vÄrt fall.

TestMace. Snabb start

För dem som inte förstod, sÄ sker följande:

  1. Gör en förfrÄgan i noden get-post
  2. I fliken Parsed öppna kontextmenyn för svaret och vÀlj Create assertion -> Compare -> Equal

Grattis, vi har skapat vÄrt första test! Enkelt, eller hur? Nu kan du köra scenariot helt och hÄllet och njuta av resultatet. Kvar Àr bara att refaktorera och flytta title till en enskild variabel. Men vi överlÄter det till dig som en lÀxa)

Slutsats

I denna vÀgledning har vi skapat ett komplett scenario och dessutom gjort en översyn av nÄgra funktioner i vÄr produkt. SjÀlvklart utnyttjade vi inte all funktionalitet och i kommande artiklar kommer vi att göra en detaljerad översyn av TestMace:s möjligheter. HÄll utkik efter uppdateringar!

P.S. För dem som inte orkar Äterskapa alla steg har vi vÀnligen delat arkiv med projektet frÄn artikeln. Du kan öppna det med hjÀlp av Arkiv -> Open project och vÀlja mappen Project.

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