TestMace - výkonné IDE pre prácu s API

Ahojte všetci! Dnes chceme IT verejnosti predstaviť náš produkt – IDE pre prácu s API TestMace. Možno už o nás niektorí viete predchádzajúce články. Neexistovala však žiadna komplexná recenzia nástroja, takže tento nešťastný nedostatok riešime.

TestMace - výkonné IDE pre prácu s API

Motivácia

Chcel by som začať tým, ako sme sa vlastne dostali k tomuto životu a rozhodli sme sa vytvoriť vlastný nástroj na pokročilú prácu s API. Začnime zoznamom funkcií, ktoré by mal mať produkt, o ktorom podľa nášho názoru môžeme povedať, že ide o „IDE pre prácu s API“:

  • Vytváranie a spúšťanie dotazov a skriptov (sekvencií dotazov)
  • Písanie rôznych druhov testov
  • Generovanie testu
  • Práca s popismi API vrátane importu z formátov ako Swagger, OpenAPI, WADL atď.
  • Posmešné žiadosti
  • Dobrá podpora pre jeden alebo viac jazykov na písanie skriptov, vrátane integrácie s populárnymi knižnicami
  • atď

Zoznam je možné rozšíriť podľa vášho vkusu. Okrem toho je dôležité vytvoriť nielen samotné IDE, ale aj určitú infraštruktúru, ako je synchronizácia cloudu, nástroje príkazového riadku, online monitorovacia služba atď. Trendy posledných rokov nám nakoniec diktujú nielen výkonnú funkcionalitu aplikácie, ale aj jej príjemné rozhranie.

Kto potrebuje takýto nástroj? Je zrejmé, že všetci, ktorí sú aspoň ako-tak spojení s vývojom a testovaním API, sú vývojári a testeri =). Navyše, ak pre tých prvých často stačí vykonávať jednotlivé dotazy a jednoduché skripty, potom pre testerov ide o jeden z hlavných nástrojov, ktorý by okrem iného mal obsahovať výkonný mechanizmus na písanie testov s možnosťou ich spúšťania v CI.

Takže podľa týchto pokynov sme začali vytvárať náš produkt. Pozrime sa, čo sme v tejto fáze dosiahli.

Rýchly štart

Začnime prvým zoznámením sa s aplikáciou. Môžete si ho stiahnuť na našej webovej stránke. V súčasnosti sú podporované všetky 3 hlavné platformy – Windows, Linux, MacOS. Stiahnite, nainštalujte, spustite. Pri prvom spustení sa môže zobraziť nasledujúce okno:

TestMace - výkonné IDE pre prácu s API

Kliknutím na znamienko plus v hornej časti oblasti obsahu vytvorte svoju prvú požiadavku. Karta dotazu vyzerá takto:

TestMace - výkonné IDE pre prácu s API

Pozrime sa na to podrobnejšie. Rozhranie požiadaviek je veľmi podobné rozhraniu populárnych ostatných klientov, čo uľahčuje migráciu z podobných nástrojov. Urobme prvú požiadavku na url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - výkonné IDE pre prácu s API

Vo všeobecnosti na prvý pohľad panel odozvy tiež neprináša žiadne prekvapenia. Chcel by som vás však upozorniť na niektoré body:

  1. Telo odpovede je reprezentované vo forme stromu, ktorý po prvé pridáva informačný obsah a po druhé vám umožňuje pridať niekoľko zaujímavých funkcií, o ktorých nižšie
  2. K dispozícii je záložka Assertions, ktorá zobrazuje zoznam testov pre danú požiadavku

Ako vidíte, náš nástroj sa dá použiť ako pohodlný klient na odpočinok. Neboli by sme tu však, keby sa jeho možnosti obmedzili len na odosielanie požiadaviek. Ďalej načrtnem základné koncepty a funkčnosť TestMace.

Základné koncepty a funkcie

uzol

Funkcionalita TestMace je rozdelená do rôznych typov uzlov. Vo vyššie uvedenom príklade sme demonštrovali fungovanie uzla RequestStep. V aplikácii sú však teraz k dispozícii aj nasledujúce typy uzlov:

  • RequestStep. Toto je uzol, cez ktorý môžete vytvoriť požiadavku. Môže mať iba jeden uzol tvrdenia ako podradený prvok.
  • Tvrdenie. Uzol sa používa na písanie testov. Môže byť iba podradeným uzlom uzla RequestStep.
  • Priečinok. Umožňuje vám zoskupiť uzly Folder a RequestStep v sebe.
  • Projekt. Toto je koreňový uzol, ktorý sa vytvára automaticky pri vytváraní projektu. V opačnom prípade zopakuje funkčnosť uzla Priečinok.
  • Odkaz. Odkaz na uzol Folder alebo RequestStep. Umožňuje opätovné použitie dotazov a skriptov.
  • atď

Uzly sa nachádzajú v škrabancoch (panel vľavo dole, slúži na rýchle vytváranie „jednorazových“ dotazov) a v projektoch (panel vľavo hore), ktorým sa budeme venovať podrobnejšie.

Projekt

Keď spustíte aplikáciu, môžete si všimnúť jediný riadok projektu v ľavom hornom rohu. Toto je koreň stromu projektu. Keď spustíte projekt, vytvorí sa dočasný projekt, ktorého cesta závisí od vášho operačného systému. Projekt môžete kedykoľvek presunúť na miesto, ktoré vám vyhovuje.

Hlavným účelom projektu je možnosť ukladať vývoj v súborovom systéme a ďalej ich synchronizovať prostredníctvom systémov správy verzií, spúšťať skripty v CI, kontrolovať zmeny atď.

Premenné

Premenné sú jedným z kľúčových mechanizmov aplikácie. Tí z vás, ktorí pracujú s nástrojmi ako TestMace, už možno tušia, o čom hovoríme. Premenné sú teda spôsob, ako ukladať spoločné údaje a komunikovať medzi uzlami. Analógom sú napríklad premenné prostredia v Postman alebo Insomnia. Išli sme však ďalej a tému rozvíjali. V TestMace je možné premenné nastaviť na úrovni uzla. Akýkoľvek. Existuje aj mechanizmus dedenia premenných od predkov a prekrývajúcich sa premenných u potomkov. Okrem toho existuje množstvo vstavaných premenných, pričom názvy vstavaných premenných začínajú $... Tu sú niektoré z nich:

  • $prevStep — prepojenie na premenné predchádzajúceho uzla
  • $nextStep — prepojenie na premenné nasledujúceho uzla
  • $parent - to isté, ale len pre predka
  • $response - odpoveď zo servera
  • $env - aktuálne premenné prostredia
  • $dynamicVar - dynamické premenné vytvorené počas vykonávania skriptu alebo dotazu

$env - ide v podstate o bežné premenné na úrovni uzla projektu, avšak množina premenných prostredia sa mení v závislosti od zvoleného prostredia.

K premennej sa pristupuje cez ${variable_name}
Hodnotou premennej môže byť iná premenná alebo dokonca celý výraz. Napríklad premenná url môže byť výraz ako
http://${host}:${port}/${endpoint}.

Samostatne stojí za zmienku možnosť priradenia premenných počas vykonávania skriptu. Často je napríklad potrebné uložiť autorizačné údaje (token alebo celú hlavičku), ktoré prišli zo servera po úspešnom prihlásení. TestMace umožňuje uložiť takéto údaje do dynamických premenných jedného z predkov. Aby sa predišlo kolíziám s už existujúcimi „statickými“ premennými, dynamické premenné sú umiestnené v samostatnom objekte $dynamicVar.

Skriptá

Pomocou všetkých vyššie uvedených funkcií môžete spúšťať celé skripty dotazov. Napríklad vytvorenie entity -> dotaz na entitu -> odstránenie entity. V tomto prípade môžete napríklad použiť uzol Folder na zoskupenie niekoľkých uzlov RequestStep.

Automatické dopĺňanie a zvýraznenie výrazov

Pre pohodlnú prácu s premennými (nielen) je potrebné automatické dopĺňanie. A samozrejme zvýraznenie hodnoty výrazu, aby bolo jednoduchšie a pohodlnejšie objasniť, čomu sa konkrétna premenná rovná. To je presne ten prípad, keď je lepšie raz vidieť ako stokrát počuť:

TestMace - výkonné IDE pre prácu s API

Stojí za zmienku, že automatické dopĺňanie je implementované nielen pre premenné, ale napríklad aj pre hlavičky, hodnoty určitých hlavičiek (napríklad automatické dopĺňanie pre hlavičku Content-Type), protokoly a oveľa viac. Zoznam sa neustále aktualizuje, keď aplikácia rastie.

Vrátiť späť/znova

Vrátenie/prerobenie zmien je veľmi pohodlná vec, no z nejakého dôvodu nie je implementovaná všade (a nástroje na prácu s API nie sú výnimkou). Ale my nie sme jednými z nich!) V celom projekte sme implementovali undo/redo, čo umožňuje vrátiť späť nielen úpravu konkrétneho uzla, ale aj jeho vytvorenie, vymazanie, presun atď. Najkritickejšie operácie vyžadujú potvrdenie.

Vytváranie testov

Uzol Assertion je zodpovedný za vytváranie testov. Jednou z hlavných funkcií je možnosť vytvárať testy bez programovania pomocou vstavaných editorov.

Uzol tvrdenia pozostáva zo sady tvrdení. Každé tvrdenie má svoj vlastný typ, v súčasnosti existuje niekoľko typov tvrdení

  1. Porovnať hodnoty - jednoducho porovná 2 hodnoty. Existuje niekoľko porovnávacích operátorov: rovný, nerovná sa, väčší ako, väčší alebo rovný, menší ako, menší alebo rovný.

  2. Obsahuje hodnotu – kontroluje výskyt podreťazca v reťazci.

  3. XPath – kontroluje, či selektor v XML obsahuje určitú hodnotu.

  4. Vyhlásenie JavaScriptu je ľubovoľný skript JavaScript, ktorý pri úspechu vráti hodnotu true a pri neúspechu vráti hodnotu false.

Podotýkam, že len to posledné vyžaduje od používateľa programátorské schopnosti, ďalšie 3 tvrdenia sú vytvorené pomocou grafického rozhrania. Tu je napríklad to, ako vyzerá dialóg na vytvorenie tvrdenia o porovnaní hodnôt:

TestMace - výkonné IDE pre prácu s API

Čerešničkou na torte je rýchle vytváranie tvrdení z odpovedí, stačí sa pozrieť!

TestMace - výkonné IDE pre prácu s API

Takéto tvrdenia však majú zjavné obmedzenia, ktoré možno budete chcieť prekonať pomocou javascriptového tvrdenia. A tu TestMace tiež poskytuje pohodlné prostredie s automatickým dopĺňaním, zvýrazňovaním syntaxe a dokonca aj so statickým analyzátorom.

Popis API

TestMace vám umožňuje API nielen používať, ale aj dokumentovať. Samotný popis má navyše hierarchickú štruktúru a organicky zapadá do zvyšku projektu. Okrem toho je v súčasnosti možné importovať popisy API z formátov Swagger 2.0 / OpenAPI 3.0. Samotný popis nie je len mŕtvou váhou, ale je úzko integrovaný so zvyškom projektu, najmä je k dispozícii automatické dopĺňanie URL adries, HTTP hlavičiek, parametrov dotazu atď. a v budúcnosti plánujeme pridať testy pre súlad odpovede s popisom API.

Uzol zdieľania

Prípad: chceli by ste zdieľať problematickú požiadavku alebo dokonca celý skript s kolegom alebo ho jednoducho pripojiť k chybe. TestMace pokrýva aj tento prípad: aplikácia vám umožňuje serializovať akýkoľvek uzol a dokonca aj podstrom v adrese URL. Skopírujte-prilepte a požiadavku jednoducho prenesiete na iný stroj alebo projekt.

Ľudsky čitateľný formát ukladania projektu

Momentálne je každý uzol uložený v samostatnom súbore s príponou yml (ako je to v prípade uzla Assertion), alebo v priečinku s názvom uzla a súborom index.yml v ňom.
Takto napríklad vyzerá súbor so žiadosťou, ktorý sme vytvorili vo vyššie uvedenej 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

Ako vidíte, všetko je veľmi jasné. V prípade potreby je možné tento formát jednoducho ručne upraviť.

Hierarchia priečinkov v systéme súborov úplne opakuje hierarchiu uzlov v projekte. Napríklad skript ako:

TestMace - výkonné IDE pre prácu s API

Mapuje systém súborov do nasledujúcej štruktúry (zobrazuje sa iba hierarchia priečinkov, ale podstata je jasná)

TestMace - výkonné IDE pre prácu s API

To uľahčuje proces kontroly projektu.

Dovoz od Postmana

Po prečítaní vyššie uvedeného si niektorí používatelia budú chcieť vyskúšať (však?) nový produkt alebo (čo si sakra nerobí srandu!) ho úplne použiť vo svojom projekte. Migráciu však môže zastaviť veľký počet vývojov v tom istom Postmanovi. V takýchto prípadoch TestMace podporuje importovanie zbierok z Postmana. Momentálne sú podporované importy bez testov, no nevylučujeme ich podporu v budúcnosti.

Plány

Dúfam, že mnohým z tých, ktorí čítali až sem, sa náš produkt páčil. To však nie je všetko! Práce na produkte sú v plnom prúde a tu je niekoľko funkcií, ktoré plánujeme čoskoro pridať.

Cloudová synchronizácia

Jedna z najžiadanejších funkcií. V súčasnosti navrhujeme na synchronizáciu použiť systémy správy verzií, pre ktoré robíme formát priateľskejší pre tento typ úložiska. Tento pracovný postup však nie je vhodný pre každého, preto plánujeme pridať mechanizmus synchronizácie, ktorý mnohí poznajú prostredníctvom našich serverov.

CLI

Ako už bolo spomenuté vyššie, produkty na úrovni IDE sa nezaobídu bez najrôznejších integrácií s existujúcimi aplikáciami alebo pracovnými postupmi. CLI je presne to, čo je potrebné na integráciu testov napísaných v TestMace do procesu nepretržitej integrácie. Práce na CLI sú v plnom prúde, prvé verzie spustia projekt pomocou jednoduchej konzolovej správy. V budúcnosti plánujeme pridať výstup reportov vo formáte JUnit.

Pluginový systém

Napriek všetkej sile nášho nástroja je množina prípadov, ktoré vyžadujú riešenia, neobmedzená. Koniec koncov, existujú úlohy, ktoré sú špecifické pre konkrétny projekt. Preto v budúcnosti plánujeme pridať SDK pre vývoj pluginov a každý vývojár si bude môcť pridať funkcionalitu podľa seba.

Rozšírenie rozsahu typov uzlov

Táto sada uzlov nepokrýva všetky prípady požadované používateľom. Uzly, ktoré sa plánujú pridať:

  • Uzol skriptu – konvertuje a umiestňuje údaje pomocou js a príslušného API. Pomocou tohto typu uzla môžete v Postman robiť veci, ako sú skripty pred požiadavkou a po požiadavke.
  • Uzol GraphQL - podpora graphql
  • Uzol vlastného tvrdenia – umožní vám rozšíriť množinu existujúcich tvrdení v projekte
    Samozrejme, toto nie je konečný zoznam, bude neustále aktualizovaný, okrem iného aj na základe vašej spätnej väzby.

FAQ

Čím sa líšite od Poštára?

  1. Koncept uzlov, ktorý vám umožňuje takmer donekonečna škálovať funkčnosť projektu
  2. Ľudsky čitateľný formát projektu s uložením do súborového systému, ktorý zjednodušuje prácu pomocou systémov správy verzií
  3. Schopnosť vytvárať testy bez programovania a pokročilejšia podpora js v editore testov (automatické dopĺňanie, statický analyzátor)
  4. Pokročilé automatické dopĺňanie a zvýraznenie aktuálnej hodnoty premenných

Je to produkt s otvoreným zdrojom?

Nie, momentálne sú zdroje uzavreté, ale v budúcnosti zvažujeme možnosť otvorenia zdrojov

Z čoho žiješ?)

Spolu s bezplatnou verziou plánujeme vydať aj platenú verziu produktu. Primárne bude zahŕňať veci, ktoré vyžadujú stranu servera, napríklad synchronizáciu.

Záver

Náš projekt sa míľovými krokmi posúva smerom k stabilnému vydaniu. Produkt sa však už môže používať a pozitívna spätná väzba od našich prvých používateľov je toho dôkazom. Aktívne zbierame spätnú väzbu, pretože bez úzkej spolupráce s komunitou nie je možné vybudovať dobrý nástroj. Nájdete nás tu:

Oficiálne internetové stránky

telegram

Voľný

facebook

Sledovač problémov

Tešíme sa na vaše priania a návrhy!

Zdroj: hab.com

Pridať komentár