Tere kõigile! Täna tahame tutvustada IT-ühiskonnale meie toodet - IDE API-dega töötamiseks. Võib-olla teavad mõned teist meist juba . Siiski pole olnud põhjalikku ülevaadet tööriistast, seega likvideerime selle ebamugava puuduse.

Motivatsioon
Sooviksime alustada sellest, kuidas me selleni jõudsime ja otsustasime luua oma tööriista edasijõudnud API-dega töötamiseks. Alustame funktsionaalsuse nimekirjast, millega peaks meie arvates toode olema varustatud, et seda saaks pidada "IDE API-dega töötamiseks":
- Päringute ja skriptide (päringute järjekordade) loomine ja täitmine
- Erinevat tüüpi testide kirjutamine
- Testide genereerimine
- API kirjeldusega töötamine, sealhulgas importimise võimalused sellistest formaatidest nagu Swagger, OpenAPI, WADL jne.
- Päringute muundamine (moking)
- Hea tugi ühele või mitmele programmeerimiskeelele skriptide kirjutamiseks, sealhulgas populaarsate teekide integreerimine.
- jne.
Nimekirja võib soovi korral täiendada. Oluline on luua mitte ainult ise IDE, vaid ka teatud infrastruktuur, nagu näiteks pilvesünkroniseerimine, käskliinivahendid, veebi jälgimisteenus jne. Lõppude lõpuks dikteerivad viimaste aastate trendid meile mitte ainult rakenduse võimsa funktsionaalsuse, vaid ka selle meeldiva kasutajaliidese.
Kellele on sellist tööriista vaja? Ilmselgelt kõigile, kes on kuidagi seotud API-de arendamise ja testimisega - arendajad ja testijad =). Samas, kui esimestele piisab sageli üksikute päringute ja lihtsate skriptide täitmisest, siis testijatele on see üks peamisi tööriistu, mis lisaks muu hulgas peaks sisaldama võimsat testide kirjutamise mehhanismi, mis suudab neid CI-s läbi viia.
Nii et lähtudes nendest suunistest, hakkasime looma oma toodet. Vaadakem, mida oleme siiani saavutanud.
Kiire alustamine
Alustame rakendusega esimeste tutvumiste tegemist. Saate selle alla laadida . Praegu toetatakse kõiki kolme peamist platvormi - Windows, Linux, MacOS. Laadige alla, installige, käitage. Esimese käivitamise ajal võite näha järgmist akent:

Klõpsake sisu ala ülemises nurgas plusspainutusele, et luua esimene päring. Päringu vahekaart näeb välja järgmine:

Vaatame seda lähemalt. Päringu liides sarnaneb väga populaarsete REST-kliendidega, mis lihtsustab migreerimist sarnastest tööriistadest. Tehkem esimene päring URL-ile

Esmapilgul ei paku vastuse paneel tõesti mingeid ootamatuid üllatusi. Kuid tahaksin juhtida teie tähelepanu mõnedele punktidele:
- Vastuse keha on esitatud puustruktuurina, mis lisab informatiivsust ning võimaldab lisada mõned huvitavad funktsioonid, millest allpool räägin
- On olemas vahekaart Assertions, kus kuvatakse testide nimekiri antud päringu jaoks
Nagu näha, saab meie tööriista kasutada kui mugavat REST-kliendi. Kuid me ei oleks siin, kui selle võimalused piirduksid ainult päringute saatmisega. Edasi tutvustan põhikäsiteid ja TestMace funktsionaalsusi.
Põhikäsiteed ja võimalused
Sõlm
TestMace funktsioonid on jagatud erinevat tüüpi sõlmedeks. Ülaltoodud näites demonstreerisime RequestStep sõlme tööd. Kuid praegu on rakenduses saadaval ka järgmised sõlmetüübid:
- RequestStep. See on sõlm, millega saab luua päringu. Lastelemendina võib see sisaldada ainult ühte Assertion sõlme.
- Assertion. Sõlm, mida kasutatakse testide kirjutamiseks. Võib olla ainult RequestStep sõlme alamsõlm.
- Folder. Lubab grupeerida Folder ja RequestStep sõlmed enda sisse.
- Project. See on juurisõlm, mis luuakse automaatselt projekti loomisel. Muus osas kordab see Folder sõlme funktsionaalsusi.
- Link. Link Folder või RequestStep sõlmele. Lubab taaskasutada päringuid ja stsenaariume.
- jne.
Sõlmed paiknevad scratches (paneel vasakus alumises nurgas, mis teenib „ühekordsete” päringute kiireks loomiseks) ja project (paneel vasakus ülanurgas), millele peatume lähemalt.
Projekt
Rakenduse käivitamisel võisite märgata ühte Project rida vasakus ülanurgas. See on projekti puu juur. Projekti käivitamisel luuakse ajutine projekt, mille tee sõltub teie operatsioonisüsteemist. Igand hetkel võite projekti märkida teile sobivasse kohta.
Projekti peamine eesmärk on säilitada saavutusi failisüsteemis ja edasine sünkroniseerimine versioonihaldussüsteemide kaudu, stsenaariumide käitamine CI-s, muudatuste ülevaatus jne.
Muutujad
Muudatused on üks rakenduse võtme mehhanisme. Teie seast, kes töötavad tööriistadega nagu TestMace, on ehk juba aimu, millest jutt käib. Seega, muutujad on viis salvestada ühiseid andmeid ja suhelda nodide vahel. Näiteks on vastavad keskkonnamuutujad Postmanis või Insomnias. Kuid me läksime kaugemale ja arendasime teemat. TestMace'is saab muutujaid seadistada nodi tasandil. Mis tahes. Samuti on olemas muutuja pärimise mehhanism eelkäijatest ja muutuja katmine järeltulijates. Peale selle on olemas rida sisseehitatud muutujaid, mille nimed algavad $. Siin on mõned neist:
$prevStep— viide eelmise nodi muutujatele$nextStep— viide järgmise nodi muutujatele$parent— sama, kuid eelkäija jaoks$response— serverilt saadud vastus$env— praegused keskkonnamuutujad$dynamicVar— dünaamilised muutujad, mis luuakse skripti või päringu käivitamisel
$env — need on sisuliselt tavalised projekti taseme muutujad, kuid keskkonnamuutujate komplekt varieerub sõltuvalt valitud keskkonnast.
Muutujasse pääseb juurde läbi ${variable_name}
Muutuja väärtuseks võib olla teine muutuja või isegi terve väljend. Näiteks võib url muutujana olla järgmine väljend
http://${host}:${port}/${endpoint}.
Erakordselt tasub märkida võimalust määrata muutujaid skripti käivitamise ajal. Näiteks tekib sageli vajadus salvestada autentimisandmed (token või kogu päis), mis tulid serverilt pärast eduka sisselogimise. TestMace võimaldab sarnaseid andmeid salvestada dünaamilistesse muudatusse eelkäijate hulka. Et vältida konfliktide tekkimist juba olemasolevate "staatiliste" muutujatega, on dünaamilised muutujad väljastatud eraldi objekti. $dynamicVar.
Skenaariumid
Kasutades kõiki ülaltoodud võimalusi, saate teostada terveid päringuskeeme. Näiteks, üksuse loomine -> päringu tegemine -> üksuse eemaldamine. Selles olukorras saate näiteks kasutada Folder nodi mitme RequestStep nodi rühmitamiseks.
Automaatne täiendamine ja väljendi väärtuse esitlemine
Mugavaks tööks muutujate (ja mitte ainult) puhul on vajalik automaatne täiendamine. Ja muidugi väljendi väärtuse esiletõstmine, et oleks lihtsam ja mugavam täpsustada, millele mingi muutujatäpselt vastab. Siin on see juhtum, kus on parem üks kord näha, kui sada korda kuulda:

Tuleb märkida, et automaatne täiendamine on rakendatud mitte ainult muutujate, vaid ka näiteks pealkirjade, teatud pealkirjade väärtuste (nt Content-Type pealkirja automaatne täiendamine), protokollide ja muu kohta. Loend täienevad pidevalt rakenduse arengu käigus.
Tagasi / uuesti
Muutuste tagasivõtmine / kordamine on väga mugav funktsioon, kuid mingil põhjusel ei rakendata seda kaugeltki igal pool (ja API-de tööriistad ei ole erand). Kuid me pole sellised!) Tagasi/või uuesti toimingud on meil rakendatud kogu projekti ulatuses, mis võimaldab tühistada mitte ainult teatud sõlme redigeerimist, vaid ka selle loomist, kustutamist, liigutamist jne. Kõige kriitilisemad toimingud vajavad kinnitust.
Testide loomine
Testide loomise eest vastutab Assertion sõlm. Üks peamisi omadusi on testide loomine ilma programmeerimiseta, kasutades sisseehitatud redaktoreid.
Assertion sõlm koosneb väidete hulgast (assertion-idest). Igal assertion-il on oma tüüp, hetkel on saadaval mitu assertion tüüpi.
Väärtuste võrdlemine — lihtsalt võrreldakse 2 väärtust. On mitu võrdlemise operaatorit 'võrdub', 'ei võrdu', 'suurem', 'suurem või võrdu', 'vähem', 'vähem või võrdu'.
Sisaldab väärtust — kontrollib, kas algtekst sisaldab osalise väärtuse.
XPath — kontrollib, et XML-i valija järgi on kindel väärtus.
JavaScript assertion — juhuslik skript JavaScripti keeles, mis tagastab true, kui see on edukas, ja false, kui see ebaõnnestub.
Märgin, et ainult viimane nõuab kasutajalt programmeerimisoskusi, ülejäänud 3 assertion'i luuakse graafilise liidese abil. Näiteks kuidas näeb välja võrreldavate väärtuste assertion'i loomise dialoog:

Tordil on kirsiks väidete kiire loomine vastusest, lihtsalt vaadake seda!

Kuid sellised väited on ilmsete piirangutega, millega silmitsi seistes saate kasutada JavaScripti väidet. Ja siin pakub TestMace mugava keskkonna automaatse täiendamise, süntaksi esiletõstmise ja isegi staatilise analüsaatoriga.
API kirjeldus
TestMace võimaldab mitte ainult API-d kasutada, vaid ka selle dokumenteerimist. Kirjeldus on organiseeritud hierarhilisse struktuuri, mis sulandub harmooniliselt ülejäänud projekti. Lisaks sellele on hetkel saadaval võimalus importida API kirjeldust Swagger 2.0 / OpenAPI 3.0 formaatidest. Kirjeldus ei ole lihtsalt staatiline, vaid on tihedalt integreeritud projekti ülejäänud osadega, sealhulgas pakub automaatset täiendamist URL-ide, HTTP-peakirjade, päringute parameetrite ja muu osas. Tulevikus plaanime lisada ka testid API vastuse vastavuse kontrollimiseks.
Noodide jagamine
Näide: soovite jagada probleemset päringut või isegi tervet stsenaariumi kolleegile või lihtsalt kinnitada see vea kirjeldusse. TestMace katab ka selle juhtumi: rakendus võimaldab serialiseerida igasuguse nodi ja isegi alampuu URL-ina. Kopeerige ja kleepige ning te olete mugavalt kantud päringu teise masinasse või projekti.
Inimesele arusaadav projektihalduse formaat
Hetkel hoiab iga sõlm eraldi failis, millel on laiend .yml (nagu Assertion nodi puhul), või kaustas, mille nimeks on sõlm ja sises fail index.yml.
Näiteks näeb päringufail välja selline, mille me ülevaates tegime:
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 1Nagu näete, on kõik äärmiselt selge. Soovi korral saab sellist formaati täiesti mugavalt ka käsitsi redigeerida.
Kaalutud kaustade hierarhia failisüsteemis kordab täielikult sõlmede hierarhiat projektis. Näiteks selline stsenaarium:

Kardinaal sõltub failisüsteemis järgnevast struktuurist (näidatud on vaid kaustade hierarhia, kuid olemus on selge)

See lihtsustab projekti ülevaatamise protsessi.
Import Postman-st
Lugedes eeltoodut, tahavad mõned kasutajad proovida (nõus?), uut toodet või (miks mitte!) maksimumi kasutada oma projektis. Siiski võib migratsioon takerduda suur hulk olemasolevaid tööde Postman-is. Sellistel juhtudel toetab TestMace Postman-i kogumite importi. Hetkel toetame importi ilma testideta, kuid tulevikus ei välista me ka nende toetust.
Plaane
Loodetavasti meeldib meie toode paljudele, kes on siiani jõudnud. Kuid see ei ole veel kõik! Tootearendus käib täies hoos ja siin on mõned funktsioonid, mida plaanime peagi lisada.
Pilvesünkroniseerimine
Üks enim nõutud funktsioone. Praegu pakume sünkroniseerimiseks versioonihalduse süsteeme, milleks muudame vormi selliseks, et see sobiks sellise ehk salvestamise viisiga. Siiski ei sobi see töövoog kõigile, seetõttu kavatseme lisada paljudele tuttava sünkroniseerimise mehhanismi meie serverite kaudu.
cli-runtime'is ja kubectl'is
Nagu eelpool mainitud, ei saa IDE tasemel tooted hakkama erinevate integreerimistega juba olemasolevate rakenduste või töövoogudega. CLI on just vajalik TestMace’is kirjutatud testide integreerimiseks pideva integreerimise protsessi. CLI arendus käib täies hoos, varastes versioonides käivitatakse projekt koos lihtsa konsoolireportiga. Edaspidi plaanime lisada raporti väljundi JUnit vormingus.
Pluginasüsteem
Hoolimata meie tööriista võimekusest, on juhtumite hulk, mis vajavad lahendamist, piiramatu. Lõppude lõpuks on ülesandeid, mis on spetsiifilised konkreetsele projektile. Just seetõttu plaanime tulevikus lisada SDK pluginite arendamiseks, et iga arendaja saaks lisada soovitud funktsioone.
Sõlmpunktide tüüpide valiku laiendamine
See sõlmpunktide komplekt ei kata kõiki kasutaja vajadusi. Sõlmed, mida plaanitakse lisada:
- Script sõlm — muudab ja paigutab andmeid, kasutades js ja vastavat API-d. Selle sõlme abil saab teha näiteks pre-request ja post-request skripte Postmanis.
- GraphQL sõlm — GraphQL toe lisamine
- Custom assertion sõlm — võimaldab laiendada olemasolevate assertion-ide komplekti projekti sees
Loomulikult ei ole see lõplik nimekiri, see täieneb pidevalt, sealhulgas teie tagasisidest.
KKK
Kuidas te Postmanist erinevate?
- Konseptsioon sõlmedest, mis võimaldab praktiliselt lõpmatult skaleerida projekti funktsionaalsust
- Inimesele loetav projekti formaat, mida säilitatakse failisüsteemis, mis lihtsustab versioonihaldussüsteemide kasutamist
- Võime luua teste ilma programmeerimiseta ja täiustatud tugi js-le testide redigeerimisel (autotäide, staatiline analüsaator)
- Edasiarenenud automaatse täiendamise ja muutujate praeguse väärtuse esitlemine
Kas see on avatud lähtekoodiga toode?
Ei, praegu on lähtekood suletud, kuid tulevikus kaalume võimalust selle avamiseks
Kuidas te raha teenite?)
Tasuta versiooniga plaanime välja anda ka tasulise versiooni. See sisaldab peamiselt serveripoolset osa nõudvaid funktsioone, näiteks sünkroniseerimist.
Kokkuvõte
Meie projekt liigub kiiresti stabiilse versiooni suunas. Kuid juba praegu saab toodet kasutada ning meie varajaste kasutajate positiivsed arvustused kinnitavad seda. Kogume aktiivselt tagasisidet, sest ilma tiheda koostööta kogukonnaga ei ole võimalik head tööriista luua. Leidke meid siit:
Ootame põnevusega teie soove ja ettepanekuid!
Allikas: habr.com
