TestMace. Rychlý start

TestMace. Rychlý start

Ahoj všichni. Pomalu vycházíme z ústraní a pokračujeme v sérii článků o našem produktu. Po předchozí části, že v takovém systému se používají speciální hlavní odbočovače: přehledovém článku jsme obdrželi řadu zpětných vazeb (většinou pozitivních), návrhů a bug reportů. Dnes vám ukážeme TestMace v akci a budete mít možnost ocenit některé funkce naší aplikace. Pro hlubší pochopení doporučujeme nahlédnout do naší dokumentace na adrese http://docs-ru.testmace.com. Tak jdeme na to!

Instalace

Začneme s něčím banálním. Aplikace je dostupná a skutečně testovatelná na třech platformách — Linux, Windows, MacOS. Můžete si stáhnout instalátor pro svou cílovou OS z našich stránek. Pro uživatele Linuxu je k dispozici možnost instalace snap balíčku. Doufáme, že se brzy dostaneme i do Microsoft Store a App Store (je to vůbec potřeba? Co si o tom myslíte?).

Testovací scénář

Jako příklad jsme vybrali následující standardní scénář:

  • přihlásíme se: uživatel — admin, heslo — password
  • přidáme nový záznam
  • zkontrolujeme správné přidání záznamu

Testovat budeme na https://testmace-quick-start.herokuapp.com/. Je to běžný json-server, který je ideální pro testování podobných aplikací. Pouze jsme přidali autorizaci pomocí tokenu na všechny routy json-serveru a vytvořili metodu login pro získání tohoto tokenu. Budeme postupovat krok za krokem, postupně vylepšovat náš projekt.

Vytvoření projektu a pokus o vytvoření entity bez autorizace

Nejprve vytvoříme nový projekt (Soubor->Nový projekt). Pokud spouštíte aplikaci poprvé, nový projekt se otevře automaticky. Nejprve se pokusíme provést žádost o vytvoření nového záznamu (snad je možné vytváření záznamů bez autorizace). V kontextovém menu uzlu Project vyberte položku Přidat uzel -> RequestStep. Jako název uzlu zadejte vytvořit-příspěvek. Výsledkem bude, že se v stromové struktuře vytvoří nový uzel a otevře se záložka tohoto uzlu. Nastavíme následující parametry žádosti:

TestMace. Rychlý start

Pokud se však pokusíme provést žádost, server vrátí kód 401 a bez autorizace nám na tomto serveru nic neprojde. No, v podstatě to bylo očekávané).

Přidávání žádosti o autorizaci

Jak již bylo řečeno, máme POST endpoint /login, který přijímá jako tělo žádosti json ve formátu: {"username": "", "password": ""}, kde uživatelské jméno a heslo (opět, jak bylo uvedeno výše) mají významy admin a heslo odpovídajícím způsobem. Na tuto žádost tento endpoint vrací json ve formátu {"token": ""}. Využijeme jej pro autorizaci. Vytvoříme RequestStep uzel s názvem login, jako rodič bude vystupovat Projekt uzel. Pomocí drag-and-drop přesuňte tento uzel v hierarchii výše než uzel vytvořit-příspěvek. Určíme nově vytvořenému požadavku následující parametry:

Provedeme požadavek a obdržíme dvoustovkový kód s tokenem v odpovědi. Takto nějak:

TestMace. Rychlý start

Refaktoring: odstranění duplicity domény

Zatím nejsou požadavky spojeny do jednotného scénáře. Ale to není jediná nevýhoda. Pokud se na to podíváte blíže, můžete si všimnout, že minimálně doména je duplikována v obou požadavcích. Není to dobré. Je čas refaktorovat tuto část budoucího scénáře a v tom nám pomohou proměnné.

V prvním přiblížení proměnné plní stejnou roli jako v jiných podobných nástrojích a programovacích jazycích — odstranění duplicity, zvýšení čitelnosti atd. Podrobněji o proměnných si můžete přečíst v naší dokumentaci. V tomto případě budou potřeba uživatelské proměnné.

