TestMace — vĂ”imas IDE API-dega töötamiseks

Tere kĂ”igile! TĂ€na tahame tutvustada IT-ĂŒhiskonnale meie toodet - IDE API-dega töötamiseks. TestMaceVĂ”ib-olla teavad mĂ”ned teist meist juba eelnevas artiklis. Siiski pole olnud pĂ”hjalikku ĂŒlevaadet tööriistast, seega likvideerime selle ebamugava puuduse.

TestMace — vĂ”imas IDE API-dega töötamiseks

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 meie veebisaidil. 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:

TestMace — vĂ”imas IDE API-dega töötamiseks

KlĂ”psake sisu ala ĂŒlemises nurgas plusspainutusele, et luua esimene pĂ€ring. PĂ€ringu vahekaart nĂ€eb vĂ€lja jĂ€rgmine:

TestMace — vĂ”imas IDE API-dega töötamiseks

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 https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace — vĂ”imas IDE API-dega töötamiseks

Esmapilgul ei paku vastuse paneel tĂ”esti mingeid ootamatuid ĂŒllatusi. Kuid tahaksin juhtida teie tĂ€helepanu mĂ”nedele punktidele:

  1. Vastuse keha on esitatud puustruktuurina, mis lisab informatiivsust ning vÔimaldab lisada mÔned huvitavad funktsioonid, millest allpool rÀÀgin
  2. 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:

TestMace — vĂ”imas IDE API-dega töötamiseks

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.

  1. 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'.

  2. Sisaldab vÀÀrtust — kontrollib, kas algtekst sisaldab osalise vÀÀrtuse.

  3. XPath — kontrollib, et XML-i valija jĂ€rgi on kindel vÀÀrtus.

  4. 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:

TestMace — vĂ”imas IDE API-dega töötamiseks

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

TestMace — vĂ”imas IDE API-dega töötamiseks

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 1

Nagu 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:

TestMace — vĂ”imas IDE API-dega töötamiseks

Kardinaal sĂ”ltub failisĂŒsteemis jĂ€rgnevast struktuurist (nĂ€idatud on vaid kaustade hierarhia, kuid olemus on selge)

TestMace — vĂ”imas IDE API-dega töötamiseks

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?

  1. Konseptsioon sÔlmedest, mis vÔimaldab praktiliselt lÔpmatult skaleerida projekti funktsionaalsust
  2. Inimesele loetav projekti formaat, mida sĂ€ilitatakse failisĂŒsteemis, mis lihtsustab versioonihaldussĂŒsteemide kasutamist
  3. VĂ”ime luua teste ilma programmeerimiseta ja tĂ€iustatud tugi js-le testide redigeerimisel (autotĂ€ide, staatiline analĂŒsaator)
  4. 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:

Ametlik veebisait

Telegram

Slack

Facebook

Probleemide jĂ€lgimise sĂŒsteem

Ootame pÔnevusega teie soove ja ettepanekuid!

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster