TestMace - zmogljiv IDE za delo z API-ji

Pozdravljeni vsi skupaj! Danes želimo IT javnosti predstaviti naš izdelek - IDE za delo z API-ji TestMace. Morda nekateri že veste za nas iz prejšnji članki. Vendar pa ni bilo celovitega pregleda orodja, zato obravnavamo to žalostno pomanjkljivost.

TestMace - zmogljiv IDE za delo z API-ji

Motivacija

Začel bi rad s tem, kako smo pravzaprav prišli do tega življenja in se odločili ustvariti lastno orodje za napredno delo z API-jem. Začnimo s seznamom funkcionalnosti, ki bi jih moral imeti izdelek, za katerega po našem mnenju lahko rečemo, da je "IDE za delo z API-ji":

  • Ustvarjanje in izvajanje poizvedb in skript (zaporedij poizvedb)
  • Pisanje različnih testov
  • Testna generacija
  • Delo z opisi API-jev, vključno z uvozom iz formatov, kot so Swagger, OpenAPI, WADL itd.
  • Posmehljive zahteve
  • Dobra podpora za enega ali več jezikov za pisanje skriptov, vključno z integracijo s priljubljenimi knjižnicami
  • itd

Seznam lahko razširite po svojem okusu. Poleg tega je pomembno ustvariti ne le sam IDE, ampak tudi določeno infrastrukturo, kot je sinhronizacija v oblaku, orodja ukazne vrstice, spletna storitev spremljanja itd. Navsezadnje nam trendi zadnjih let narekujejo ne le zmogljivo funkcionalnost aplikacije, ampak tudi njen prijeten vmesnik.

Kdo potrebuje takšno orodje? Očitno so vsi tisti, ki so vsaj nekako povezani z razvojem in testiranjem API-jev, razvijalci in preizkuševalci =). Poleg tega, če je za prve pogosto dovolj, da izvajajo posamezne poizvedbe in preproste skripte, potem je za preizkuševalce to eno glavnih orodij, ki naj bi med drugim vključevalo zmogljiv mehanizem za pisanje testov z možnostjo izvajanja v CI.

Tako smo po teh smernicah začeli ustvarjati naš izdelek. Poglejmo, kaj smo dosegli na tej stopnji.

Hiter začetek

Začnimo s prvim seznanjanjem z aplikacijo. Lahko ga prenesete na naši spletni strani. Trenutno so podprte vse 3 glavne platforme - Windows, Linux, MacOS. Prenesite, namestite, zaženite. Ko ga zaženete prvič, boste morda videli naslednje okno:

TestMace - zmogljiv IDE za delo z API-ji

Kliknite znak plus na vrhu območja z vsebino, da ustvarite svojo prvo zahtevo. Zavihek poizvedbe izgleda takole:

TestMace - zmogljiv IDE za delo z API-ji

Oglejmo si ga podrobneje. Vmesnik zahtev je zelo podoben vmesniku priljubljenih odjemalcev rest, kar olajša selitev s podobnih orodij. Naredimo prvo zahtevo na url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - zmogljiv IDE za delo z API-ji

Na splošno odzivna plošča na prvi pogled tudi ne povzroča presenečenj. Vendar bi vas rad opozoril na nekaj točk:

  1. Telo odgovora je predstavljeno v obliki drevesa, ki najprej doda informacijsko vsebino in drugič vam omogoča, da dodate nekaj zanimivih funkcij, o katerih spodaj
  2. Obstaja zavihek Trditve, ki prikazuje seznam testov za dano zahtevo

Kot lahko vidite, je naše orodje mogoče uporabiti kot priročen odjemalec za počitek. Vendar nas ne bi bilo, če bi bile njegove zmogljivosti omejene le na pošiljanje zahtev. Nato bom opisal osnovne koncepte in funkcionalnost TestMace.

Osnovni pojmi in funkcije

Vozlišče

Funkcionalnost TestMace je razdeljena na različne vrste vozlišč. V zgornjem primeru smo prikazali delovanje vozlišča RequestStep. Vendar pa so zdaj v aplikaciji na voljo tudi naslednje vrste vozlišč:

  • RequestStep. To je vozlišče, prek katerega lahko ustvarite zahtevo. Lahko ima samo eno vozlišče Assertion kot podrejeni element.
  • Trditev. Vozlišče se uporablja za pisanje testov. Lahko je samo podrejeno vozlišče vozlišča RequestStep.
  • Mapa. Omogoča združevanje vozlišč Folder in RequestStep znotraj samih sebe.
  • Projekt. To je korensko vozlišče, ustvarjeno samodejno, ko je projekt ustvarjen. V nasprotnem primeru ponovi funkcionalnost vozlišča Folder.
  • Povezava. Povezava do vozlišča Folder ali RequestStep. Omogoča ponovno uporabo poizvedb in skriptov.
  • itd

Vozlišča se nahajajo v praskah (plošča spodaj levo, ki se uporablja za hitro ustvarjanje "enkratnih" poizvedb) in v projektih (plošča zgoraj levo), o katerih se bomo podrobneje posvetili.

Projekt

Ko zaženete aplikacijo, boste v zgornjem levem kotu morda opazili eno vrstico Project. To je koren drevesa projekta. Ko zaženete projekt, se ustvari začasni projekt, pot do katerega je odvisna od vašega operacijskega sistema. Kadar koli lahko projekt premaknete na mesto, ki vam ustreza.

Glavni namen projekta je možnost shranjevanja razvoja v datotečnem sistemu in nadaljnje sinhronizacije prek sistemov za nadzor različic, izvajanje skriptov v CI, pregledovanje sprememb itd.

Spremenljivke

Spremenljivke so eden ključnih mehanizmov aplikacije. Tisti, ki delate z orodji, kot je TestMace, morda že veste, o čem govorimo. Spremenljivke so torej način za shranjevanje skupnih podatkov in komunikacijo med vozlišči. Analog so na primer spremenljivke okolja v Postman ali Insomnia. Vendar smo šli dlje in temo razvili. V TestMace lahko spremenljivke nastavite na ravni vozlišča. Kaj. Obstaja tudi mehanizem za dedovanje spremenljivk od prednikov in prekrivanje spremenljivk pri potomcih. Poleg tega obstajajo številne vgrajene spremenljivke, imena vgrajenih spremenljivk se začnejo z $. Tu je nekaj takih:

  • $prevStep — povezava do spremenljivk prejšnjega vozlišča
  • $nextStep — povezava do spremenljivk naslednjega vozlišča
  • $parent - ista stvar, vendar samo za prednika
  • $response - odgovor strežnika
  • $env - trenutne spremenljivke okolja
  • $dynamicVar - dinamične spremenljivke, ustvarjene med izvajanjem skripta ali poizvedbe

$env - to so v bistvu navadne spremenljivke na ravni vozlišča projekta, vendar se nabor spremenljivk okolja spreminja glede na izbrano okolje.

Do spremenljivke dostopate prek ${variable_name}
Vrednost spremenljivke je lahko druga spremenljivka ali celo celoten izraz. Na primer, spremenljivka url je lahko izraz, kot je
http://${host}:${port}/${endpoint}.

Ločeno je treba omeniti možnost dodeljevanja spremenljivk med izvajanjem skripta. Na primer, pogosto je treba shraniti avtorizacijske podatke (žeton ali celotno glavo), ki so prišli s strežnika po uspešni prijavi. TestMace omogoča shranjevanje takih podatkov v dinamične spremenljivke enega od prednikov. Da bi se izognili kolizijam z že obstoječimi "statičnimi" spremenljivkami, so dinamične spremenljivke postavljene v ločen objekt $dynamicVar.

Scenariji

Z uporabo vseh zgornjih funkcij lahko izvajate celotne skripte poizvedb. Na primer, ustvarjanje entitete -> povpraševanje po entiteti -> brisanje entitete. V tem primeru lahko na primer uporabite vozlišče Folder za združevanje več vozlišč RequestStep.

Samodokončanje in označevanje izrazov

Za priročno delo s spremenljivkami (in ne samo) je potrebno samodejno dokončanje. In seveda poudarjanje vrednosti izraza, da je lažje in bolj priročno razjasniti, čemu je določena spremenljivka enaka. To je ravno tisti primer, ko je bolje videti enkrat kot slišati stokrat:

TestMace - zmogljiv IDE za delo z API-ji

Omeniti velja, da se samodokončanje izvaja ne samo za spremenljivke, ampak tudi na primer za glave, vrednosti določenih glav (na primer samodokončanje za glavo Content-Type), protokole in še veliko več. Seznam se stalno posodablja, ko aplikacija raste.

Razveljavi/ponovi

Razveljavitev / ponavljanje sprememb je zelo priročna stvar, vendar iz neznanega razloga ni implementirana povsod (in orodja za delo z API-ji niso izjema). Ampak mi nismo eni izmed teh!) Implementirali smo razveljavitev/ponovitev skozi celoten projekt, ki vam omogoča, da razveljavite ne le urejanje določenega vozlišča, ampak tudi njegovo ustvarjanje, brisanje, premikanje itd. Najbolj kritične operacije zahtevajo potrditev.

Ustvarjanje testov

Vozlišče Assertion je odgovorno za ustvarjanje testov. Ena od glavnih funkcij je možnost ustvarjanja testov brez programiranja z uporabo vgrajenih urejevalnikov.

Vozlišče trditve je sestavljeno iz niza trditev. Vsaka trditev ima svojo vrsto, trenutno obstaja več vrst trditev

  1. Primerjajte vrednosti - preprosto primerja 2 vrednosti. Obstaja več primerjalnih operatorjev: enako, ni enako, večje od, večje ali enako, manjše od, manjše ali enako.

  2. Vsebuje vrednost - preveri pojavljanje podniza v nizu.

  3. XPath - preveri, ali izbirnik v XML vsebuje določeno vrednost.

  4. Trditev JavaScript je poljuben skript javascript, ki vrne true v primeru uspeha in false v primeru neuspeha.

Opažam, da le zadnja od uporabnika zahteva veščine programiranja, ostale 3 trditve so ustvarjene z grafičnim vmesnikom. Tukaj je na primer videti pogovorno okno za ustvarjanje trditve o primerjanju vrednosti:

TestMace - zmogljiv IDE za delo z API-ji

Češnja na torti je hitro ustvarjanje trditev iz odgovorov, samo poglejte ga!

TestMace - zmogljiv IDE za delo z API-ji

Vendar imajo takšne trditve očitne omejitve, ki jih boste morda želeli premagati s trditvijo javascript. In tukaj TestMace nudi tudi udobno okolje s samodokončanjem, označevanjem sintakse in celo statičnim analizatorjem.

Opis API-ja

TestMace vam omogoča ne samo uporabo API-ja, ampak tudi njegovo dokumentiranje. Poleg tega ima sam opis tudi hierarhično strukturo in se organsko prilega preostalemu delu projekta. Poleg tega je trenutno mogoče uvoziti opise API-jev iz formatov Swagger 2.0 / OpenAPI 3.0. Sam opis ni le mrtva breme, ampak je tesno povezan s preostalim delom projekta, zlasti je na voljo samodejno dokončanje URL-jev, glav HTTP, parametrov poizvedbe itd., v prihodnosti pa načrtujemo dodajanje testov za skladnost odgovora z opisom API-ja.

Vozlišče skupne rabe

Primer: želite deliti problematično zahtevo ali celo celoten skript s kolegom ali pa ga preprosto priložiti hrošču. TestMace pokriva tudi ta primer: aplikacija vam omogoča serializacijo katerega koli vozlišča in celo poddrevesa v URL-ju. Kopiraj-prilepi in zahtevo lahko preprosto preneseš na drug stroj ali projekt.

Človeku berljiv format za shranjevanje projektov

Trenutno je vsako vozlišče shranjeno v ločeni datoteki s pripono yml (kot velja za vozlišče Assertion) ali v mapi z imenom vozlišča in datoteko index.yml v njej.
Takole je na primer videti datoteka z zahtevo, ki smo jo naredili v zgornjem pregledu:

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

Kot lahko vidite, je vse zelo jasno. Če želite, lahko to obliko enostavno ročno uredite.

Hierarhija map v datotečnem sistemu popolnoma ponavlja hierarhijo vozlišč v projektu. Na primer skript, kot je:

TestMace - zmogljiv IDE za delo z API-ji

Preslika datotečni sistem v naslednjo strukturo (prikazana je samo hierarhija map, vendar je bistvo jasno)

TestMace - zmogljiv IDE za delo z API-ji

To olajša postopek pregleda projekta.

Uvoz iz Poštarja

Ko bodo prebrali vse zgoraj našteto, bodo nekateri uporabniki želeli preizkusiti (kajne?) nov izdelek ali (kar za vraga se ne heca!) popolnoma uporabiti v svojem projektu. Vendar lahko selitev ustavi veliko število dogodkov v istem Postmanu. Za takšne primere TestMace podpira uvoz zbirk iz Postmana. Trenutno je podprt uvoz brez testov, vendar ne izključujemo podpore v prihodnosti.

Načrti

Upam, da je mnogim od tistih, ki so brali do te točke, všeč naš izdelek. Vendar to še ni vse! Delo na izdelku je v polnem teku in tukaj je nekaj funkcij, ki jih nameravamo dodati kmalu.

Облачная sinhronизация

Ena najbolj zahtevanih funkcij. Trenutno za sinhronizacijo predlagamo uporabo sistemov za nadzor različic, za katere naredimo format bolj prijazen za tovrstno shranjevanje. Vendar ta potek dela ni primeren za vsakogar, zato nameravamo dodati sinhronizacijski mehanizem, ki ga mnogi poznajo prek naših strežnikov.

CLI

Kot je navedeno zgoraj, izdelki na ravni IDE ne morejo brez vseh vrst integracij z obstoječimi aplikacijami ali poteki dela. CLI je natanko tisto, kar je potrebno za integracijo testov, napisanih v TestMace, v stalen integracijski proces. Delo na CLI je v polnem teku; zgodnje različice bodo zagnale projekt s preprostim poročilom konzole. V prihodnosti nameravamo dodati izpis poročila v formatu JUnit.

Sistem vtičnikov

Kljub vsej moči našega orodja je nabor primerov, ki zahtevajo rešitve, neomejen. Navsezadnje obstajajo naloge, ki so specifične za določen projekt. Zato nameravamo v prihodnosti dodati SDK za razvoj vtičnikov in vsak razvijalec bo lahko dodal funkcionalnost po svojih željah.

Razširitev obsega vrst vozlišč

Ta niz vozlišč ne pokriva vseh primerov, ki jih zahteva uporabnik. Vozlišča, ki jih nameravate dodati:

  • Skriptno vozlišče - pretvori in postavi podatke z uporabo js in ustreznega API-ja. S to vrsto vozlišča lahko izvajate stvari, kot so skripti pred zahtevo in po zahtevi v Postmanu.
  • Vozlišče GraphQL - podpora za graphql
  • Vozlišče trditve po meri – vam bo omogočilo razširitev nabora obstoječih trditev v projektu
    Seveda to ni končni seznam, ampak se bo nenehno dopolnjeval zaradi, med drugim, vaših povratnih informacij.

FAQ

Kako se razlikuješ od Poštarja?

  1. Koncept vozlišč, ki omogoča skoraj neskončno skaliranje funkcionalnosti projekta
  2. Človeku berljiva oblika projekta s shranjevanjem v datotečni sistem, kar poenostavi delo z uporabo sistemov za nadzor različic
  3. Možnost ustvarjanja testov brez programiranja in naprednejša podpora js v urejevalniku testov (samodejno dokončanje, statični analizator)
  4. Napredno samodokončanje in označevanje trenutne vrednosti spremenljivk

Ali je to odprtokodni izdelek?

Ne, trenutno so viri zaprti, v prihodnosti pa razmišljamo o možnosti odprtja virov

Od česa živiš?)

Skupaj z brezplačno različico načrtujemo izdajo plačljive različice izdelka. Vključeval bo predvsem stvari, ki zahtevajo strežniško stran, na primer sinhronizacijo.

Zaključek

Naš projekt se z velikimi koraki premika proti stabilni izdaji. Vendar pa je izdelek že mogoče uporabljati, kar dokazujejo pozitivne povratne informacije naših prvih uporabnikov. Aktivno zbiramo povratne informacije, saj je brez tesnega sodelovanja s skupnostjo nemogoče zgraditi dobro orodje. Najdete nas tukaj:

Uradna spletna stran

Telegram

Slack

Facebook

Sledilnik težav

Veseli bomo vaših želja in predlogov!

Vir: www.habr.com

Dodaj komentar