TestMace. Snelle start

TestMace. Snelle start

Dag Allemaal. We komen langzaam uit de schaduw en zetten de serie artikelen over ons product voort. Na vorig recensieartikel ontvingen we veel feedback (meestal positief), suggesties en bugrapporten. Vandaag zullen we het laten zien TestMace in actie en u zult enkele functies van onze applicatie kunnen waarderen. Voor een completere onderdompeling raad ik u aan onze documentatie te raadplegen op http://docs-ru.testmace.com. Dus laten we gaan!

installatie

Laten we beginnen met de banaliteit. De applicatie is beschikbaar en daadwerkelijk getest op drie platforms: Linux, Windows, MacOS. U kunt het installatieprogramma downloaden voor het besturingssysteem waarin u geïnteresseerd bent onze site. Voor Linux-gebruikers is het mogelijk om te installeren snap-pakket. We hopen echt dat de Microsoft Store en de App Store er snel mee aan de slag gaan (is dat nodig? Wat denk jij?).

Experimenteel scenario

Als proefpersoon kozen wij het volgende standaardscenario:

  • Login: gebruiker - admin, wachtwoord - wachtwoord
  • voeg een nieuw item toe
  • Laten we controleren of de record correct is toegevoegd

We zullen verder testen https://testmace-quick-start.herokuapp.com/. Dit is normaal json-server, perfect voor het testen van dergelijke toepassingen. We hebben zojuist autorisatie per token toegevoegd aan alle json-serverroutes en een inlogmethode gemaakt om dit token te ontvangen. We gaan geleidelijk verder en verbeteren ons project geleidelijk.

Een project maken en proberen een entiteit te creëren zonder toestemming

Laten we eerst een nieuw project maken (Dien in->Nieuw project). Als u de applicatie voor de eerste keer start, wordt er automatisch een nieuw project geopend. Laten we eerst proberen een verzoek in te dienen om een ​​nieuw record te maken (voor het geval het aanmaken van records zonder toestemming mogelijk is). Selecteer items in het contextmenu van het Projectknooppunt Knooppunt toevoegen -> VerzoekStap. Stel de knooppuntnaam in op maak-post. Als gevolg hiervan wordt er een nieuw knooppunt in de boom aangemaakt en wordt een tabblad voor dit knooppunt geopend. Laten we de volgende verzoekparameters instellen:

TestMace. Snelle start

Als we echter proberen aan het verzoek te voldoen, retourneert de server een 401-code en zonder toestemming krijgen we niets op deze server. Nou ja, in het algemeen, zoals verwacht).

Een autorisatieverzoek toevoegen

Zoals al gezegd, hebben we een POST-eindpunt /login, waarbij json als verzoektekst van het formulier wordt gebruikt: {"username": "<username>", "password": "<password>"}Waar username и password (opnieuw, uit de inleidende paragraaf hierboven) hebben betekenissen admin и password respectievelijk. Als reactie retourneert dit eindpunt json-achtige {"token": "<token>"}. Wij zullen het gebruiken voor autorisatie. Laten we creëren VerzoekStap knooppunt met naam Log in, zal fungeren als een voorouder Project knooppunt Verplaats met behulp van slepen en neerzetten een bepaald knooppunt in de boom hoger dan het knooppunt maak-post. Laten we de volgende parameters instellen op het nieuw gemaakte verzoek:

Laten we het verzoek uitvoeren en de tweehonderdste code ontvangen met het token in het antwoord. Iets zoals dit:

TestMace. Snelle start

Refactoring: domeinduplicatie verwijderen

Tot nu toe zijn de verzoeken niet in één script gekoppeld. Maar dit is niet het enige nadeel. Als je goed kijkt, zul je merken dat in beide aanvragen in ieder geval het domein wordt gedupliceerd. Niet goed. Het is tijd om dit deel van het toekomstige script opnieuw vorm te geven, en variabelen zullen ons hierbij helpen.

In eerste instantie vervullen variabelen dezelfde rol als in andere soortgelijke tools en programmeertalen: het elimineren van duplicatie, het vergroten van de leesbaarheid, enz. Meer over variabelen kunt u lezen in onze documentatie. In dit geval hebben we gebruikersvariabelen nodig.

Laten we een variabele definiëren op het niveau van het Projectknooppunt domain met betekenis https://testmace-quick-start.herokuapp.com. Hiervoor is het noodzakelijk

  • Open het tabblad met dit knooppunt en klik rechtsboven op het rekenmachinepictogram
  • Klik op + VARIABELE TOEVOEGEN
  • Voer de naam en waarde van de variabele in
    In ons geval ziet het dialoogvenster met de toegevoegde variabele er als volgt uit:

TestMace. Snelle start

OK. Vanwege overerving kunnen we deze variabele nu gebruiken in nakomelingen van elk nestniveau. In ons geval zijn dit knooppunten Log in и maak-post. Om een ​​variabele in een tekstveld te gebruiken, moet u schrijven ${<variable_name>}. De inlog-URL wordt bijvoorbeeld omgezet naar ${domain}/loginrespectievelijk voor maak-post knooppunt-URL eruit zal zien ${domain}/posts.

Op basis van het DRY-principe hebben we het scenario dus enigszins verbeterd.

Sla het token op in een variabele

Omdat we het over variabelen hebben, gaan we wat dieper op dit onderwerp in. Op dit moment ontvangen we bij een succesvolle aanmelding van de server een autorisatietoken, dat we nodig hebben bij volgende verzoeken. Laten we dit token opslaan in een variabele. Omdat de waarde van de variabele wordt bepaald tijdens de uitvoering van het script, hiervoor gebruiken we een speciaal mechanisme - dynamische variabelen.

Laten we eerst een inlogverzoek uitvoeren. Op het tabblad Ontleed antwoord, beweeg de cursor over het token en selecteer in het contextmenu (dat wordt opgeroepen met de rechtermuisknop of door op de knop te klikken ...) het item Toewijzen aan variabele. Er verschijnt een dialoogvenster met de volgende velden:

  • Pad – welk deel van het antwoord wordt aangenomen (in ons geval is dat het geval). body.token)
  • Huidige waarde — welke waarde ligt langs het pad (in ons geval is dit de symbolische waarde)
  • Variabele naam — naam van de variabele waar Huidige waarde zal worden bewaard. In ons geval zal dat zo zijn token
  • Knooppunt — in welke van de voorouders de variabele zal worden aangemaakt Variabele naam. Laten we Project selecteren

Het voltooide dialoogvenster ziet er als volgt uit:

TestMace. Snelle start

Nu wordt elke keer dat het knooppunt wordt uitgevoerd Log in dynamische variabele token wordt bijgewerkt met de nieuwe waarde uit het antwoord. En deze variabele wordt opgeslagen in Project knooppunt en zal, dankzij overerving, beschikbaar zijn voor nakomelingen.

Om toegang te krijgen tot dynamische variabelen, moet u gebruiken ingebouwde variabele $dynamicVar. Als u bijvoorbeeld toegang wilt krijgen tot een opgeslagen token, moet u bellen ${$dynamicVar.token}.

We geven het autorisatietoken door aan verzoeken

In de voorgaande stappen hebben we het autorisatietoken ontvangen en hoeven we alleen maar een header toe te voegen Authorization met betekenis Bearer <tokenValue> in alle verzoeken waarvoor toestemming vereist is, inclusief maak-post. Er zijn verschillende manieren om dit te doen:

  1. Kopieer het token handmatig en voeg een autorisatieheader toe aan de relevante verzoeken. De methode werkt, maar het gebruik ervan is alleen beperkt tot verzoeken van het type ‘gemaakt en weggegooid’. Niet geschikt voor herhaalde uitvoering van scripts
  2. Gebruik de functionaliteit autorisatie.
  3. Gebruiken standaard headers

Het gebruik van de tweede methode lijkt voor de hand liggend, maar in de context van dit artikel is deze aanpak... oninteressant. Nou ja, echt waar: het autorisatiemechanisme plus minus ken je van andere tools (ook al hebben we dingen als machtiging erfenis) en het is onwaarschijnlijk dat dit vragen oproept.

Een ander ding zijn de standaard headers! In een notendop zijn standaardheaders overgenomen HTTP-headers die standaard aan het verzoek worden toegevoegd, tenzij expliciet uitgeschakeld. Met deze functionaliteit kunt u bijvoorbeeld autorisatie op maat implementeren of eenvoudigweg duplicatie in scripts verwijderen. Laten we deze functie gebruiken om een ​​token in de headers door te geven.

Voorheen hebben we het token voorzichtig opgeslagen in een dynamische variabele $dynamicVar.token op het niveau van het Projectknooppunt. Het enige dat overblijft is het volgende doen:

  1. Definieer de standaardtitel Authorization met betekenis Bearer ${$dynamicVar.token} op het niveau van het Projectknooppunt. Om dit te doen, moet u in de projectinterface van het knooppunt een dialoogvenster openen met standaardkoppen (knop Headers in de rechterbovenhoek) en voeg een bijbehorende titel toe. Het dialoogvenster met de ingevulde waarden ziet er als volgt uit:
    TestMace. Snelle start
  2. Schakel deze header uit bij het inlogverzoek. Dit is begrijpelijk: op het moment van inloggen beschikken wij nog niet over een token en deze zullen wij met dit verzoek installeren. Daarom staat in de inloginterface van het verzoek op het tabblad Headers in de buurt van Inherited Schakel de kop Autorisatie uit.

Dat is alles. Nu wordt de autorisatieheader toegevoegd aan alle verzoeken die onderliggende zijn van het Project-knooppunt, behalve het login-knooppunt. Het blijkt dat we in dit stadium al een script klaar hebben en dat we het alleen nog hoeven te lanceren. U kunt het script uitvoeren door te selecteren lopen in het contextmenu van het Projectknooppunt.

Controle van de juistheid van de creatie van het bericht

In dit stadium kan ons script inloggen en met behulp van een autorisatietoken een bericht maken. We moeten er echter voor zorgen dat het nieuw gemaakte bericht de juiste naam heeft. Dat wil zeggen dat het enige dat overblijft is het volgende doen:

  • Stuur een verzoek om een ​​bericht te ontvangen op ID,
  • Controleer of de naam die u van de server ontvangt, overeenkomt met de naam die is verzonden bij het maken van het bericht

Laten we naar de eerste stap kijken. Omdat de id-waarde wordt bepaald tijdens de uitvoering van het script, moet u een dynamische variabele maken (laten we deze noemen postId) van knooppunt maak-post op het niveau van het Projectknooppunt. We weten al hoe we dit moeten doen, raadpleeg gewoon de sectie Sla het token op in een variabele. Het enige dat overblijft is een verzoek indienen om een ​​bericht te ontvangen met behulp van deze id. Om dit te doen, gaan we een RequestStep maken ontvang-post met de volgende parameters:

  • Verzoektype: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Om de tweede stap te implementeren, moeten we er kennis mee maken bewering knoop. Een Assertion-knooppunt is een knooppunt waarmee u cheques voor specifieke verzoeken kunt uitschrijven. Elk Assertieknooppunt kan meerdere beweringen (controles) bevatten. Meer over alle soorten beweringen leest u in onze documentatie. We zullen gebruiken Compare bewering met exploitant equal. Er zijn verschillende manieren om beweringen te maken:

  1. Lang. Maak handmatig een Assertion-knooppunt vanuit het contextmenu van het RequestStep-knooppunt. Voeg in het gemaakte Assertion-knooppunt de interessante bewering toe en vul de velden in.
  2. Snel. Maak een Assertion-knooppunt samen met een bewering uit het RequestStep-knooppuntantwoord met behulp van het contextmenu

Laten we de tweede methode gebruiken. Zo zal het er in onze casus uitzien.

TestMace. Snelle start

Voor degenen die het niet begrijpen: dit is wat er gebeurt:

  1. Maak een verzoek in het knooppunt ontvang-post
  2. Op het tabblad Ontleed beantwoorden, roep het contextmenu op en selecteer Creëer bewering -> Vergelijk -> Gelijk

Gefeliciteerd, we hebben onze eerste test gemaakt! Eenvoudig, nietwaar? Nu kunt u het script volledig uitvoeren en genieten van het resultaat. Het enige dat overblijft is het een beetje opnieuw te bewerken en eruit te halen title in een aparte variabele. Maar we laten dit als huiswerk voor je over)

Conclusie

In deze handleiding hebben we een volwaardig scenario gemaakt en tegelijkertijd enkele kenmerken van ons product beoordeeld. Natuurlijk hebben we niet alle functionaliteit benut en in de volgende artikelen geven we een gedetailleerd overzicht van de mogelijkheden van TestMace. Blijf kijken!

PS Voor degenen die te lui zijn om alle stappen te reproduceren, hebben we dit vriendelijk opgenomen opslagplaats met het project uit het artikel. Je kunt hem openen met Dien in -> Open project en selecteer de map Project.

Bron: www.habr.com

Voeg een reactie