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

Tere kĂ”igile! TĂ€na tahame esitleda IT kogukonnale meie toodet — IDE API-dega töötamiseks TestMace. VĂ”ib-olla te juba teate meis eelnevatest artiklitest. Kuid ulatuslikku ĂŒlevaadet tööriistast ei ole olnud, seetĂ”ttu parandame selle ebamugavuse.

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

Motivatsioon

Sooviksime alustada sellest, kuidas me ĂŒldse sellisele teele jĂ”udsime ja otsustasime arendada oma tööriista API-dega edasijĂ”udnutele. Alustame funktsioonide loetelust, millel peaks olema toode, mida meie arvates vĂ”ib 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
  • Töö API kirjeldusega, sealhulgas importimine sellistest formaatidest nagu Swagger, OpenAPI, WADL jne
  • PĂ€ringute mooramaine
  • Hea toetuse olemasolu ĂŒhe vĂ”i mitme programmeerimiskeele jaoks skriptide kirjutamiseks, sealhulgas populaarsete raamatukogudega integreerimine
  • Kui kaua aega kulub vĂ€ljastamiseks?

Nimekiri on vĂ”imalik tĂ€iendada vastavalt soovile. Oluline on luua mitte ainult IDE, vaid ka teatud infrastruktuur, nĂ€iteks pilvesĂŒnkroonimine, kĂ€surea tööriistad, online-jĂ€lgimisteenus jne. LĂ”ppude lĂ”puks dikteerivad viimaste aastate trendid meile mitte ainult rakenduse vĂ”imsa funktsionaalsuse, vaid ka selle meeldiva liidese.

Kellele on vajalik selline tööriist? Ilmselgelt on need kĂ”ik, kes mingil moel on seotud API arendamise ja testimisega — arendajad ja testerid =). Kui esimestele on sageli piisav ĂŒksikute pĂ€ringute ja lihtsate stsenaariumide tĂ€itmine, siis testeritele on see ĂŒks peamisi tööriistu, mis peab sisaldama ka vĂ”imsat testimise kirjutamise mehhanismi koos CI-s kĂ€itamise vĂ”imalusega.

JĂ€rgides neid suuniseid, hakkasime looma oma toodet. Vaatame, mida oleme sellel etapil saavutanud.

Kiire algus

Alustame rakenduse esmakohtumisest. Selle saab alla laadida meie veebilehel. Praegu toetatakse kĂ”iki kolme pĂ”hiplatvormi — Windows, Linux, MacOS. Laadime alla, installime, kĂ€ivitame. Esmase kĂ€ivitamise ajal vĂ”ite nĂ€ha jĂ€rgmist akent:

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

KlĂ”psake sisuala ĂŒlaservas plussikoonust, et luua oma esimene pĂ€ring. PĂ€ringukaart nĂ€eb vĂ€lja selline:

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

Lugesime sellest veidi lĂ€hemalt. PĂ€ringu liides sarnaneb vĂ€ga tuntud REST-kliendi liidesele, mis lihtsustab ĂŒleminekut sarnastelt tööriistadelt. 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 samuti mingeid ootamatuid ĂŒllatusi. Siiski juhin teie tĂ€helepanu mĂ”nele punktile:

  1. Vastuse keha kuvatakse puu kujul, mis lisaks informatiivsusele lubab ka lisada mitmeid huvitavaid funktsioone, millest allpool rÀÀgin.
  2. On olemas Assertions vahekaart, kus kuvatakse selle pÀringu testide nimekiri.

Nagu nÀha, saab meie tööriista kasutada mugava REST-kliendina. Kuid me ei oleks siin, kui selle vÔimalused piirduksid vaid pÀringute saatmisega. Edasi tutvustan TestMace pÔhimÔisted ja funktsionaalsused.

PÔhimÔisted ja vÔimalused

SÔlm

TestMace'i funktsioonid on jaotatud erinevatesse sĂ”lmedesse. Ülaltoodud nĂ€ites demonstreerisime RequestStep sĂ”lme toimimist. Praegu on rakenduses saadaval ka jĂ€rgmised sĂ”lme tĂŒĂŒbid:

  • RequestStep. See on sĂ”lm, millega saab luua pĂ€ringu. Lastes on tal ainult ĂŒks Assertion sĂ”lm.
  • Assertion. SĂ”lm, mida kasutatakse testide kirjutamiseks. See vĂ”ib olla ainult RequestStep sĂ”lme alamsĂ”lm.
  • Folder. vĂ”imaldab grupeerida Folder ja RequestStep sĂ”lmed endas.
  • Project. See on juurisĂ”lm, mis luuakse automaatselt projekti loomisel. ÜlejÀÀnud osas kordab see Folder sĂ”lme funktsioone.
  • Link. Viide Folder vĂ”i RequestStep sĂ”lmele. See vĂ”imaldab taaskasutada pĂ€ringuid ja stsenaariume.
  • Kui kaua aega kulub vĂ€ljastamiseks?

SĂ”lmed asuvad scratches (paneel vasakus alanurgas, teenib kiirete â€žĂŒhekordsete” pĂ€ringute 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 asukoht sĂ”ltub teie operatsioonisĂŒsteemist. Iga hetke jooksul saate projekti viia teise sobivasse kohta.

Projekti peamine eesmĂ€rk on vĂ”imaldada teie arenduste salvestamine failisĂŒsteemi ja edasine sĂŒnkroniseerimine versioonihaldussĂŒsteemide kaudu, stsenaariumite kĂ€itamine CI-s, muudatuste ĂŒlevaatamine jne.

Muutujad

Muutujad on ĂŒks rakenduse vĂ”tmekohti. Need, kes töötavad sarnaste tööriistadega nagu TestMace, on tĂ”enĂ€oliselt juba aru saanud, millest jutt kĂ€ib. Seega, muutujad on viis ĂŒhiste andmete salvestamiseks ja suhtlemiseks sĂ”lmede vahel. NĂ€iteks on sarnaseks analoogiks keskkonnamuutujad Postmanis vĂ”i Insomnias. Kuid me oleme lĂ€inud kaugemale ja arendanud seda teemat edasi. TestMace'is saab muutujaid seadistada sĂ”lme tasemel. IgaĂŒht. Samuti on olemas mehhanism muutujate pĂ€rimiseks eelkĂ€ijatest ja muutujate ĂŒlekirjutamiseks jĂ€reltulijates. Lisaks on olemas hulk sisseehitatud muutujaid, mille nimed algavad $. Siin on mĂ”ned neist:

  • $prevStep — viit link varasemate sĂ”lmede muutujatele
  • $nextStep — viit link jĂ€rgnevate sĂ”lmede muutujatele
  • $parent — sama, kuid ainult eelkĂ€ija jaoks
  • $response — serveri vastus
  • $env — praegused keskkonnamuutujad
  • $dynamicVar — dĂŒnaamilised muutujad, mis luuakse skripti vĂ”i pĂ€ringu tĂ€itmisel

$env — need on sisuliselt tavalised Project taseme muutujad, kuid muutujate kogum sĂ”ltub valitud keskkonnast.

Muutujasse pöördumine toimub lÀbi ${variable_name}
Muutuja vÀÀrtuseks vÔib olla teine muutuja vÔi isegi tÀisavaldis. NÀiteks vÔib url-i muutujaks olla avaldis vormis
http://${host}:${port}/${endpoint}.

Eraldi tasub vĂ€lja tuua muutujate mÀÀramise vĂ”imalus skripti kĂ€ivitamisel. NĂ€iteks tekib sageli vajadus salvestada autentimisteave (token vĂ”i kogu pĂ€is), mis tuli serverilt pĂ€rast edukat sisselogimist. TestMace vĂ”imaldab salvestada taolised andmed dĂŒnaamilistesse muutujatesse, mis on ĂŒks vanematest. Kollisioonide vĂ€ltimiseks juba olemasolevate "staatiliste" muutujatega on dĂŒnaamilised muutuja eraldi objekti viidud. $dynamicVar.

Stsenaariumid

Kasutades kĂ”iki ĂŒlaltoodud vĂ”imalusi, saate sooritada terveid pĂ€ringute stsenaariume. NĂ€iteks: ĂŒksuse loomine -> ĂŒksuse pĂ€rimine -> ĂŒksuse kustutamine. Antud juhul saate nĂ€iteks kasutada Folder sĂ”lme, et grupeerida mitut RequestStep sĂ”lme.

AutotÀiendamine ja vÀljendi vÀÀrtuse esiletÔstmine

Mugavaks tööks muutujate (ja mitte ainult) puhul on vajalik autotĂ€iendamine. Ja muidugi vĂ€ljendi vÀÀrtuse esiletĂ”stmine, et oleks lihtsam ja mugavam tĂ€psustada, millele see vĂ”i teine muutuja vastab. Siin on tĂ”epoolest juhtum, kus on parem ĂŒhel korral nĂ€ha, kui sada korda kuulda:

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

Tuleb mÀrkida, et automaatne tÀitmine on rakendatud mitte ainult muutujate, vaid ka nÀiteks pealkirjade, teatud pealkirjade vÀÀrtuste (nÀiteks Content-Type pealkirja automaatne tÀitmine), protokollide ja paljude muude jaoks. Loend tÀieneb pidevalt rakenduse kasvades.

VÔta tagasi/korda

TĂŒhistamine/kordamine on vĂ€ga mugav funktsioon, kuid mingil pĂ”hjusel ei ole see kaugel igal pool rakendatud (nii ka API tööriistades). Kuid meie ei ole sellised!) Undo/redo 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 nĂ”uavad kinnitust.

Testide loomine

Testide loomise eest vastutab Assertion sĂ”lm. Üks peamisi omadusi on vĂ”imalus testide loomine ilma programmeerimist teadmata, kasutades sisseehitatud redigeerijaid.

Assertion sĂ”lm koosneb hulgast assertion'itest (vĂ€idetest). Igal assertion'il on oma tĂŒĂŒp, praegu on olemas mitu erinevat assertion'i tĂŒĂŒpi.

  1. VÀÀrtuste vĂ”rdlemine — lihtsalt vĂ”rdleb kahte vÀÀrtust. On mitu vĂ”rdlusoperaatorit: 'vĂ”rdne', 'mitte vĂ”rdne', 'suurem', 'suurem vĂ”i vĂ”rdne', 'vĂ€iksem', 'vĂ€iksem vĂ”i vĂ”rdne'.

  2. Sisaldab vÀÀrtust — kontrollib, kas alamstring esineb stringis.

  3. XPath — kontrollib, kas XML-is selektoriga on seatud kindel vÀÀrtus.

  4. JavaScripti vĂ€ide — vabalt valitud JavaScripti skript, mis tagastab true edukuse korral ja false ebaĂŒhtluse korral.

MĂ€rgin, et ainult viimane nĂ”uab kasutajalt programmeerimisoskusi, ĂŒlejÀÀnud 3 vĂ€idet luuakse graafilise liidese abil. NĂ€iteks, kuidas nĂ€eb vĂ€lja compare values vĂ€ite loomise dialoog:

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

Kirsiks tordil on vÀidete kiire loomine vastusest, lihtsalt vaata seda!

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

Kuid sellistel vĂ€idetel on ilmne piirang, millega kokku puutudes vĂ”ite kasutada JavaScripti vĂ€idet. Siinkohal pakub TestMace ka mugava keskkonna automaatse tĂ€iendamise, sĂŒntaksivĂ€rvi ja isegi staatilise analĂŒsaatori abil.

API kirjeldus

TestMace mitte ei vĂ”imalda mitte ainult API-d kasutada, vaid ka selle dokumenteerimist. Kirjeldus endal on samuti hierarhiline struktuur ja sulandub orgaaniliselt ĂŒlejÀÀnud projekti. Peale selle on praeguseks olemas vĂ”imalus importida API kirjeldust Swagger 2.0 / OpenAPI 3.0 formaatidest. Kirjeldus ei jÀÀ lihtsalt staatiliseks, vaid integreerub tihedalt ĂŒlejÀÀnud projekti osadega, sealhulgas on saadaval URL-ide, HTTP-pealkirjade, pĂ€ringu parameetrite automaatne tĂ€iendamine ja muu, ning tulevikus plaanime lisada ka teste API vastuse vastavuse kontrollimiseks.

Klahvid

TÔuge: soovite jagada probleemset pÀringut vÔi isegi tervet stsenaariumi kolleegiga vÔi lihtsalt lisada selle veale. TestMace katab ka selle juhtumi: rakendus vÔimaldab serializeerida mis tahes sÔlme ja isegi alamsÔlme URL-is. Kopeeri-kleebi ja olete juba mugavalt viinud pÀringu teisele masinale vÔi projekti.

Inimesele arusaadav projekti salvestamise formaat

Hetkel salvestatakse iga sÔlm eraldi failis, millel on laiend yml (nagu Assertion sÔlme puhul), vÔi kaustas, mille nimi on sÔlm ja seal on fail index.yml.
NĂ€example, siin on fail pĂ€ringu kohta, mille me tegime ĂŒlaltoodud ĂŒlevaates:

index.yml

lapsed: []
muutujad: {}
tĂŒĂŒp: RequestStep
mÀÀraMuutujad: []
pÀringuAndmed:
  pÀring:
    meetod: GET
    url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8'
  pealkirjad: []
  keelatudPĂ€randPealkirjad: []
  parameetrid: []
  keha:
    tĂŒĂŒp: Json
    jsonKeha: ''
    xmlKeha: ''
    tekstKeha: ''
    vormAndmed: []
    fail: ''
    vormURLEncoded: []
  rangeSSL: PĂ€rand
auditoAndmed:
  tĂŒĂŒp: pĂ€rand
nimi: Scratch 1

Kuidas nÀha, kÔik on absoluutselt arusaadav. Soovi korral on sellist formaati tÀiesti mugav ka kÀsitsi redigeerida.

Kaustade hierarhiat failisĂŒsteemis jĂ€lgib tĂ€ielikult sĂ”lmede hierarchiat projektis. NĂ€iteks selline stsenaarium:

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

Mappitakse failisĂŒsteemis jĂ€rgmise struktuuriga (nĂ€idatud on vaid kaustade hierarhia, kuid mĂ”te on selge)

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

Mis lihtsustab projekti ĂŒlevaatamise protsessi.

Postman'ist importimine

Lugedes kÔike eelnevat, soovivad mÔned kasutajad proovida (nii tÔesti?) uut toodet vÔi (miks mitte!) teha seda oma projektis. Siiski vÔib migratsiooni takistada suur hulk arendusi just Postman'is. Selliste olukordade jaoks toetab TestMace Postman'i kogude importimist. Praegu toetatakse testideta importi, kuid tulevikus ei vÀlista me nende toetust.

Tunniplaanid

Loodan, et paljusid teist, kes on siiani lugenud, on meie toode paelunud. Kuid see pole veel kÔik! Toote arendamine kÀib tÀie hooga ja siin on mÔned omadused, mida me plaanime peagi lisada.

PilvesĂŒncroniseerimine

Üks kĂ”ige nĂ”utavamaid funktsioone. Hetkel pakume sĂŒncroniseerimiseks kasutada versioonihaldussĂŒsteeme, mille jaoks teeme formaadi inimestele mugavamaks selliseks sĂ€ilitamiseks. Kuid mitte kĂ”ik ei sobi sellise töövooga, seetĂ”ttu plaanime lisada paljudele tuttava sĂŒncroniseerimise mehhanismi lĂ€bi meie serverite.

CLI

Nagu juba eelnevalt mainitud, ei saa IDE tasemel tooted hakkama ilma erinevate integreerimiste olemasolevate rakenduste vÔi töövoogudega. CLI on vajalik TestMace'is kirjutatud testide integreerimiseks pidevasse integreerimise protsessi. CLI arendamine kÀib tÀie hooga, varasemates versioonides on kavas luua projekt koos lihtsa konsooli aruandlusega. Edasi plaanitakse lisada aruande vÀljund JUnit formaadis.

PluginasĂŒsteem

Vaatamata meie tööriista jĂ”ule on lahendamisvajaduste hulk piiramatud. LĂ”ppude lĂ”puks on olemas ĂŒlesandeid, mis on spetsiifilised igale projektile. SeetĂ”ttu plaanime tulevikus lisada SDK pluginate arendamiseks, et iga arendaja saaks lisada soovitud funktsionaalsuse.

Node tĂŒĂŒpide valiku laiendamine

See node komplekt ei kata kÔiki kasutajat vajalikke juhtumeid. Planeeritavad node'id on:

  • Script node — teisendab ja paigutab andmeid, kasutades js ja vastavat API-d. Selle node tĂŒĂŒbi abil on vĂ”imalik teha asju, nagu pre-request ja post-request skriptid Postmanis.
  • GraphQL node — GraphQL toe pakkumine
  • Custom assertion node — lubab laiendada olemasolevaid assertion'e projektis
    Loomulikult ei ole see lÔplik nimekiri, see tÀienev pidevalt, sealhulgas teie tagasiside kaudu.

KKK

Kuidas te Postmanist erinevate?

  1. Node'i kontseptsioon, mis vÔimaldab praktiliselt piiramatu funktsionaalsuse skaala projekti
  2. Inimesele loetav projekti formaat faili sĂŒsteemi salvestamine, mis lihtsustab versioonihaldussĂŒsteemide kasutamist
  3. Testide loomise vĂ”imalus ilma programmeerimiseta ja tĂ€iustatud js-tugi testiredaktoris (automaatne tĂ€iendamine, staatiline analĂŒĂŒsitööriist)
  4. TÀiustatud automaatne tÀiendamine ja muutujate praeguse vÀÀrtuse esiletÔstmine

Kas see on avatud lÀhtekoodiga toode?

Ei, hetkel on lÀhtekood suletud, kuid tulevikus kaalume vÔimalust avada lÀhtekood.

Kuidas te elate?)

Lisaks tasuta versioonile plaanime vĂ€lja anda ka tasulise versiooni. Sellesse kuuluvad eelkĂ”ige funktsioonid, mis vajavad serveripoolset tuge, nĂ€iteks sĂŒnkroniseerimine.

KokkuvÔte

Meie projekt liikleb kiires tempos stabiilse vÀljaande suunas. Siiski on toode juba praegu kasutamiseks saadaval ja meie varajaste kasutajate positiivne tagasiside rÀÀgib enda eest. Kogume aktiivselt tagasisidet, kuna ilma tiheda koostööta kogukonnaga ei ole vÔimalik head tööriista luua. Meid vÔib leida siit:

Ametlik veebisait

Telegram

Slack

Facebook

Issues-treileri

Ootame huviga teie soove ja ettepanekuid!

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster