TestMace — egy erőteljes IDE API munkához

Üdv mindenkinek! Ma bemutatjuk a IT közösségnek a termékünket — IDE-t API munkához TestMace. Talán néhányan már hallottatok rólunk a Zimbra Collaboration Suite vállalati bevezetésével kapcsolatos infrastruktúra tervezéséről. Azonban átfogó áttekintés még nem készült a nála, ezért pótoljuk ezt a sajnálatos hiányosságot.

TestMace — egy erőteljes IDE API munkához

Motiváció

Szeretnénk azzal kezdeni, hogyan jöttünk arra, hogy létrehozzuk a saját eszközünket, amely fejlett API munkát segít. Kezdjük a funkciólista bemutatásával, amelynek szerintünk rendelkeznie kell a „IDE API munkához” termék esetében:

  • Kérések és forgatókönyvek (kérdések sorozata) létrehozása és végrehajtása
  • Különböző típusú tesztek írása
  • Tesztek generálása
  • API leírásával való munka, beleértve az importálást olyan formátumokból, mint a Swagger, OpenAPI, WADL stb.
  • Kérések megelőzése
  • Jó támogatás egy vagy több programozási nyelvhez a szkriptek írásához, beleértve a népszerű könyvtárakkal való integrációt
  • stb.

A listát ízlés szerint lehet bővíteni. Fontos, hogy ne csak az IDE-t alkossuk meg, hanem egy olyan infrastruktúrát is, mint például a felhőszinkronizálás, parancssori eszközök, online megfigyelő szolgáltatás stb. Végül is az utóbbi évek trendjei megkövetelik tőlünk, hogy az alkalmazásunk nem csak erőteljes funkcióval rendelkezzen, hanem kellemes felhasználói felülettel is.

Kinek szükséges egy ilyen eszköz? Nyilvánvalóan mindazoknak, akik valamilyen módon kapcsolatban állnak az API fejlesztésével és tesztelésével — fejlesztőknek és tesztelőknek =). Míg az első esetben gyakran elegendő az egyedi kérések végrehajtása és egyszerű forgatókönyvek, addig a tesztelők számára ez az egyik alapvető eszköz, amelynek egy erőteljes tesztíró mechanizmussal kell rendelkeznie, hogy a CI-ben futhassanak.

Tehát, követve ezeket az irányelveket, elkezdtük létrehozni a termékünket. Nézzük meg, mit értünk el eddig.

Gyors indítás

Kezdjük az alkalmazással való első találkozással. Letölteni itt lehet weboldalunkon. Jelenleg mindhárom fő platformot támogatjuk — Windows, Linux, MacOS. Letöltés, telepítés, indítás. Az első indításkor az alábbi ablakot láthatja:

TestMace — egy erőteljes IDE API munkához

Kattintson a tartalom területének tetején lévő plusz jelre az első kérés létrehozásához. A kérés fül a következőképpen néz ki:

TestMace — egy erőteljes IDE API munkához

Részletesebben is foglalkozzunk vele. A lekérdezés felülete nagyon hasonlít a népszerű REST-kliensek felületére, ami megkönnyíti a migrációt hasonló eszközökről. Készítsük el az első lekérdezést az url-en. https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace — egy erőteljes IDE API munkához

Az első pillantásra a válaszpanel sem hoz váratlan meglepetéseket. Fontos azonban néhány pontra figyelmet fordítani:

  1. A válasz teste fa struktúrában jelenik meg, ami egyrészt informatívabbá teszi, másrészt lehetőséget ad néhány érdekes funkció hozzáadására, amelyekről lentebb olvashat.
  2. Van egy Assertions fül, ahol a megadott kéréshez tartozó tesztek listája látható.

Mint látható, eszközünket kényelmes REST-ként is használhatjuk. De nem azért gyűltünk itt össze, hogy a lehetőségei csupán a lekérdezések elküldésére korlátozódjanak. Továbbá bemutatom a TestMace alapvető fogalmait és funkcionális lehetőségeit.

Alapvető fogalmak és lehetőségek

Csomópont

A TestMace funkciói különböző típusú csomópontokra vannak felosztva. A fenti példában bemutattuk a RequestStep csomópont működését. Jelenleg az alkalmazásban a következő típusú csomópontok is elérhetőek:

  • RequestStep. Ez a csomópont lehetővé teszi a kérés létrehozását. Csak egy Assertion csomópont lehet a gyermekeleme.
  • Assertion. Ez a csomópont tesztek írására szolgál. Csak a RequestStep csomópont gyermekeként lehet jelen.
  • Folder. Lehetővé teszi a Folder és RequestStep csomópontok csoportosítását.
  • Project. Ez a gyökércsomópont, amely automatikusan létrejön a projekt létrehozásakor. Egyébként a Folder csomópont funkcióit ismétli.
  • Link. Hivatkozás egy Folder vagy RequestStep csomópontra. Lehetővé teszi a lekérdezések és forgatókönyvek újrahasználatát.
  • stb.

A csomópontok a scratches (a bal alsó panel, alkalmi "egyszer használatos" lekérdezések gyors létrehozására szolgál) és a project (a bal felső panel) területén helyezkednek el, amelyre részletesebben is kitérünk.

Projekt

Az alkalmazás indításakor észlelhettétek az egyetlen Project sort a bal felső sarokban. Ez a projekt fájlszerkezetének gyökere. A projekt indításakor ideiglenes projekt jön létre, amelynek elérési útja az operációs rendszertől függ. Bármikor áthelyezheted a projektet a számodra megfelelő helyre.

A projekt alapvető célja a munkák fájlrendszerben való tárolásának lehetősége, valamint a változások szinkronizálása verziókezelő rendszerekkel, forgatókönyvek CI-ben való futtatásával, változások átnézésével stb.

Változók

A változók az alkalmazás egyik kulcsmechanizmusát képezik. Azok közül, akik olyan eszközökkel dolgoznak, mint a TestMace, már tudják, miről van szó. Tehát a változók egy módot jelentenek a közös adatok tárolására és a csomópontok közötti kommunikációra. Például a környezeti változók hasonlóak a Postmanban vagy az Insomnia alkalmazásban. Azonban mi tovább léptünk és kiterjesztettük a témát. A TestMace-ben a változókat a csomópont szintjén lehet beállítani. Bármelyik. Létezik továbbá egy mechanizmus a változók öröklésére az ősektől és a változók felülírására az utódokban. Ezen kívül létezik egy sor beépített változó, melyek neve beépített változóként kezdődik $. Íme, néhány közülük:

  • $prevStep — hivatkozás a korábbi csomópont változóra
  • $nextStep — hivatkozás a következő csomópont változóra
  • $parent — ugyanaz, de az őstől
  • $response — a szerver válasza
  • $env — a jelenlegi környezeti változók
  • $dynamicVar — dinamikus változók, amelyeket a forgatókönyv vagy kérés végrehajtása során hoznak létre

$env — ezek lényegében a Project csomópont szintű normál változói, azonban a környezeti változók készlete a kiválasztott környezettől függően változik.

A változóhoz való hozzáférés a következőképpen történik ${variable_name}
A változó értékeként lehet egy másik változó, vagy akár egy egész kifejezés is. Például a url változó értéke egy olyan kifejezés lehet, mint
http://${host}:${port}/${endpoint}.

Külön érdemes megemlíteni a változók futás közbeni hozzárendelésének lehetőségét. Például gyakran szükség van a hitelesítési adatok (token vagy teljes fejléc) mentésére, amelyek a sikeres bejelentkezés után érkeztek a szervertől. A TestMace lehetővé teszi az ilyen adatok dinamikus változókba történő mentését az egyik ős változói közé. Annak érdekében, hogy elkerüljük a már létező „statikus” változókkal való ütközéseket, a dinamikus változók külön objektumban vannak. $dynamicVar.

Forgatókönyvek

Az összes fent említett lehetőség felhasználásával teljes kérésforgatókönyveket hajthat végre. Például entitás létrehozása -> entitáskérdés -> entitás törlése. Ebben az esetben például Folder csomópontot használhat az egyes RequestStep csomópontok csoportosítására.

Automatikus kiegészítés és a kifejezés értékének kiemelése

A változók (és mások) kényelmes használatához szükséges az automatikus kiegészítés. És természetesen a kifejezés értékeinek kiemelése is, hogy könnyebb és kényelmesebb legyen tisztázni, hogy egy adott változó mennyit ér. Ez az a helyzet, amikor jobb egyszer látni, mint százszor hallani:

TestMace — egy erőteljes IDE API munkához

Érdemes megjegyezni, hogy az automatikus kiegészítés nemcsak a változókra vonatkozik, hanem például a fejléc címekre, bizonyos fejléc értékekre (például a Content-Type fejléc automatikus kiegészítése), protokollokra és sok másra. A lista folyamatosan bővül az alkalmazás növekedésével.

Visszavonás/újra

A változtatások visszavonása/újra végrehajtása nagyon hasznos dolog, azonban valamiért nem valósul meg mindenhol (és az API-val való munkaeszközök sem kivételek). De mi nem vagyunk ilyenek!) A visszavonás/újra végrehajtás a projekt keretein belül valósult meg, ami lehetővé teszi, hogy ne csak egy adott elem szerkesztését, hanem létrehozását, törlését, mozgatását stb. is vissza lehessen vonni. A legkritikusabb műveletek megerősítést igényelnek.

Tesztelés létrehozása

A tesztelés létrehozásáért az Assertion elem felel. Az egyik fő jellemzője, hogy lehetőség van tesztek létrehozására programozás nélkül, beépített szerkesztők használatával.

Az Assertion elem állítások halmazából áll. Minden állításnak megvan a saját típusa, jelenleg többféle állítás létezik.

  1. Összehasonlító értékek — egyszerűen összehasonlítja a 2 értéket. Többféle összehasonlító operátor van: 'egyenlő', 'nem egyenlő', 'nagyobb', 'nagyobb vagy egyenlő', 'kisebb', 'kisebb vagy egyenlő'.

  2. Tartalmazza az értéket — ellenőrzi, hogy a részstring szerepel-e a szövegben.

  3. XPath — ellenőrzi, hogy a szelektor szerint az XML-ben egy adott érték található.

  4. JavaScript állítás — tetszőleges JavaScript nyelvű szkript, amely true-t ad vissza siker esetén és false-t, ha nem sikerült.

Megjegyzem, hogy csak az utolsó igényel programozási készségeket a felhasználótól, a többi 3 állítást grafikus felhasználói felületen keresztül hozható létre. Íme egy példa, hogyan néz ki a compare values állítás létrehozásának párbeszédpanelje:

TestMace — egy erőteljes IDE API munkához

A torta cseresznyéje a gyors állításkészítés a válaszból, csak nézd meg ezt!

TestMace — egy erőteljes IDE API munkához

Ezek az állítások azonban nyilvánvaló korlátokkal rendelkeznek, amelyekkel szembesülve használhatod a JavaScript állítást. Itt a TestMace is kényelmes környezetet biztosít automatikus kiegészítéssel, szintaxis kiemeléssel és akár statikus elemzővel is.

API leírás

A TestMace nemcsak az API használatát teszi lehetővé, hanem annak dokumentálását is. A leírás hierarchikus felépítéssel rendelkezik, és szervesen illeszkedik a projekt többi részéhez. Jelenleg lehetőség van az API leírásának importálására Swagger 2.0 / OpenAPI 3.0 formátumokból is. A leírás nem csupán holt teher, hanem szorosan integrálódik a projekt többi részével, például elérhető az URL-ek, HTTP-fejlécek, lekérdezési paraméterek automatikus kiegészítése, és a jövőben tervezünk teszteket is hozzáadni, amelyek az API válaszát a leírához viszonyítják.

Csomópont megosztás

Esettanulmány: szeretné megosztani egy problémás kérdést vagy akár egy teljes forgatókönyvet egy kollégával, vagy egyszerűen csak mellékelni azt egy hibajegyzékhez. A TestMace ezt az esetet is lefedi: az alkalmazás lehetővé teszi bármely csomópont és még a részfát is URL-be sorosítani. Másolás-illesztés, és máris könnyedén átvitte a lekérdezést egy másik gépre vagy projektre.

Emberi olvasásra alkalmas projekt tárolási formátuma

Jelenleg minden csomópont külön fájlban van tárolva, .yml kiterjesztéssel (mint az Assertion csomópont esetében), vagy egy mappa nevét viseli, amiben az index.yml fájl található.
Így néz ki például a kérés fájl, amelyet a fentiekben áttekintettünk:

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

Ahogy látja, minden világos. Ha szükséges, ez a formátum kényelmesen szerkeszthető kézzel is.

A fájlrendszer mappa hierarchiája teljesen tükrözi a projekt csomópontjainak hierarchiáját. Például egy forgatókönyv típusa:

TestMace — egy erőteljes IDE API munkához

A fájlrendszerben a következő struktúrával mappolódik (csak a mappa hierarchiája látható, de a lényeg világos)

TestMace — egy erőteljes IDE API munkához

Ez megkönnyíti a projekt áttekintési folyamatát.

Importálás Postmanből

Miután elolvasta a fenti információkat, néhány felhasználó szeretné kipróbálni (ugye?), egy új terméket, vagy (ki tudja?) teljesen alkalmazni azt a projektjében. Azonban a migrációt sok meglévő adat a Postman-ben megállíthatja. Az ilyen esetekre a TestMace támogatja a Postman-ból való gyűjtemények importálását. Jelenleg csak teszt nélküli importálás lehetséges, azonban a jövőben nem zárjuk ki a tesztek támogatását sem.

Tervek

Remélem, hogy sokaknak, akik eddig eljutottak, tetszik a termékünk. Azonban ez még nem minden! A termék fejlesztése teljes sebességgel zajlik, és itt van néhány funkció, amelyet hamarosan hozzá tervezünk adni.

Felhőalapú szinkronizálás

Ez az egyik legkeresettebb funkció. Jelenleg verziókezelő rendszereket ajánlunk a szinkronizáláshoz, ezért is tesszük a formát barátságosabbá az ilyen típusú tárolás számára. Azonban nem mindenki számára megfelelő ez a munkafolyamat, ezért tervezzük, hogy hagyományosabb szinkronizálási mechanizmust adunk hozzá a szervereinken keresztül.

CLI

Ahogyan már említettük, az IDE szintű termékek nem nélkülözhetik a különféle integrációkat a már létező alkalmazásokkal vagy munkafolyamatokkal. A CLI éppen szükséges a TestMace-ben írt tesztek integrálásához a folyamatos integrációs folyamatba. A CLI fejlesztése teljes gőzzel zajlik, a korai verziókban egyszerű konzolos jelentéssel lehet majd indítani a projektet. Később a JUnit formátumban történő jelentéskiadás is tervezett.

Plugin rendszer

Mindezek ellenére eszközünk hatalma láttán a megoldást igénylő esetek száma végtelen. Végül is vannak feladatok, amelyek egy adott projektre specifikusak. Ezért a jövőben SDK-t tervezünk a pluginok fejlesztéséhez, így minden fejlesztő szabadon hozzáadhat funkciókat saját ízlése szerint.

Nódok típusainak bővítése

Ez a nód készlet nem fedi le az összes felhasználói igényt. A tervezett nódok a következők:

  • Script nód — adatok átalakítása és elhelyezése js és a megfelelő API használatával. Ezzel a nód típussal olyan dolgokat lehet csinálni, mint a pre-request és post-request skriptek a Postman-ben.
  • GraphQL nód — GraphQL támogatás
  • Egyedi állítmány nód — lehetővé teszi a meglévő állítmányok bővítését a projektben.
    Természetesen ez nem a végleges lista, folyamatosan bővülni fog, beleértve a ti visszajelzéseiteket is.

GYIK

Miben különböztök meg a Postman-től?

  1. Olyan nód koncepció, amely lehetővé teszi a projekt funkcionalitásának szinte végtelen skálázását.
  2. Ember által olvasható formátum, amely lehetővé teszi a fájlrendszerben történő tárolást, ezzel megkönnyítve a verziókezelő rendszerek használatát.
  3. Tesztelés létrehozásának lehetősége programozás nélkül, és fejlettebb js támogatás a tesztelő szerkesztőben (automatikus kitöltés, statikus elemzés).
  4. Fejlett automatikus kiegészítés és a változók aktuális értékeinek kiemelése

Ez egy nyílt forráskódú termék?

Nem, jelenleg a forráskód zárva van, de a jövőben fontolóra vesszük a forráskód nyilvánossá tételét.

Miből éltek?)

A díjmentes verzió mellett tervezzük egy fizetős verzió kiadását is. Ez elsősorban a szerveroldali funkciókat fogja tartalmazni, például a szinkronizálást.

Zárás

Projektünk gyors léptekkel halad a stabil kiadás felé. Jelenleg is használható a termék, és a korai felhasználók pozitív visszajelzései ezt bizonyítják. Aktívan gyűjtjük a visszajelzéseket, hiszen szoros együttműködés nélkül a közösséggel nem lehet jó eszközt kialakítani. Itt találhatsz minket:

Hivatalos weboldal

Telegram

Slack

Facebook

Issue tracker

Türelmetlenül várjuk kívánságaikat és javaslataikat!

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster