TestMace – výkonné IDE pro práci s API

Ahoj všichni! Dnes chceme IT veřejnosti představit náš produkt – IDE pro práci s API TestMace. Možná už o nás někteří víte předchozí články. Nebyla však provedena žádná komplexní recenze nástroje, takže tento nešťastný nedostatek řešíme.

TestMace – výkonné IDE pro práci s API

Motivace

Rád bych začal tím, jak jsme se vlastně dostali k tomuto životu a rozhodli jsme se vytvořit vlastní nástroj pro pokročilou práci s API. Začněme seznamem funkcí, které by měl mít produkt, o kterém se podle našeho názoru dá říci, že jde o „IDE pro práci s API“:

  • Vytváření a spouštění dotazů a skriptů (sekvencí dotazů)
  • Psaní různých druhů testů
  • Generování testu
  • Práce s popisy API včetně importu z formátů jako Swagger, OpenAPI, WADL atd.
  • Zesměšňující požadavky
  • Dobrá podpora pro jeden nebo více jazyků pro psaní skriptů, včetně integrace s oblíbenými knihovnami
  • atd.

Seznam lze rozšířit podle vašeho vkusu. Kromě toho je důležité vytvořit nejen samotné IDE, ale také určitou infrastrukturu, jako je synchronizace cloudu, nástroje příkazového řádku, online monitorovací služba atd. Trendy posledních let nám nakonec diktují nejen výkonnou funkcionalitu aplikace, ale také její příjemné rozhraní.

Kdo potřebuje takový nástroj? Je zřejmé, že všichni, kdo jsou alespoň nějak spojeni s vývojem a testováním API, jsou vývojáři a testeři =). Navíc, pokud těm prvním často stačí spouštět jednotlivé dotazy a jednoduché skripty, pak pro testery jde o jeden z hlavních nástrojů, který by měl mimo jiné obsahovat výkonný mechanismus pro psaní testů s možností jejich spouštění v CI.

Takže podle těchto pokynů jsme začali vytvářet náš produkt. Podívejme se, čeho jsme v této fázi dosáhli.

Rychlý start

Začněme prvním seznámením s aplikací. Můžete si jej stáhnout na našich webových stránkách. V tuto chvíli jsou podporovány všechny 3 hlavní platformy – Windows, Linux, MacOS. Stáhnout, nainstalovat, spustit. Při prvním spuštění se může zobrazit následující okno:

TestMace – výkonné IDE pro práci s API

Kliknutím na znaménko plus v horní části oblasti obsahu vytvořte svůj první požadavek. Karta dotazu vypadá takto:

TestMace – výkonné IDE pro práci s API

Pojďme se na to podívat podrobněji. Rozhraní požadavku je velmi podobné rozhraní oblíbených rest klientů, což usnadňuje migraci z podobných nástrojů. Udělejme první požadavek na url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace – výkonné IDE pro práci s API

Obecně platí, že na první pohled panel odpovědí také nezpůsobuje žádné překvapení. Rád bych vás však upozornil na některé body:

  1. Tělo odpovědi je prezentováno ve formě stromu, který za prvé přidává informační obsah a za druhé umožňuje přidat některé zajímavé funkce, o kterých níže
  2. K dispozici je záložka Assertions, která zobrazuje seznam testů pro daný požadavek

Jak vidíte, náš nástroj lze použít jako pohodlný klient pro odpočinek. Nebyli bychom tu však, kdyby se jeho možnosti omezovaly pouze na odesílání požadavků. Dále nastíním základní koncepty a funkčnost TestMace.

Základní pojmy a funkce

Uzel

Funkčnost TestMace je rozdělena do různých typů uzlů. Ve výše uvedeném příkladu jsme demonstrovali fungování uzlu RequestStep. V aplikaci jsou však nyní k dispozici také následující typy uzlů:

  • RequestStep. Toto je uzel, přes který můžete vytvořit požadavek. Může mít pouze jeden uzel Assertion jako podřízený prvek.
  • Tvrzení. Uzel se používá k psaní testů. Může být pouze podřízeným uzlem uzlu RequestStep.
  • Složka. Umožňuje seskupovat uzly Folder a RequestStep v sobě.
  • Projekt. Toto je kořenový uzel, který se automaticky vytvoří při vytvoření projektu. V opačném případě zopakuje funkčnost uzlu Složka.
  • Odkaz. Odkaz na uzel Folder nebo RequestStep. Umožňuje opakovaně používat dotazy a skripty.
  • atd.

Uzly jsou umístěny ve škrábancích (panel vlevo dole, sloužící k rychlému vytváření „jednorázových“ dotazů) a v projektech (panel vlevo nahoře), kterým se budeme věnovat podrobněji.

projekt

Když spustíte aplikaci, můžete si v levém horním rohu všimnout jediného řádku Project. Toto je kořen stromu projektu. Když spustíte projekt, vytvoří se dočasný projekt, jehož cesta závisí na vašem operačním systému. Projekt můžete kdykoli přesunout na místo, které vám vyhovuje.

Hlavním účelem projektu je možnost ukládat vývoj v souborovém systému a dále je synchronizovat prostřednictvím systémů správy verzí, spouštět skripty v CI, kontrolovat změny atd.

Proměnné

Proměnné jsou jedním z klíčových mechanismů aplikace. Ti z vás, kteří pracují s nástroji jako TestMace, už možná tuší, o čem mluvíme. Proměnné tedy představují způsob, jak ukládat společná data a komunikovat mezi uzly. Analogem jsou například proměnné prostředí v Postman nebo Insomnia. Šli jsme však dále a téma rozvinuli. V TestMace lze nastavit proměnné na úrovni uzlu. Žádný. Existuje také mechanismus pro dědění proměnných od předků a překrývání proměnných u potomků. Kromě toho existuje řada vestavěných proměnných, názvy vestavěných proměnných začínají $. Tady jsou některé z nich:

  • $prevStep — odkaz na proměnné předchozího uzlu
  • $nextStep — odkaz na proměnné následujícího uzlu
  • $parent - totéž, ale pouze pro předka
  • $response - odpověď ze serveru
  • $env - aktuální proměnné prostředí
  • $dynamicVar - dynamické proměnné vytvořené během provádění skriptu nebo dotazu

$env - jedná se v podstatě o běžné proměnné na úrovni uzlu projektu, avšak sada proměnných prostředí se mění v závislosti na zvoleném prostředí.

Proměnná je přístupná přes ${variable_name}
Hodnotou proměnné může být jiná proměnná nebo dokonce celý výraz. Například proměnná url může být výraz jako
http://${host}:${port}/${endpoint}.

Samostatně stojí za zmínku možnost přiřazování proměnných během provádění skriptu. Často je například potřeba uložit autorizační data (token nebo celou hlavičku), která přišla ze serveru po úspěšném přihlášení. TestMace umožňuje uložit taková data do dynamických proměnných jednoho z předků. Aby se předešlo kolizím s již existujícími „statickými“ proměnnými, jsou dynamické proměnné umístěny v samostatném objektu $dynamicVar.

Scénáře

Pomocí všech výše uvedených funkcí můžete spouštět celé skripty dotazů. Například vytvoření entity -> dotazování entity -> odstranění entity. V tomto případě můžete například použít uzel Folder k seskupení několika uzlů RequestStep.

Automatické doplňování a zvýraznění výrazu

Pro pohodlnou práci s proměnnými (nejen) je nutné automatické doplňování. A samozřejmě zvýraznění hodnoty výrazu, aby bylo snazší a pohodlnější objasnit, čemu se konkrétní proměnná rovná. To je přesně ten případ, kdy je lepší jednou vidět než stokrát slyšet:

TestMace – výkonné IDE pro práci s API

Za zmínku stojí, že automatické doplňování je implementováno nejen pro proměnné, ale také například pro záhlaví, hodnoty určitých záhlaví (například automatické doplňování pro záhlaví Content-Type), protokoly a mnoho dalšího. Seznam je neustále aktualizován, jak aplikace roste.

Zpět Opakovat

Vrácení/opakování změn je velmi pohodlná věc, ale z nějakého důvodu není implementována všude (a nástroje pro práci s API nejsou výjimkou). Ale my mezi ně nepatříme!) V celém projektu jsme implementovali undo/redo, což umožňuje vrátit zpět nejen úpravu konkrétního uzlu, ale také jeho vytvoření, smazání, přesun atd. Nejkritičtější operace vyžadují potvrzení.

Vytváření testů

Uzel Assertion je zodpovědný za vytváření testů. Jednou z hlavních funkcí je možnost vytvářet testy bez programování pomocí vestavěných editorů.

Uzel Assertion se skládá ze sady asercí. Každé tvrzení má svůj vlastní typ, v současné době existuje několik typů tvrzení

  1. Porovnat hodnoty - jednoduše porovná 2 hodnoty. Existuje několik operátorů porovnání: rovno, nerovná se, větší než, větší nebo rovno, menší než, menší nebo rovno.

  2. Obsahuje hodnotu - kontroluje výskyt podřetězce v řetězci.

  3. XPath - kontroluje, zda selektor v XML obsahuje určitou hodnotu.

  4. Vyjádření JavaScriptu je libovolný javascriptový skript, který při úspěchu vrací hodnotu true a při selhání vrací hodnotu false.

Podotýkám, že pouze poslední vyžaduje od uživatele znalosti programování, další 3 asertace jsou vytvořeny pomocí grafického rozhraní. Zde je například to, jak vypadá dialog pro vytvoření tvrzení o porovnání hodnot:

TestMace – výkonné IDE pro práci s API

Třešničkou na dortu je rychlé vytváření tvrzení z odpovědí, stačí se na to podívat!

TestMace – výkonné IDE pro práci s API

Taková tvrzení však mají zřejmá omezení, k jejichž překonání možná budete chtít použít výraz javascript. A zde TestMace také poskytuje pohodlné prostředí s automatickým doplňováním, zvýrazněním syntaxe a dokonce i statickým analyzátorem.

Popis API

TestMace umožňuje API nejen používat, ale také dokumentovat. Samotný popis má navíc hierarchickou strukturu a organicky zapadá do zbytku projektu. Kromě toho je v současné době možné importovat popisy API z formátů Swagger 2.0 / OpenAPI 3.0. Samotný popis není jen mrtvá váha, ale je úzce integrován se zbytkem projektu, zejména je k dispozici automatické doplňování URL, HTTP hlaviček, parametrů dotazu atd. a v budoucnu plánujeme přidat testy pro shodu odpovědi s popisem API.

Sdílení uzel

Případ: chtěli byste sdílet problematický požadavek nebo dokonce celý skript s kolegou nebo jej jednoduše připojit k chybě. TestMace pokrývá i tento případ: aplikace vám umožňuje serializovat jakýkoli uzel a dokonce i podstrom v adrese URL. Zkopírujte-vložte a můžete snadno přenést požadavek na jiný stroj nebo projekt.

Lidsky čitelný formát úložiště projektu

V tuto chvíli je každý uzel uložen v samostatném souboru s příponou yml (jako je tomu u uzlu Assertion), nebo ve složce s názvem uzlu a souborem index.yml v něm.
Takto například vypadá soubor požadavku, který jsme vytvořili ve výše uvedené kontrole:

index.yml

children: []
variables: {}
type: RequestStep
assignVariables: []
requestData:
  request:
    method: GET
    url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8'
  headers: []
  disabledInheritedHeaders: []
  params: []
  body:
    type: Json
    jsonBody: ''
    xmlBody: ''
    textBody: ''
    formData: []
    file: ''
    formURLEncoded: []
  strictSSL: Inherit
authData:
  type: inherit
name: Scratch 1

Jak vidíte, vše je velmi jasné. V případě potřeby lze tento formát snadno ručně upravit.

Hierarchie složek v systému souborů zcela opakuje hierarchii uzlů v projektu. Například skript jako:

TestMace – výkonné IDE pro práci s API

Mapuje systém souborů do následující struktury (je zobrazena pouze hierarchie složek, ale podstata je jasná)

TestMace – výkonné IDE pro práci s API

To usnadňuje proces kontroly projektu.

Import z Postman

Po přečtení všeho výše uvedeného budou někteří uživatelé chtít vyzkoušet (ne?) nový produkt nebo (co si sakra neděláte legraci!) ho úplně použít ve svém projektu. Migraci však může zastavit velký počet vývojů ve stejném Pošťákovi. V takových případech TestMace podporuje import sbírek z Postmana. V tuto chvíli jsou podporovány importy bez testů, ale nevylučujeme jejich podporu do budoucna.

Plány

Doufám, že mnoha z těch, kteří dočetli až sem, se náš produkt líbil. To však není vše! Práce na produktu jsou v plném proudu a zde jsou některé funkce, které plánujeme brzy přidat.

Cloud synchronizace

Jedna z nejžádanějších funkcí. V tuto chvíli navrhujeme pro synchronizaci použít systémy pro správu verzí, pro které děláme formát pro tento typ úložiště přívětivější. Tento pracovní postup však není vhodný pro každého, a proto plánujeme přidat mechanismus synchronizace, který mnozí znají prostřednictvím našich serverů.

CLI

Jak již bylo zmíněno výše, produkty na úrovni IDE se neobejdou bez nejrůznějších integrací se stávajícími aplikacemi nebo pracovními postupy. CLI je přesně to, co je potřeba k integraci testů napsaných v TestMace do kontinuálního integračního procesu. Práce na CLI jsou v plném proudu, první verze spustí projekt pomocí jednoduché konzolové zprávy. V budoucnu plánujeme přidat výstup reportů ve formátu JUnit.

Pluginový systém

Přes veškerou sílu našeho nástroje je množina případů, které vyžadují řešení, neomezená. Koneckonců existují úkoly, které jsou specifické pro konkrétní projekt. Proto v budoucnu plánujeme přidat SDK pro vývoj pluginů a každý vývojář si bude moci přidat funkcionalitu podle svého.

Rozšíření řady typů uzlů

Tato sada uzlů nepokrývá všechny případy požadované uživatelem. Uzly, které mají být přidány:

  • Uzel skriptu – převádí a umísťuje data pomocí js a odpovídajícího API. Pomocí tohoto typu uzlu můžete v Postman dělat věci, jako jsou skripty před požadavkem a po požadavku.
  • Uzel GraphQL - podpora graphql
  • Vlastní uzel asercí – umožní vám rozšířit sadu existujících asercí v projektu
    Toto samozřejmě není konečný seznam, bude neustále aktualizován mimo jiné na základě vaší zpětné vazby.

FAQ

V čem se lišíte od Pošťáka?

  1. Koncept uzlů, který umožňuje téměř nekonečně škálovat funkčnost projektu
  2. Lidsky čitelný formát projektu s uložením do souborového systému, který zjednodušuje práci pomocí systémů správy verzí
  3. Schopnost vytvářet testy bez programování a pokročilejší podpora js v editoru testů (automatické doplňování, statický analyzátor)
  4. Pokročilé automatické doplňování a zvýraznění aktuální hodnoty proměnných

Jedná se o open-source produkt?

Ne, v tuto chvíli jsou zdroje uzavřeny, ale do budoucna zvažujeme možnost otevření zdrojů

Z čeho žijete?)

Spolu s bezplatnou verzí plánujeme vydat i placenou verzi produktu. Primárně bude zahrnovat věci, které vyžadují stranu serveru, například synchronizaci.

Závěr

Náš projekt se mílovými kroky posouvá ke stabilnímu vydání. Produkt však již lze používat a pozitivní zpětná vazba od našich prvních uživatelů je toho důkazem. Aktivně sbíráme zpětnou vazbu, protože bez úzké spolupráce s komunitou nelze vybudovat dobrý nástroj. Najdete nás zde:

Oficiální internetové stránky

Telegram

Volný

facebook

Sledování problémů

Těšíme se na vaše přání a návrhy!

Zdroj: www.habr.com

Přidat komentář