Definujeme proměnnou na úrovni projektu uzlu domain s hodnotou https://testmace-quick-start.herokuapp.com. K tomu je potřeba

  • Otevřít záložku s tímto uzlem a kliknout na ikonu kalkulačky vpravo nahoře
  • Kliknout na + ADD VARIABLE
  • Zadat název a hodnotu proměnné
    V našem případě dialog s přidanou proměnnou bude vypadat následovně:

TestMace. Rychlý start

OK. Nyní díky dědičnosti můžeme tuto proměnnou použít v potomcích jakékoliv úrovně zanoření. V našem případě to jsou uzly login a vytvořit-příspěvek. Abychom mohli proměnnou použít v textovém poli, je nutné napsat ${}. Například, url pro login se převede na ${domain}/login, a pro vytvořit-příspěvek uzel bude url vypadat takto ${domain}/posts.

Takto jsme, vedeným principem DRY, o něco vylepšili scénář.

Ukládáme token do proměnné

Jelikož jsme se už bavili o proměnných, pojďme se tomuto tématu věnovat podrobněji. V tuto chvíli, v případě úspěšného přihlášení, dostáváme od serveru autorizační token, který budeme potřebovat v dalších požadavcích. Pojďme tento token uložit do proměnné. Protože hodnota proměnné bude určena během běhu scénáře, použijeme k tomu speciální mechanismus — dynamické proměnné.

Nejprve provedeme žádost o přihlášení. Na kartě Parsed na odpovědi najeďte myší na token a v kontextovém menu (které vyvoláte pravým tlačítkem myši nebo stisknutím tlačítka …) vyberte položku Přiřadit k proměnné. Otevře se dialog s následujícími poli:

  • Path — která část odpovědi se vezme (v našem případě je to body.token)
  • Aktuální hodnota — jaká hodnota leží na cestě Path (v našem případě je to hodnota tokenu)
  • Název proměnné — název proměnné, kam Aktuální hodnota se uloží. V našem případě to bude token
  • Node — v jakém z předků se proměnná vytvoří Název proměnné. Zvolíme Project

Vyplněný dialog vypadá následovně:

TestMace. Rychlý start

Nyní se při každém provedení uzlu login dynamická proměnná token bude aktualizovat novou hodnotu z odpovědi. A tato proměnná bude uložena v Projekt uzlu a díky dědičnosti bude dostupná potomkům.

Abychom se dostali k dynamickým proměnným, je třeba použít vestavěnou proměnnou $dynamicVar. Například, abychom dosáhli uloženého tokenu, musíme zavolat ${$dynamicVar.token}.

Přenášíme autorizační token do požadavků

V předchozích krocích jsme získali autorizační token a vše, co musíme udělat, je přidat hlavičku Authorization s hodnotou Bearer do všech požadavků, které vyžadují autorizaci, včetně vytvořit-příspěvek. K tomu existuje několik způsobů:

  1. Ruční zkopírování tokenu a přidání autorizační hlavičky do požadovaných dotazů. Tento způsob je funkční, nicméně jeho použití je omezeno pouze na požadavky typu „udělej a vyhoď“. Na opakované provádění scénářů to nebude fungovat.
  2. Využít funkčnost autorizace.
  3. Použít výchozí hlavičky

Použití druhého způsobu se zdá být evidentní, nicméně v kontextu tohoto článku není takový přístup… zajímavý. No opravdu: mechanismus autorizací je vám více méně znám z jiných nástrojů (i když máme věci jako dědičnost autorizací) a sotva vyvolá otázky.

Jiná věc jsou výchozí hlavičky! Pokud to shrneme, tak výchozí hlavičky jsou HTTP hlavičky děděné od předků, které se standardně přidávají k požadavku, pokud je výslovně nevypnete. Pomocí této funkčnosti můžeme například implementovat vlastní autorizaci nebo se jednoduše zbavit duplikace ve scénářích. Použijeme tuto funkci k přenášení tokenu v hlavičkách.

