Sziasztok! Ma szeretnénk bemutatni az IT-közönségnek termékünket - egy IDE-t 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
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:
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
Á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:
- 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
- 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:
É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
-
É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ő.
-
Értéket tartalmaz – ellenőrzi a karakterláncban lévő részkarakterlánc előfordulását.
-
XPath – ellenőrzi, hogy az XML-ben lévő választó tartalmaz-e egy bizonyos értéket.
-
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:
A hab a tortán az állítások gyors létrehozása válaszokból, nézd csak meg!
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:
A fájlrendszert leképezi a következő szerkezetre (csak a mappahierarchia látható, de a lényeg világos)
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?
- A csomópontok koncepciója, amely lehetővé teszi a projekt funkcionalitásának szinte végtelen méretezését
- Ember által olvasható projektformátum fájlrendszerbe mentéssel, ami leegyszerűsíti a verziókezelő rendszerekkel végzett munkát
- 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ő)
- 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:
Várjuk kívánságaitokat, javaslataitokat!
Forrás: will.com