
Üdvözöljük mindenkit ! Lehet, hogy sokan ismernek minket a . Azok számára, akik most csatlakoztak: API TestMace munkához fejlesztünk IDE-t. A leggyakrabban feltett kérdés a TestMace és versenytársai összehasonlításakor: «Miben különböztök meg a Postmantól?». Úgy döntöttünk, itt az ideje, hogy részletes választ adjunk erre a kérdésre. Az alábbiakban pontokba szedtük előnyeinket a .
Csomópontokra bontás
Ha a Postmant használod, tudod, hogy a kérés interfésze tartalmaz minden szükséges funkciót. Itt vannak a szkriptek, a tesztek és maguk a kérések. Ez megkönnyíti a kezdők munkáját, azonban nagyobb forgatókönyveknél ez a megközelítés nem rugalmas. Mi van, ha több kérést szeretnél létrehozni, és aggregálni őket? Mi van, ha szkriptet szeretnél végrehajtani kérés nélkül vagy több logikailag elválasztott szkriptet egymás után? A végén nem lenne rossz, ha szétválasztanánk a teszteket a normál segédprogram szkriptektől. Ezen kívül a megközelítés, hogy «minden funkciót egy csomópontba teszünk», nem skálázható — az interfész gyorsan túlterhelté válik.
A TestMace eredetileg a funkciókat különböző típusú csomópontokra osztja. Kérést szeretnél készíteni? Itt van a csomópont. Szkriptet szeretnél írni? Itt van a csomópont. Tesztekre van szükséged? Kérlek — csomópont. Ó, igen, mindezt becsomagolhatod egy csomópontba. És mindez könnyen kombinálható egymással. Ez a megközelítés nemcsak nagyon rugalmas, hanem a felelősség egységének elve szerint lehetővé teszi, hogy csak azt használd, amire éppen szükséged van. Miért lenne szükségem szkriptekre és tesztekre, ha csak egy kérést akarok csinálni?
Ember által olvasható projektformátum
A TestMace és a Postman között koncepcionális eltérés van a tárolás módjában. A Postmanben minden kérés valahol a helyi tárolóban van. Ha szükséges, hogy megosszuk a kéréseket több felhasználó között, akkor használnunk kell a beépített szinkronizálást. Valójában ez egy széles körben elterjedt megközelítés, nem mentes hibáktól. Mi a helyzet az adatok biztonságával? Végül is egyes cégek politikája nem engedheti meg az adatok harmadik fél általi tárolását. Ugyanakkor úgy gondoljuk, hogy a TestMace tud valami jobbat ajánlani! Ennek a javításnak a neve: «ember által olvasható projektformátum».
Kezdjük azzal, hogy a TestMace-ben létezik egy "projekt" entitás. Az alkalmazás alapvetően úgy lett megtervezve, hogy a projekteket verziókezelő rendszerekben tárolja: a projekt fájlstruktúrája szinte pontosan a fájlfa struktúrára vetül, a tárolási formátum yaml (felesleges zárójelek és vesszők nélkül), a minden egyes csomópont fájlformátuma részletesen le van írva a dokumentációban megjegyzésekkel. De a legtöbb esetben valószínűleg nem kell erre néznie — minden mező neve logikus elnevezéseket kapott.
Mit jelent ez a felhasználó számára? Ez lehetővé teszi a csapat munkafolyamatának rendkívül rugalmas megváltoztatását a szokásos megközelítések használatával. Például a fejlesztők tárolhatják a projektet ugyanabban a repository-ban, mint a backend. Az ágakban, a kódalap közvetlen módosítása mellett, a fejlesztő javíthatja a meglévő kérés- és tesztforgatókönyveket. A módosítások rögzítése után a repository-ban (git, svn, mercurial — ahogy önnek tetszik) a CI (az ön kedvenc, senki által nem rákényszerített) elindítja a konzolos segédprogramunkat. , és a végrehajtás után kapott jelentés (például junit formátumban, amelyet a testmace-cli is támogat) elküldésre kerül a megfelelő rendszerbe. Ráadásul a fent említett biztonsági kérdés már nem jelent problémát.
Ahogy látható, a TestMace nem kényszeríti saját ökoszisztémáját és paradigmáját. Ehelyett könnyen beilleszthető a már kialakult folyamatokba.
Dinamikus változók
A TestMace a no-code koncepciót követi: ha egy problémát lehetséges kód használata nélkül megoldani, akkor megpróbálunk olyan lehetőséget biztosítani. A változókkal való munka pontosan az a funkció, ahol a legtöbb esetben meg lehet úszni a programozást.
Példa: válasz érkezett a szervertől, és azt szeretnénk, ha a válasz egy részét elmentenénk egy változóba. A Postman-ben a tesztelési szkriptben (ami önmagában furcsa) írnánk valami ilyesmit:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);De véleményünk szerint egy olyan egyszerű és gyakran használt forgatókönyv esetében, mint ez, egy szkript megírása feleslegesnek tűnik. Ezért a TestMace lehetővé teszi, hogy grafikus felhasználói felület segítségével egy változóhoz rendeljen egy részletet a válaszból. Nézze meg, mennyire egyszerű ez:

Most már minden kérésnél ez a dinamikus változó frissülni fog. De mondhatnád, hogy a Postman megközelítése rugalmasabb, és nemcsak hozzárendelést végez, hanem előfeldolgozást is elvégez. Így módosíthatod az előző példát:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));Nos, erre a TestMace-ben van egy csomópont, amely lefedi ezt a forgatókönyvet. Az előző eset reprodukálásához, de már a TestMace kivitelezésében, a kérés után egy script csomópontot kell létrehozni, és a következő kódot kell használni a scriptként:
const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));Ahogy láthatod, a csomópontok összetétele itt is jól működött. És egy ilyen egyszerű esetben, mint amit fent említettem, akár egyszerűen hozzárendelhető is egy kifejezés ${crypto.MD5($response.data)} a grafikus felületen keresztül létrehozott változóhoz!
Tesztelés létrehozása GUI-n keresztül
A Postman lehetővé teszi a tesztek létrehozását szkriptek írásával (a Postman esetében ez JavaScript). Ennek a megközelítésnek számos előnye van — gyakorlatilag határtalan rugalmasság, kész megoldások stb.
Azonban a valóság gyakran úgy alakul (nem mi vagyunk ilyenek, hanem az élet ilyen), hogy a tesztelőnek nincs programozási képessége, de a csapatnak szeretne már most hasznot hozni. Az ilyen esetekre, a no-code koncepciót követve, a TestMace lehetővé teszi egyszerű tesztek létrehozását grafikus felületen, kódírás nélkül. Íme, hogyan néz ki a teszt létrehozásának folyamata, amely az értékeket egyenlőségre hasonlítja össze:

Ugyanakkor a grafikus szerkesztőben történő tesztelés nem zárja ki a kódalapú tesztelés lehetőségét. . Itt ugyanazok a könyvtárak érhetők el, mint a script csomópontban, és a tesztek írásához.
Lehetőség van már meglévő forgatókönyv hivatkozás szerinti futtatására (Link csomópont)
Gyakran előfordul, hogy bizonyos kéréseket vagy akár egy teljes forgatókönyvet többször kell végrehajtani a projekt különböző részein. Az ilyen kérések közé tartozhat egy egyedi, többlépcsős hitelesítés, a környezet kívánt állapotba állítása stb. Ha programozási nyelvek kifejezéseit használjuk, szeretnénk olyan funkciókat, amelyeket különböző alkalmazásrészekben újrahasználhatunk. A TestMace ezt a funkciót biztosít. A csomópont. Nagyon egyszerű a használata:
1) hozzon létre egy lekérést vagy szkriptet
2) hozzon létre egy Link típusú csomópontot
3) a paramétereknél adja meg a hivatkozást az első lépésben létrehozott szkriptre
A fejlettebb változatban megadhatja, hogy a szkriptből mely dinamikus változókat továbbítson egy szinttel feljebb a hivatkozás mellett. Kicsit bonyolultan hangzik? Tegyük fel, hogy létrehoztunk egy mappát a következő névvel create-post, amelynek belsejében a csomóponthoz rendeljük a dinamikus változót postId. Most a Link csomópontban create-post-link kifejezetten megadhatja, hogy a változó postId a szülőhöz legyen rendelve create-post-link. Ez a mechanizmus (megint csak, programozói nyelven szólva) lehetővé teszi, hogy visszatérjünk az 'függvényből' származó eredménnyel. Összességében nagyszerű, teljesen DRY, és egyetlen kódsor sem sérült.

A Postmannel kapcsolatban a lekérések újrafelhasználására vonatkozó feature request , és úgy tűnik, hogy van , ami arra utal, hogy dolgoznak a problémán. A jelenlegi formájában a Postman természetesen rendelkezik a végrehajtási folyamat megváltoztatásának lehetőségével, ami elméletileg lehetővé teszi az ilyen viselkedés megvalósítását, de inkább egy piszkos hack, mint egy igazán működő megoldás.
Egyéb eltérések
- Nagyobb ellenőrzés a változók láthatósága felett. A legalacsonyabb hatókör, amelyen belül változót lehet definiálni a Postman-ben, a gyűjtemény. A TestMace lehetővé teszi változók definiálását bármely lekéréshez vagy mappához. A Postman Share gyűjtemény lehetővé teszi csak a gyűjtemények exportálását, míg a TestMace megosztás bármely csomópontra érvényes.
- A TestMace támogatja , amelyek alapértelmezetten belerakódhatnak a gyermeklérekbe. A Postman ezzel kapcsolatban van , és még lezárt is, de a megoldásként azt javasolják... . A TestMace-ban mindez a GUI-n keresztül konfigurálható, és lehetőség van az öröklődő fejlécek opciós kikapcsolására a konkrét leszármazottakon.
- Undo/Redo. Nemcsak a csomópontok szerkesztésekor működik, hanem azok áthelyezése, törlése, átnevezése és egyéb olyan műveletek során is, amelyek megváltoztatják a projekt struktúráját.
- A lekérésekhez csatolt fájlok a projekt részévé válnak, és vele együtt tárolódnak, így szépen szinkronizálódnak, ellentétben a Postmannel. (Igen, már nem kell minden alkalommal kézzel kiválasztani a fájlokat a minden indításkor és átadni a kollégáknak archívumokban.)
Olyan funkciók, amelyek már úton vannak
Nem tudtuk ellenállni a kísértésnek, hogy egy kis betekintést nyújtsunk a következő kiadások titkaiba, főleg, hogy a funkcionalitás nagyon ígéretes, és már a megjelenés előtti finomítás fázisában van. Tehát, üdvözöljük a híreket.
Funkciók
Mint ismert, a Postman-ben a dinamikus változók generálásához használják az úgynevezett dinamikus változókat. A többségük funkciója álértékek generálására szolgál. Például, egy véletlenszerű e-mail generálásához ezt kell írni:
{{$randomEmail}}Azonban mivel ezek változók (még ha dinamikusak is), nem használhatóak funkciókként: nem paraméterezhetők, így nem lehet hash-t venni a karakterláncból.
A TestMace-nél tervezzük, hogy "őszinte" funkciókat adjunk hozzá. A ${} belsejében nemcsak hivatkozhatunk a változóra, hanem funkciót is meghívhatunk. Tehát ha szükség van a hírhedt ál-e-mail generálására, egyszerűen ezt írjuk:
${faker.internet.email()}Ami azt illeti, hogy ez egy funkció, észrevehetjük, hogy lehetőség van az objektum módszerének meghívására. És a nagy, lapos dinamikus változók listája helyett logikailag csoportosított objektumok készletét kapjuk.
De mi van, ha szeretnénk hash-t számítani egy karakterláncból? Könnyedén!
${crypto.MD5($dynamicVar.data)}Észlelhetjük, hogy paraméterekként még változókat is át lehet adni! Ezen a ponton a kíváncsi olvasó gyanakodhat…
JavaScript használata a kifejezésekben
... és nem véletlenül! Amikor a funkciók követelményeit alakítottuk, rájöttünk, hogy a kifejezésekben érvényes Javascript kódot kell írni. Szóval most már szabadon írhat kifejezéseket, mint például:
${1 + '' + crypto.MD5('asdf')}És mindezek mellett a scriptelés nélkül, közvetlenül a bevitel mezőibe!
Ami a Postman-t illeti, ott csak a változók használhatóak, és amikor megpróbálunk egy kis kifejezést írni, a validátor panaszkodik, és megtagadja a számítását.
![]()
Fejlett automatikus kiegészítés
Jelenleg a TestMace rendelkezik a szokásos automatikus kiegészítéssel, amely így néz ki:

Itt az automatikusan kiegészített sor mellett meg van jelölve, hogy melyikhez tartozik ez a sor. Ez a mechanizmus csak a ${} zárójelek közé zárt kifejezésekben működik.
Ahogy észlelheti, vizuális jelölők kerültek hozzáadásra, amelyek jelzik a változó típusát (például szöveg, szám, tömb stb.). Emellett meg lehet változtatni az automatikus kiegészítés módját (például választhat automatikus kiegészítést változókkal vagy fejlécekkel). De ez még nem a legfontosabb!
Először is, az automatikus kiegészítés még a kifejezésekben is működik (ahol ez lehetséges). Így néz ki:

Másodszor, most az automatikus kiegészítés a szkriptekben is elérhető. Nézze meg, hogyan működik!

Ennek a funkciónak a Postman-hez való hasonlítása nem értelmes — ott az automatikus kiegészítés csak statikus változólistákra, fejlécre és azok értékeire korlátozódik (javítson ki, ha valamit elfelejtettem). A szkriptek nem kapnak automatikus kiegészítést 🙁
Zárás
Októberben egy éve indult a termékünk fejlesztése. Ezalatt rengeteget sikerült tennünk, és bizonyos szempontok alapján utolértük a versenytársainkat. De mindezek ellenére a célunk egy igazán kényelmes eszköz létrehozása az API-k kezelésére. Még sok munka vár ránk, itt van a projektünk jövőbeli fejlesztési terve: .
A visszajelzésük segít nekünk jobban tájékozódni a funkciók bőséges kínálatában, és a támogatásuk erőt és bizalmat ad abban, hogy jó úton járunk. Így alakult, hogy ma fontos nap van a projektünk számára — a TestMace kiadásának napja: . Kérjük, támogassa a projektünket, ez nagyon fontos számunkra. Főleg azért, mert a PH oldalunkon ma vonzó ajánlat található, és ez korlátozott ideig elérhető.
Forrás: habr.com