Dříve jsme opatrně uložili token do dynamické proměnné $dynamicVar.token na úrovni uzlu projektu. Nyní zbývá udělat následující:

  1. Definovat výchozí hlavičku Authorization s hodnotou Bearer ${$dynamicVar.token} na úrovni uzlu projektu. K tomu je třeba v rozhraní uzlu projektu otevřít dialog s výchozími hlavičkami (tlačítko Headers v pravém horním rohu) a přidat odpovídající hlavičku. Dialog se vyplněnými hodnotami bude vypadat následovně:
    TestMace. Rychlý start
  2. Vypnout tuto hlavičku z požadavku přihlášení. To je pochopitelné: v době přihlášení ještě nemáme token a tímto požadavkem si ho právě vytvoříme. Proto v rozhraní požadavku přihlášení na záložce Headers v oblasti Inherited odškrtneme zaškrtávací políčko u hlavičky Authorization.

Na tom je to všechno. Nyní bude hlavička autorizace přidána ke všem požadavkům, které jsou potomky uzlu projektu, s výjimkou uzlu přihlášení. To znamená, že v této fázi už máme scénář připravený a zbývá ho pouze spustit. Spustit scénář lze výběrem položky Spustit v kontextovém menu uzlu projektu.

Ověřujeme správnost vytvoření příspěvku

V této fázi náš scénář umí přihlásit a pomocí autorizačního tokenu vytvořit příspěvek. Je však nutné se ujistit, že nově vytvořený příspěvek má správné jméno. To znamená, že v podstatě zbývá udělat následující:

  • Odeslat požadavek na získání příspěvku podle id,
  • Ověřit, že jméno, které přišlo ze serveru, odpovídá jménu předanému při vytváření příspěvku

Podívejme se na první krok. Protože hodnota id se určuje během běhu skriptu, je nutné vytvořit dynamickou proměnnou (pojmenujme ji postId) z uzlu vytvořit-příspěvek na úrovni uzlu projektu. Jak to udělat již víme, stačí se obrátit na sekci Ukládáme token do proměnné. Zbývá pouze vytvořit požadavek na získání příspěvku podle tohoto id. K tomu vytvoříme RequestStep get-post s následujícími parametry:

  • Typ požadavku: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Pro realizaci druhého kroku se musíme seznámit s Assertion uzlem. Assertion uzel je uzel, který umožňuje psát kontroly pro určité požadavky. Každý assertion uzel může obsahovat několik tvrzení (kontrol). Podrobněji o všech typech assertionů se můžete dočíst v naší dokumentaci. Budeme používat Compare asserci s operátorem equal.Existuje několik způsobů, jak vytvářet assertiony:

  1. Dlouhý. Ručně z kontextového menu RequestStep uzlu vytvořte uzel Assertion. Do vytvořeného uzlu Assertion přidejte požadovaný assertion a vyplňte pole.
  2. Rychlý. Vytvořte uzel Assertion spolu s assertionem z odpovědi RequestStep uzlu pomocí kontextového menu.

Využijeme druhou metodu. Takto to bude vypadat pro náš případ.

TestMace. Rychlý start

Pro ty, kteří nepochopili, zde se děje následující:

  1. Uděláte požadavek v uzlu get-post
  2. Na záložce Parsed odpovědi vyvoláte kontextové menu a vyberete Vytvořit assertion -> Compare -> Rovný

Gratuluji, vytvořili jsme první test! Je to jednoduché, že? Teď můžete spustit skript celý a užívat si výsledek. Zbývá jen trochu refaktorovat a vyčlenit title do samostatné proměnné. Ale to necháme na vás jako domácí úkol)

Závěr

V této příručce jsme vytvořili plnohodnotný skript a zároveň přehled některých funkcí našeho produktu. Samozřejmě jsme nevyužili zdaleka veškerou funkcionalitu a v následujících článcích provedeme podrobný přehled možností TestMace. Sledujte aktualizace!

P.S. Pro ty, kteří se nechtějí reprodukovat všechny kroky, jsme laskavě vytvořili repuzitáře s projektem z článku. Otevřít ho můžete pomocí Soubor -> Otevřít projekt a vyberte složku Project.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster