
Ahojte všetci, tu je ! Možno mnohí o nás vedia z . Pre tých, ktorí sa práve pripojili: vyvíjame IDE na prácu s API TestMace. Najčastejšia otázka pri porovnávaní TestMace s konkurenčnými produktmi je: „Čím sa líšite od Postmanu?“. Rozhodli sme sa, že je čas poskytnúť podrobnú odpoveď na túto otázku. Nižšie sme bod po bode uviedli naše výhody pred .
Rozdelenie na uzly
Ak pracujete s Postmanom, viete, že rozhranie požiadavky obsahuje všetko potrebné. Sú tu skripty, testy a samotné požiadavky. To uľahčuje prácu pre začiatočníkov, avšak pri väčších scenároch takýto prístup nie je flexibilný. Čo ak chcete vytvoriť niekoľko požiadaviek a vykonať ich agregáciu? Čo ak chcete vykonať skript bez požiadavky alebo niekoľko logicky oddelených skriptov za sebou? Nakoniec, nebolo by zlé oddeliť testy od bežných utilitárnych skriptov? Okrem toho prístup „pridávame všetok funkčný obsah do jedného uzla“ nie je škálovateľný — rozhranie sa rýchlo stáva preplneným.
TestMace od začiatku rozdeľuje všetku funkcionalitu na rôzne typy uzlov. Chcete urobiť požiadavku? Tu máte uzol. Chcete napísať skript? Tu máte uzol. Potrebujete testy? Prosím — uzol. A áno, môžete to celé zabalit do uzla. A to všetko sa ľahko kombinuje. Takýto prístup nie je len veľmi flexibilný, ale v súlade so zásadou jedinečnej zodpovednosti umožňuje používať len to, čo skutočne potrebujete v daný okamih. Prečo by som potreboval skripty a testy, keď chcem len urobiť požiadavku?
Čitateľný formát projektu
Medzi TestMace a Postmanom existuje konceptuálny rozdiel v spôsobe uchovávania. V Postmanovi sú všetky požiadavky uložené niekde v lokálnom úložisku. Ak je potrebné zdieľať požiadavky medzi viacerými používateľmi, je potrebné využiť vstavanú synchronizáciu. V skutočnosti je to bežne akceptovaný prístup, ktorý však nie je bez nedostatkov. Ako je to so zabezpečením údajov? Veď politika niektorých firiem môže zakazovať uchovávanie údajov u tretích osôb. Avšak sme presvedčení, že TestMace môže ponúknuť niečo lepšie! A menom tohto zlepšenia je „čitateľný formát projektu“.
Začneme tým, že v TestMace existuje entita „projekt“. A aplikácia bola pôvodne vyvinutá s ohľadom na uchovávanie projektov v systémoch na kontrolu verzií: strom projektu sa takmer jeden na jedného premieta do súborovej štruktúry, ako formát ukladania sa používa yaml (bez zbytočných zátvoriek a čiarok), a súborové zobrazenie každého uzla je podrobne popísané v dokumentácii s komentármi. Ale väčšinou sa na to nebudete pozerať – všetky mená polí majú logické názvy.
Čo to používateľovi poskytuje? To umožňuje veľmi flexibilne meniť pracovný tok tímu s použitím známych prístupov. Napríklad vývojári môžu uchovávať projekt v tom istom repozitári, aký majú backend. V vetvách môže vývojár okrem zmien v kódovej báze upraviť existujúce scenáre požiadaviek a testy. Po zaznamenaní zmien v repozitári (git, svn, mercurial – čo vám viac vyhovuje) spúšťa CI (vaša obľúbená, nikým nenavrhnutá) našu konzolovú utilitu , a výsledný report (napríklad vo formáte junit, ktorý je taktiež podporovaný v testmace-cli) sa odosiela do príslušného systému. A otázka bezpečnosti už nie je problémom.
Ako vidíte, TestMace nenúti svoju ekosystému a paradigmu. Namiesto toho sa ľahko integruje do už existujúcich procesov.
Dynamické premenné
TestMace nasleduje koncept no-code: ak je problém možné vyriešiť bez použitia kódu, snažíme sa poskytnúť takú možnosť. Práca s premennými je práve ten funkčný aspekt, kde väčšinou môžeme obísť programovanie.
Príklad: dostali sme odpoveď od servera a chceme uložiť časť odpovede do premennej. V Postmane by sme v testovacom skripte (čo je samo o sebe čudné) napísali niečo v zmysle:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);Ale podľa nášho názoru písanie skriptu pre taký jednoduchý a často používaný scenár vyzerá zbytočne. Preto v TestMace existuje možnosť priradiť premennej kus odpovede pomocou grafického rozhrania. Pozrite sa, ako je to jednoduché:

A teraz pri každom požiadavku sa táto dynamická premenná aktualizuje. Môžete však namietať, že prístup Postmana je flexibilnejší a umožňuje nielen priradiť, ale aj vykonať určitú predspracovanie. Takto môžete modifikovať predchádzajúci príklad:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));Nuž, na to je v TestMace uzol, ktorý pokrýva tento scenár. Aby ste reprodukovali predchádzajúci prípad, ale už v podaní TestMace, treba po požiadavke vytvoriť uzol script a ako skript použiť nasledujúci kód:
const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));Ako vidíte, kompozícia uzlov tu tiež dobre poslúžila. A pre taký jednoduchý prípad, aký je uvedený vyššie, môžete dokonca jednoducho priradiť výraz ${crypto.MD5($response.data)} premennej vytvorenej prostredníctvom grafického rozhrania!
Tvorba testov cez GUI
Postman umožňuje vytvárať testy pomocou písania skriptov (v prípade Postmana to je JavaScript). Tento prístup má mnoho výhod — takmer neobmedzenú flexibilitu, dostupnosť hotových riešení atď.
Avšak realita je často taká (nie sme my také, ale život taký), že testér nemá programátorské zručnosti a chcel by prínos do tímu už teraz. Pre takéto prípady, podľa konceptu no-code, TestMace umožňuje vytvárať jednoduché testy prostredníctvom grafického rozhrania bez písania skriptov. Napríklad takto vyzerá proces vytvárania testu, ktorý porovnáva hodnoty na rovnosť:

Avšak vytváranie testov v grafickom editore neodstraňuje možnosť . Tu sú tie isté knižnice, ktoré sú v uzle script, a na písanie testov.
Možnosť spustiť už existujúci scenár podľa odkazu (Link uzol)
Často vznikajú situácie, kedy je potrebné vykonať určitú požiadavku alebo dokonca celý scenár niekoľkokrát na rôznych častiach projektu. Príkladom takýchto požiadaviek môže byť vlastná viacstupňová autorizácia, uvedenie prostredia do požadovaného stavu atď. Celkovo, ak hovoríme v termínoch programovacích jazykov, chceli by sme mať funkcie, ktoré môžeme opakovane používať v rôznych častiach aplikácie. V TestMace túto funkciu vykonáva uzol. Použitie je veľmi jednoduché:
1) vytvorte požiadavku alebo skript
2) vytvorte uzol typu Link
3) v parametroch nastavte odkaz na skript, vytvorený v prvom kroku
V pokročilejšej verzii môžete určiť, aké dynamické premenné zo skriptu prenášať na vyššiu úroveň vzhľadom na odkaz. Znie to mätúco? Predpokladajme, že sme vytvorili Folder s názvom create-post, v ktorom sa tomuto uzlu priradí dynamická premenná postId. Teraz v uzle Link create-post-link môžete jasne určiť, aby sa premenná postId priradila predkovi create-post-link. Tento mechanizmus (opäť sa vyjadrujeme programátorsky) môžete použiť na vrátenie výsledku z "funkcie". V skratke, úžasné, DRY v plnom prúde a opäť žiadny riadok kódu neutrpí.

Čo sa týka Postmanu, požiadavku na opätovné použitie požiadaviek , a zdá sa, že existujú , že na tomto probléme pracujú. V súčasnej podobe samozrejme Postman má možnosť zmeny toku vykonávania, čo teoreticky môže umožniť realizáciu takéhoto správania, ale skôr ide o špinavý hack, než naozaj funkčný prístup.
Ďalšie rozdiely
- Väčšia kontrola nad rozsahom premenných. Najmenším rozsahom, v rámci ktorého môžete definovať premennú v Postman, je kolekcia. TestMace umožňuje definovať premenné pre akúkoľvek požiadavku alebo priečinok. V Postman Share kolekcia umožňuje exportovať iba kolekcie, zatiaľ čo v TestMace zdieľanie funguje pre akýkoľvek uzol
- TestMace podporuje , ktoré sa môžu predvolene priradiť do podriadených požiadaviek. V Postman je v tejto veci , a je dokonca uzavretá, ale ako riešenie sa navrhuje... . V TestMace je to všetko konfigurované cez GUI a máte možnosť voliteľne vypnúť dedičné hlavičky v konkrétnych potomkoch
- Undo/Redo. Funguje nielen pri úprave uzlov, ale aj pri presúvaní, odstraňovaní, premenovávaní a iných operáciách, ktoré menia štruktúru projektu
- Súbory pripojené k požiadavkám sa stávajú súčasťou projektu a ukladajú sa spolu s ním, pričom sa skvele synchronizujú, na rozdiel od Postman. (Áno, už nie je potrebné každé zavádzanie manuálne vyberať súbory pri každom spustení a posielať kolegom v archívoch)
Funkcie, ktoré sú už na ceste
Nedokázali sme odolať pokušeniu poodhaliť závoj tajomstiev okolo našich nasledujúcich vydaní, najmä keď je funkčnosť taká lákavá a už prechádza predvydaním. Takže vítame.
Funkcie
Ako je známe, na generovanie hodnôt v Postmane sa využívajú takzvané dynamické premenné. a drvivá väčšina funkcií slúži na generovanie falošných hodnôt. Napríklad na generovanie náhodného emailu je potrebné napísať:
{{$randomEmail}}Avšak, keďže ide o premenné (aj keď dynamické), nemôžu sa používať ako funkcie: nie sú parametrizovateľné, a preto nie je možné získať hash zo stringu.
V TestMace plánujeme pridať „poctivé“ funkcie. Priamo vo vnútri ${} budete môcť nielen odkazovať na premennú, ale aj zavolať funkciu. T.j. ak potrebujeme vygenerovať známy falošný email, jednoducho napíšeme
${faker.internet.email()}Okrem toho, že ide o funkciu, je vidieť, že je možné volať metódy objektu. A namiesto veľkého plochého zoznamu dynamických premenných máme súbor logicky zoskupených objektov.
A čo ak chceme vypočítať hash zo stringu? Jednoduché!
${crypto.MD5($dynamicVar.data)}Je vidieť, že ako parametre je možné prenášať aj premenné! V tomto mieste môže bystrý čitateľ podozrievať niečo alebo niekoho…
Používanie JavaScriptu vo výrazoch
… A nie nadarmo! Keď sme formulovali požiadavky na funkcie, náhle sme si uvedomili, že vo výrazov musíme dovoliť písať platný javascript. Takže teraz ste voľní písať výrazy v duchu:
${1 + '' + crypto.MD5('asdf')}A to všetko bez skriptov priamo v vstupných poliach!
Čo sa týka Postmanu, tam sa dajú používať len premenné, a pri pokuse napísať aspoň aký-taký výraz, validátor sa hneď ozve a odmieta ho vypočítať.
![]()
Pokročilé automatické doplňovanie
V súčasnosti má TestMace štandardné automatické doplňovanie, ktoré vyzerá nasledovne:

Tu okrem automaticky dopĺňanej reťazca je uvedené, ku komu patrí tento reťazec. Tento mechanizmus funguje len vo výrazoch uzavretých v zátvorkách ${}.
Ako si môžete všimnúť, pridali sa vizuálne identifikátory, ktoré ukazujú na typ premennej (napríklad reťazec, číslo, pole atď.). Taktiež je možné meniť režimy automatického doplňovania (napríklad si môžete vybrať automatické doplňovanie premennými alebo nadpismi). Ale ani to nie je to najdôležitejšie!
Po prvé, automatické doplňovanie funguje aj vo výrazoch (kde je to možné). Takto to vyzerá:

A po druhé, teraz je automatické doplňovanie dostupné aj v skriptoch. Pozrite sa, ako to funguje!

Nemá zmysel porovnávať túto funkciu s Postmanom — tam sa automatické doplňovanie obmedzuje iba na statické zoznamy premenných, nadpisov a ich hodnôt (opravte ma, ak som niečo zabudol). Skripty sa automaticky nedoplňujú 🙁
Záver
V októbri uplynul jeden rok od začiatku vývoja nášho produktu. Počas tohto času sme stihli urobiť veľa vecí a v niektorých parametroch sme dohnali našich konkurentov. Ale nech už to je akékoľvek, naším cieľom je vytvoriť naozaj pohodlný nástroj na prácu s API. Ešte nás čaká veľa práce, tu je približný plán rozvoja nášho projektu na najbližší rok: .
Vaša spätná väzba nám pomôže lepšie sa orientovať v množstve funkcií, a vaša podpora nám dodáva silu a sebadôveru, že robíme správnu vec. Dnes je pre náš projekt dôležitý deň — deň zverejnenia TestMace na . Prosím, podporte náš projekt, je to pre nás veľmi dôležité. O to viac, že na našej PH stránke je dnes lákavá ponuka a je obmedzená
Zdroj: habr.com
