TestMace – egy hatékony IDE az API-kkal való munkához

Sziasztok! Ma szeretnénk bemutatni az IT-közönségnek termékünket - egy IDE-t az API-kkal való munkához TestMace. Talán néhányan már tudnak rólunk korábbi cikkek. Az eszközről azonban nem készült átfogó felülvizsgálat, ezért orvosoljuk ezt a sajnálatos hiányosságot.

TestMace – egy hatékony IDE az API-kkal való munkához

motiváció

Szeretném azzal kezdeni, hogy valójában hogyan jutottunk el ebbe az életbe, és úgy döntöttünk, hogy létrehozzuk saját eszközünket az API-val végzett haladó munkához. Kezdjük azoknak a funkcióknak a listájával, amelyekkel egy terméknek rendelkeznie kell, és amelyről véleményünk szerint azt mondhatjuk, hogy „IDE az API-kkal való munkavégzéshez”:

  • Lekérdezések és szkriptek (lekérdezési sorozatok) létrehozása és végrehajtása
  • Különféle tesztek írása
  • Tesztgeneráció
  • API-leírások kezelése, beleértve az importálást olyan formátumokból, mint a Swagger, OpenAPI, WADL stb.
  • Gúnyos kérések
  • Jó támogatás egy vagy több nyelvhez a szkriptek írásához, beleértve a népszerű könyvtárakkal való integrációt
  • stb

A lista ízlés szerint bővíthető. Ezenkívül fontos, hogy ne csak magát az IDE-t hozzuk létre, hanem egy bizonyos infrastruktúrát is, például felhőszinkronizálást, parancssori eszközöket, online megfigyelő szolgáltatást stb. Az elmúlt évek trendjei végül is nemcsak az alkalmazás erőteljes funkcionalitását, hanem kellemes felületét is megszabják számunkra.

Kinek kell egy ilyen eszköz? Nyilvánvalóan mindazok, akik legalább valamilyen módon kapcsolatban állnak az API-k fejlesztésével és tesztelésével, fejlesztők és tesztelők =). Sőt, ha az előbbiek számára gyakran elegendő egyetlen lekérdezés és egyszerű szkriptek végrehajtása, akkor a tesztelők számára ez az egyik fő eszköz, amelynek többek között tartalmaznia kell egy hatékony tesztírási mechanizmust, amely képes futtatni azokat CI.

Ezért ezeket az irányelveket követve megkezdtük termékünk megalkotását. Lássuk, mit értünk el ebben a szakaszban.

Gyors kezdés

Kezdjük az alkalmazás első megismerésével. Letöltheti weboldalunkon. Jelenleg mind a 3 fő platform támogatott - Windows, Linux, MacOS. Letöltés, telepítés, indítás. Amikor először indítja el, a következő ablakot láthatja:

TestMace – egy hatékony IDE az API-kkal való munkához

Kattintson a plusz jelre a tartalomterület tetején az első kérés létrehozásához. A lekérdezés lap így néz ki:

TestMace – egy hatékony IDE az API-kkal való munkához

Nézzük meg részletesebben. A kérési felület nagyon hasonlít a népszerű pihenőkliensek felületéhez, ami megkönnyíti a hasonló eszközökről való átállást. Tegyük meg az első kérést az url-hez https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace – egy hatékony IDE az API-kkal való munkához

Általánosságban elmondható, hogy első pillantásra a válaszpanel sem okoz meglepetéseket. Néhány pontra azonban szeretném felhívni a figyelmet:

  1. A válasz törzse egy fa formájában jelenik meg, amely egyrészt információtartalmat ad hozzá, másrészt lehetővé teszi néhány érdekes funkció hozzáadását, amelyekről alább
  2. Van egy Állítások lap, amely egy adott kérés tesztjeinek listáját jeleníti meg

Amint látja, eszközünk kényelmes pihenő kliensként használható. Azonban nem tartanánk itt, ha a képességei csak kérések küldésére korlátozódnának. Ezután felvázolom a TestMace alapfogalmait és funkcióit.

Alapfogalmak és jellemzők

csomópont

A TestMace funkcionalitása különböző típusú csomópontokra oszlik. A fenti példában bemutattuk a RequestStep csomópont működését. Mostantól azonban a következő típusú csomópontok is elérhetők az alkalmazásban:

  • RequestStep. Ez az a csomópont, amelyen keresztül kérést hozhat létre. Csak egy érvényesítési csomópont lehet gyermek eleme.
  • Állítás. A csomópont tesztek írására szolgál. Csak a RequestStep csomópont gyermekcsomópontja lehet.
  • Mappa. Lehetővé teszi a Mappa és a RequestStep csomópontok csoportosítását magukon belül.
  • Projekt. Ez a gyökércsomópont, amely automatikusan jön létre a projekt létrehozásakor. Ellenkező esetben megismétli a Mappa csomópont funkcióit.
  • Link. Hivatkozás a Mappa vagy a RequestStep csomóponthoz. Lehetővé teszi a lekérdezések és szkriptek újrafelhasználását.
  • stb

A csomópontok karcokban (bal alsó panel, „egyszeri” lekérdezések gyors létrehozására szolgáló panel) és projektekben (a bal felső sarokban lévő panel) találhatók, amelyeken még részletesebben kitérünk.

Terv

Amikor elindítja az alkalmazást, észrevehet egy magányos Project sort a bal felső sarokban. Ez a projektfa gyökere. Amikor elindít egy projektet, egy ideiglenes projekt jön létre, amelynek elérési útja az operációs rendszertől függ. A projektet bármikor áthelyezheti az Ön számára megfelelő helyre.

A projekt fő célja az, hogy a fejlesztéseket a fájlrendszerben elmentse, és verziókezelő rendszereken keresztül tovább szinkronizálja, szkripteket futtasson CI-ben, áttekintse a változtatásokat stb.

Változók

A változók az alkalmazások egyik kulcsmechanizmusa. Azok, akik olyan eszközökkel dolgoznak, mint a TestMace, már sejthetik, miről beszélünk. Tehát a változók a közös adatok tárolásának és a csomópontok közötti kommunikációnak a módjai. Egy analóg például a Postman vagy az Insomnia környezeti változói. Mi azonban tovább mentünk és továbbfejlesztettük a témát. A TestMace-ben a változók csomóponti szinten állíthatók be. Bármi. Létezik egy olyan mechanizmus is, amely a változókat az ősöktől örököli, a leszármazottakban pedig átfedő változókat. Ezen kívül számos beépített változó létezik, a beépített változók neve ezzel kezdődik $. Íme néhány közülük:

  • $prevStep — hivatkozás az előző csomópont változóira
  • $nextStep — hivatkozás a következő csomópont változóira
  • $parent - ugyanaz, de csak az ősnek
  • $response - válasz a szervertől
  • $env - aktuális környezeti változók
  • $dynamicVar - szkript vagy lekérdezés végrehajtása során létrehozott dinamikus változók

$env - ezek lényegében szokásos Project csomóponti szintű változók, azonban a környezeti változók halmaza a kiválasztott környezettől függően változik.

A változó a következőn keresztül érhető el ${variable_name}
Egy változó értéke lehet egy másik változó, vagy akár egy teljes kifejezés is. Például az url változó lehet olyan kifejezés, mint
http://${host}:${port}/${endpoint}.

Külön érdemes megjegyezni a változók hozzárendelésének lehetőségét a szkript végrehajtása során. Például gyakran el kell menteni a sikeres bejelentkezés után a szerverről érkező jogosultsági adatokat (egy tokent vagy a teljes fejlécet). A TestMace lehetővé teszi, hogy ezeket az adatokat az egyik ős dinamikus változóiba mentse. A már meglévő „statikus” változókkal való ütközések elkerülése érdekében a dinamikus változókat külön objektumban helyezzük el. $dynamicVar.

Forgatókönyvek

A fenti szolgáltatások mindegyikével teljes lekérdezési szkripteket futtathat. Például egy entitás létrehozása -> entitás lekérdezése -> entitás törlése. Ebben az esetben például használhatja a Mappa csomópontot több RequestStep csomópont csoportosítására.

Automatikus kiegészítés és kifejezéskiemelés

A változókkal való kényelmes munkavégzéshez (és nem csak) az automatikus kiegészítésre van szükség. És természetesen egy kifejezés értékének kiemelése, hogy könnyebben és kényelmesebben tisztázzuk, hogy egy adott változó mivel egyenlő. Pontosan ez a helyzet, amikor jobb egyszer látni, mint százszor hallani:

TestMace – egy hatékony IDE az API-kkal való munkához

Érdemes megjegyezni, hogy az automatikus kiegészítést nemcsak a változók, hanem például a fejlécek, bizonyos fejlécek értékei (például a Content-Type fejléc automatikus kiegészítése), a protokollok és még sok más esetében is megvalósítják. A lista folyamatosan frissül, ahogy az alkalmazás növekszik.

Visszavonás/újra

A változtatások visszavonása/újrakészítése nagyon kényelmes dolog, de valamiért nem mindenhol implementálva (és az API-kkal való munkavégzéshez szükséges eszközök sem kivételek). De mi nem tartozunk ezek közé!) Az egész projektben megvalósítottuk a visszavonást/újrakészítést, amivel nem csak egy adott csomópont szerkesztését, hanem létrehozását, törlését, mozgatását stb. A legkritikusabb műveletek megerősítést igényelnek.

Tesztek készítése

Az Assertion csomópont felelős a tesztek létrehozásáért. Az egyik fő funkció a tesztek programozás nélküli, beépített szerkesztők segítségével történő létrehozásának lehetősége.

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

  1. Értékek összehasonlítása - egyszerűen összehasonlít 2 értéket. Számos összehasonlító operátor létezik: egyenlő, nem egyenlő, nagyobb, mint, nagyobb vagy egyenlő, kisebb, kisebb vagy egyenlő.

  2. Értéket tartalmaz – ellenőrzi a karakterláncban lévő részkarakterlánc előfordulását.

  3. XPath – ellenőrzi, hogy az XML-ben lévő választó tartalmaz-e egy bizonyos értéket.

  4. A JavaScript állítás egy tetszőleges JavaScript-szkript, amely siker esetén igaz, kudarc esetén hamis értéket ad vissza.

Megjegyzem, csak az utolsó igényel programozási ismereteket a felhasználótól, a másik 3 állítás grafikus felületen jön létre. Így néz ki például az értékek összehasonlítására vonatkozó állítás létrehozására szolgáló párbeszédpanel:

TestMace – egy hatékony IDE az API-kkal való munkához

A hab a tortán az állítások gyors létrehozása válaszokból, nézd csak meg!

TestMace – egy hatékony IDE az API-kkal való munkához

Az ilyen állításoknak azonban nyilvánvaló korlátai vannak, amelyek leküzdésére érdemes JavaScript-állítást használni. És itt a TestMace is kényelmes környezetet biztosít automatikus kiegészítéssel, szintaktikai kiemeléssel és még statikus elemzővel is.

API leírás

A TestMace nem csak az API használatát teszi lehetővé, hanem dokumentálni is. Ráadásul maga a leírás is hierarchikus felépítésű, és szervesen illeszkedik a projekt többi részéhez. Ezenkívül jelenleg lehetőség van API-leírások importálására Swagger 2.0 / OpenAPI 3.0 formátumokból. Maga a leírás nem csak önsúlyt jelent, hanem szorosan integrálódik a projekt többi részével, különösen elérhető az URL-ek automatikus kiegészítése, a HTTP-fejlécek, a lekérdezési paraméterek stb., és a jövőben tervezzük tesztek hozzáadását hogy a válasz megfeleljen az API leírásának.

Megosztási csomópont

Eset: problémás kérést vagy akár egy teljes szkriptet szeretne megosztani egy kollégájával, vagy egyszerűen csak csatolni szeretné egy hibához. A TestMace ezt az esetet is lefedi: az alkalmazás lehetővé teszi az URL bármely csomópontjának, sőt részfájának szerializálását. Másolás-beillesztés, és könnyedén átviheti a kérést egy másik gépre vagy projektre.

Ember által olvasható projekttárolási formátum

Jelenleg minden csomópont külön fájlban van tárolva yml kiterjesztéssel (mint az Assertion node esetében), vagy egy mappában, amelyben a csomópont neve és az index.yml fájl található.
Így néz ki például az a kérésfájl, amelyet a fenti áttekintésben készítettü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

Amint látja, minden nagyon világos. Ha szükséges, ez a formátum egyszerűen szerkeszthető manuálisan.

A fájlrendszer mappáinak hierarchiája teljes mértékben megismétli a projekt csomópontjainak hierarchiáját. Például egy szkript, mint:

TestMace – egy hatékony IDE az API-kkal való munkához

A fájlrendszert leképezi a következő szerkezetre (csak a mappahierarchia látható, de a lényeg világos)

TestMace – egy hatékony IDE az API-kkal való munkához

Ez megkönnyíti a projekt felülvizsgálati folyamatát.

Import a Postmanból

A fentiek elolvasása után néhány felhasználó ki akar majd próbálni (ugye?) egy új terméket, vagy (mi a fene nem viccel!) teljesen felhasználni azt a projektjében. A migrációt azonban megállíthatja egyazon Postás nagyszámú fejlesztése. Ilyen esetekben a TestMace támogatja a gyűjtemények importálását a Postman szolgáltatásból. Jelenleg a tesztek nélküli importálás támogatott, de nem zárjuk ki, hogy a jövőben is támogatjuk.

Tervek

Remélem, hogy azok közül, akik eddig olvastak, sokaknak tetszett termékünk. Ez azonban még nem minden! A terméken való munka javában zajlik, és itt van néhány olyan funkció, amelyet hamarosan szeretnénk hozzáadni.

Felhő szinkronizálás

Az egyik legkeresettebb funkció. Jelenleg a szinkronizáláshoz verzióvezérlő rendszerek használatát javasoljuk, melynek formátumát barátságosabbá tesszük az ilyen típusú tárolók számára. Ez a munkafolyamat azonban nem mindenki számára megfelelő, ezért a szervereinken keresztül sokak számára ismert szinkronizálási mechanizmust tervezünk hozzáadni.

CLI

Mint fentebb említettük, az IDE-szintű termékek nem nélkülözhetik a meglévő alkalmazásokkal vagy munkafolyamatokkal való mindenféle integrációt. A CLI pontosan az, amire szükség van a TestMace-ben írt tesztek integrálásához a folyamatos integrációs folyamatba. A CLI-n való munka gőzerővel folyik, a korai verziók egyszerű konzoljelentéssel indítják el a projektet. A jövőben azt tervezzük, hogy hozzáadjuk a jelentéskimenetet JUnit formátumban.

Plugin rendszer

Eszközünk minden ereje ellenére a megoldást igénylő esetek köre határtalan. Végül is vannak olyan feladatok, amelyek egy adott projektre vonatkoznak. Éppen ezért a jövőben azt tervezzük, hogy hozzáadunk egy SDK-t a bővítmények fejlesztéséhez, és minden fejlesztő tetszés szerint bővítheti majd a funkciókat.

A csomóponttípusok körének bővítése

Ez a csomópontkészlet nem fedi le a felhasználó által igényelt összes esetet. Hozzáadásra tervezett csomópontok:

  • Script csomópont – konvertálja és helyezi el az adatokat a js és a megfelelő API használatával. Az ilyen típusú csomópontok használatával például előzetes és kérés utáni parancsfájlokat hajthat végre a Postmanben.
  • GraphQL csomópont - graphql támogatás
  • Egyéni érvényesítési csomópont – lehetővé teszi a projektben meglévő állítások készletének bővítését
    Természetesen ez nem egy végleges lista, folyamatosan frissülni fog, többek között az Ön visszajelzései miatt.

FAQ

Miben különbözsz a Postástól?

  1. A csomópontok koncepciója, amely lehetővé teszi a projekt funkcionalitásának szinte végtelen méretezését
  2. Ember által olvasható projektformátum fájlrendszerbe mentéssel, ami leegyszerűsíti a verziókezelő rendszerekkel végzett munkát
  3. Lehetőség tesztek létrehozására programozás nélkül és fejlettebb js támogatás a tesztszerkesztőben (automatikus kiegészítés, statikus elemző)
  4. Speciális automatikus kiegészítés és a változók aktuális értékének kiemelése

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

Nem, jelenleg a források zárva vannak, de a jövőben mérlegeljük a források megnyitásának lehetőségét

miből élsz?)

Az ingyenes verzió mellett a termék fizetős verziójának kiadását is tervezzük. Elsősorban olyan dolgokat fog tartalmazni, amelyek szerveroldalt igényelnek, például a szinkronizálást.

Következtetés

Projektünk ugrásszerűen halad a stabil megjelenés felé. A termék azonban már használható, és korai felhasználóink ​​pozitív visszajelzései is ezt igazolják. Aktívan gyűjtjük a visszajelzéseket, mert a közösséggel való szoros együttműködés nélkül lehetetlen jó eszközt felépíteni. Itt találsz meg minket:

Hivatalos oldal

Telegram

Laza

Facebook

Problémakövető

Várjuk kívánságaitokat, javaslataitokat!

Forrás: will.com

Hozzászólás