TestMace – võimas IDE API-dega töötamiseks

Tere kõigile! Täna tahame IT-avalikkusele tutvustada oma toodet – IDE-d API-dega töötamiseks TestMace. Võib-olla teavad mõned teist juba meie kohta varasemad artiklid. Tööriista põhjalikku ülevaadet pole aga tehtud, seega käsitleme seda kahetsusväärset puudust.

TestMace – võimas IDE API-dega töötamiseks

Motivatsioon

Tahaksin alustada sellest, kuidas me tegelikult sellesse ellu jõudsime ja otsustasime luua oma tööriista API-ga täiustatud tööks. Alustame funktsioonide loendiga, mis tootel peaks olema ja mille kohta meie arvates võime öelda, et see on "IDE API-dega töötamiseks":

  • Päringute ja skriptide (päringute jada) loomine ja täitmine
  • Erinevate testide kirjutamine
  • Testpõlvkond
  • API kirjeldustega töötamine, sealhulgas importimine sellistest vormingutest nagu Swagger, OpenAPI, WADL jne.
  • Pilkavad taotlused
  • Hea tugi ühe või mitme keele jaoks skriptide kirjutamiseks, sealhulgas integreerimiseks populaarsete raamatukogudega
  • jne

Nimekirja saab oma maitse järgi täiendada. Lisaks on oluline luua mitte ainult IDE ise, vaid ka teatud infrastruktuur, näiteks pilvesünkroonimine, käsurea tööriistad, võrguseire teenus jne. Lõpuks dikteerivad viimaste aastate suundumused meile mitte ainult rakenduse võimsa funktsionaalsuse, vaid ka selle meeldiva liidese.

Kellele sellist tööriista vaja on? Ilmselgelt on kõik need, kes on API-de arendamise ja testimisega vähemalt kuidagi seotud, arendajad ja testijad =). Veelgi enam, kui esimeste jaoks piisab sageli üksikute päringute ja lihtsate skriptide täitmisest, siis testijate jaoks on see üks peamisi tööriistu, mis muu hulgas peaks sisaldama võimsat mehhanismi testide kirjutamiseks koos võimalusega neid käivitada. CI.

Järgides neid juhiseid, hakkasime oma toodet looma. Vaatame, mida oleme selles etapis saavutanud.

Kiire algus

Alustame rakendusega esmatutvusest. Saate selle alla laadida meie veebisaidil. Hetkel on toetatud kõik 3 suuremat platvormi – Windows, Linux, MacOS. Laadige alla, installige, käivitage. Kui käivitate selle esimest korda, võite näha järgmist akent:

TestMace – võimas IDE API-dega töötamiseks

Esimese taotluse loomiseks klõpsake sisuala ülaosas plussmärki. Päringu vahekaart näeb välja selline:

TestMace – võimas IDE API-dega töötamiseks

Vaatame seda üksikasjalikumalt. Päringu liides on väga sarnane populaarsete puhkeklientide liidesega, mis muudab sarnastelt tööriistadelt migratsiooni lihtsamaks. Esitame esimese päringu URL-ile https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace – võimas IDE API-dega töötamiseks

Üldiselt esmapilgul ka vastuspaneel üllatusi ei paku. Siiski tahaksin juhtida teie tähelepanu mõnele punktile:

  1. Vastuse keha on kujutatud puu kujul, mis esiteks lisab infosisu ja teiseks võimaldab lisada mõned huvitavad funktsioonid, mille kohta allpool
  2. Seal on vahekaart Assertions, mis kuvab antud päringu testide loendi

Nagu näete, saab meie tööriista kasutada mugava puhkekliendina. Kuid me poleks siin, kui selle võimalused piirduks ainult päringute saatmisega. Järgmisena kirjeldan TestMace'i põhikontseptsioone ja funktsioone.

Põhikontseptsioonid ja funktsioonid

Sõlme

TestMace'i funktsionaalsus on jagatud erinevat tüüpi sõlmedeks. Ülaltoodud näites demonstreerisime sõlme RequestStep tööd. Kuid rakenduses on nüüd saadaval ka järgmist tüüpi sõlmed:

  • RequestStep. See on sõlm, mille kaudu saate päringu luua. Sellel saab alamelemendina olla ainult üks kinnitussõlm.
  • Väide. Sõlme kasutatakse testide kirjutamiseks. Saab olla ainult RequestStep sõlme alamsõlm.
  • Kaust. Võimaldab grupeerida kausta ja RequestStep sõlmed enda sees.
  • Projekt. See on juursõlm, mis luuakse projekti loomisel automaatselt. Vastasel juhul kordab see kaustasõlme funktsioone.
  • Link. Link sõlmele Folder või RequestStep. Võimaldab päringuid ja skripte uuesti kasutada.
  • jne

Sõlmed asuvad kriimustustes (vasakul all olev paneel, mida kasutatakse kiireks "ühekordsete" päringute loomiseks) ja projektides (paneel vasakus ülanurgas), millel pikemalt peatume.

Projekt

Rakenduse käivitamisel võite vasakus ülanurgas märgata üksikut projekti rida. See on projektipuu juur. Projekti käivitamisel luuakse ajutine projekt, mille tee sõltub teie operatsioonisüsteemist. Saate projekti igal ajal teisaldada teile sobivasse kohta.

Projekti põhieesmärk on võimalus salvestada failisüsteemi arendusi ja neid edasi sünkroonida versioonihaldussüsteemide kaudu, käivitada skripte CI-s, vaadata muudatusi jne.

Muutujad

Muutujad on rakenduse üks peamisi mehhanisme. Need, kes töötavad selliste tööriistadega nagu TestMace, võivad juba mõista, millest me räägime. Seega on muutujad viis ühiste andmete salvestamiseks ja sõlmede vahel suhtlemiseks. Analoogiks on näiteks keskkonnamuutujad Postimehes või Insomnias. Läksime aga edasi ja arendasime teemat edasi. TestMace'is saab muutujaid määrata sõlme tasemel. Ükskõik milline. Samuti on olemas mehhanism muutujate pärimiseks esivanematelt ja muutujate kattumiseks järglastel. Lisaks on mitmeid sisseehitatud muutujaid, mille nimed algavad $. Siin on mõned neist:

  • $prevStep — link eelmise sõlme muutujatele
  • $nextStep — link järgmise sõlme muutujatele
  • $parent - sama asi, kuid ainult esivanema jaoks
  • $response - vastus serverist
  • $env - praegused keskkonnamuutujad
  • $dynamicVar - skripti või päringu täitmisel loodud dünaamilised muutujad

$env - need on sisuliselt tavalised projekti sõlme taseme muutujad, kuid keskkonnamuutujate hulk muutub sõltuvalt valitud keskkonnast.

Muutujale pääseb juurde kaudu ${variable_name}
Muutuja väärtus võib olla mõni muu muutuja või isegi terve avaldis. Näiteks võib url muutuja olla avaldis nagu
http://${host}:${port}/${endpoint}.

Eraldi tasub märkida muutujate määramise võimalust skripti täitmise ajal. Näiteks on sageli vaja salvestada autoriseerimisandmed (token või kogu päis), mis tulid serverist pärast edukat sisselogimist. TestMace võimaldab salvestada sellised andmed ühe esivanema dünaamilistesse muutujatesse. Et vältida kokkupõrkeid juba olemasolevate “staatiliste” muutujatega, paigutatakse dünaamilised muutujad eraldi objekti $dynamicVar.

Stsenaariumid

Kasutades kõiki ülaltoodud funktsioone, saate käitada terveid päringu skripte. Näiteks olemi loomine -> olemi päring -> olemi kustutamine. Sel juhul saate näiteks mitme RequestStep sõlme rühmitamiseks kasutada sõlme Folder.

Automaatne lõpetamine ja väljendite esiletõstmine

Mugavaks muutujatega töötamiseks (ja mitte ainult) on vajalik automaatne täitmine. Ja muidugi avaldise väärtuse esiletõstmine, et oleks lihtsam ja mugavam selgitada, millega konkreetne muutuja võrdub. See on täpselt nii, kui parem on üks kord näha kui sada korda kuulda:

TestMace – võimas IDE API-dega töötamiseks

Väärib märkimist, et automaatset lõpetamist rakendatakse mitte ainult muutujate, vaid ka näiteks päiste, teatud päiste väärtuste (nt sisutüübi päise automaatne täitmine), protokollide ja palju muu jaoks. Nimekirja uuendatakse pidevalt rakenduse kasvades.

Võta tagasi/teha uuesti

Muudatuste tagasivõtmine/uuesti tegemine on väga mugav asi, kuid millegipärast ei rakendata seda igal pool (ja API-dega töötamise tööriistad pole erand). Kuid me ei kuulu nende hulka!) Oleme kogu projekti vältel rakendanud undo/redo, mis võimaldab tühistada mitte ainult konkreetse sõlme redigeerimise, vaid ka selle loomise, kustutamise, liigutamise jne. Kõige kriitilisemad toimingud nõuavad kinnitust.

Testide koostamine

Assertion sõlm vastutab testide loomise eest. Üks peamisi funktsioone on võimalus luua teste ilma programmeerimiseta, kasutades sisseehitatud redaktoreid.

Väitesõlm koosneb väidete komplektist. Igal väitel on oma tüüp, praegu on väiteid mitut tüüpi

  1. Võrdle väärtusi – lihtsalt võrdleb 2 väärtust. Võrdlusoperaatoreid on mitu: võrdne, mitte võrdne, suurem kui, suurem või võrdne, väiksem kui, väiksem või võrdne.

  2. Sisaldab väärtust – kontrollib alamstringi esinemist stringis.

  3. XPath – kontrollib, kas XML-i valija sisaldab teatud väärtust.

  4. JavaScripti väide on suvaline JavaScripti skript, mis tagastab õnnestumise korral tõese ja ebaõnnestumise korral vale.

Märgin, et ainult viimane nõuab kasutajalt programmeerimisoskust, ülejäänud 3 väidet luuakse graafilise liidese abil. Siin näeb näiteks välja väärtuste võrdluse väite loomise dialoog:

TestMace – võimas IDE API-dega töötamiseks

Kirsiks tordil on vastustest väidete kiire loomine, vaadake vaid!

TestMace – võimas IDE API-dega töötamiseks

Sellistel väidetel on aga ilmsed piirangud, mille ületamiseks võiksite kasutada JavaScripti väidet. Ja siin pakub TestMace ka mugavat keskkonda automaatse täitmise, süntaksi esiletõstmise ja isegi staatilise analüsaatoriga.

API kirjeldus

TestMace võimaldab teil mitte ainult API-d kasutada, vaid ka seda dokumenteerida. Lisaks on kirjeldusel endal ka hierarhiline struktuur ja see sobib orgaaniliselt ülejäänud projektiga. Lisaks on hetkel võimalik importida API kirjeldusi Swagger 2.0 / OpenAPI 3.0 vormingutest. Kirjeldus ise ei ole lihtsalt tühimass, vaid on tihedalt integreeritud ülejäänud projektiga, eelkõige on saadaval URL-ide automaatne täitmine, HTTP päised, päringu parameetrid jne ning tulevikus plaanime lisada ka teste. vastuse vastavuse kohta API kirjeldusele.

Jagamissõlm

Juhtum: soovite jagada kolleegiga probleemset taotlust või isegi tervet skripti või lisada see lihtsalt veale. TestMace hõlmab ka seda juhtumit: rakendus võimaldab teil järjestada URL-is mis tahes sõlme ja isegi alampuu. Kopeeri-kleebi ja saad taotluse hõlpsalt teise masinasse või projekti üle kanda.

Inimloetav projekti salvestusvorming

Hetkel on iga sõlm salvestatud eraldi failis yml laiendiga (nagu Assertion node puhul) või kaustas, kus on sõlme nimi ja fail index.yml.
Näiteks näeb ülaltoodud ülevaates tehtud taotluse fail välja selline:

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

Nagu näete, on kõik väga selge. Soovi korral saab seda vormingut lihtsalt käsitsi redigeerida.

Failisüsteemi kaustade hierarhia kordab täielikult projekti sõlmede hierarhiat. Näiteks skript nagu:

TestMace – võimas IDE API-dega töötamiseks

Seodab failisüsteemi järgmise struktuuriga (kuvatakse ainult kaustade hierarhiat, kuid olemus on selge)

TestMace – võimas IDE API-dega töötamiseks

See muudab projekti läbivaatamise protsessi lihtsamaks.

Import Postimehest

Pärast kõigi ülaltoodu lugemist soovivad mõned kasutajad proovida (eks?) uut toodet või (mis kuradit ei tee nalja!) seda oma projektis täielikult kasutada. Rännet saab aga peatada suur hulk arendusi samas Postimehes. Sellistel juhtudel toetab TestMace kogude importimist Postmanist. Hetkel toetatakse ilma testideta importi, kuid me ei välista nende toetamist ka tulevikus.

Plaanid

Loodan, et paljudele, kes on seni lugenud, on meie toode meeldinud. Siiski pole see veel kõik! Töö toote kallal on täies hoos ja siin on mõned funktsioonid, mida plaanime peagi lisada.

Pilvesünkroonimine

Üks enim nõutud funktsioone. Hetkel teeme ettepaneku kasutada sünkroonimiseks versioonihaldussüsteeme, mille jaoks muudame vormingu seda tüüpi salvestusruumi jaoks sõbralikumaks. Kuid see töövoog ei sobi kõigile, seega plaanime lisada oma serverite kaudu paljudele tuttava sünkroonimismehhanismi.

CLI

Nagu eespool mainitud, ei saa IDE-taseme tooted hakkama ilma igasuguste integratsioonideta olemasolevate rakenduste või töövoogudega. CLI on täpselt see, mida on vaja TestMace'is kirjutatud testide integreerimiseks pidevasse integreerimisprotsessi. Töö CLI-ga on täies hoos; varased versioonid käivitavad projekti lihtsa konsooliaruandega. Tulevikus plaanime lisada aruande väljundi JUnit formaadis.

Plugina süsteem

Vaatamata meie tööriista võimsusele on lahendusi vajavate juhtumite hulk piiramatu. Lõppude lõpuks on ülesandeid, mis on konkreetsele projektile omased. Seetõttu plaanime tulevikus lisada ka SDK-d pluginate arendamiseks ja iga arendaja saab omale meelepäraseid funktsioone lisada.

Sõlmetüüpide valiku laiendamine

See sõlmede komplekt ei kata kõiki kasutaja nõutud juhtumeid. Sõlmed, mida plaanitakse lisada:

  • Skripti sõlm – teisendab ja paigutab andmed js ja vastava API abil. Seda tüüpi sõlme kasutades saate Postmanis teha näiteks eelpäringu ja päringujärgseid skripte.
  • GraphQL sõlm – graphql tugi
  • Kohandatud kinnitussõlm – võimaldab teil laiendada projektis olemasolevate väidete komplekti
    Loomulikult ei ole see lõplik nimekiri, seda täiendatakse pidevalt muuhulgas teie tagasiside tõttu.

FAQ

Mille poolest erined Postimehest?

  1. Sõlmede kontseptsioon, mis võimaldab teil projekti funktsionaalsust peaaegu lõputult skaleerida
  2. Inimloetav projektivorming koos failisüsteemi salvestamisega, mis lihtsustab tööd versioonihaldussüsteemidega
  3. Võimalus luua teste ilma programmeerimiseta ja täiustatud js-i tugi testiredaktoris (automaatne täitmine, staatiline analüsaator)
  4. Täiustatud automaatne täitmine ja muutujate praeguse väärtuse esiletõstmine

Kas see on avatud lähtekoodiga toode?

Ei, hetkel on allikad suletud, kuid edaspidi kaalume allikate avamise võimalust

Millest sa elad?)

Koos tasuta versiooniga plaanime välja anda ka toote tasulise versiooni. See hõlmab peamiselt asju, mis nõuavad serveri poolt, näiteks sünkroonimist.

Järeldus

Meie projekt liigub hüppeliselt stabiilse väljalaske poole. Toodet saab aga juba kasutada ja meie varajaste kasutajate positiivne tagasiside on selle tõestuseks. Kogume aktiivselt tagasisidet, sest ilma tiheda koostööta kogukonnaga pole head tööriista võimalik ehitada. Leiad meid siit:

Ametlik kodulehekülg

Telegramm

Lõtv

Facebook

Probleemide jälgija

Ootame teie soove ja ettepanekuid!

Allikas: www.habr.com

Lisa kommentaar