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

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

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

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

Esmapilgul ei paku vastuse paneel samuti mingeid ootamatuid ĂŒllatusi. Siiski juhin teie tĂ€helepanu mĂ”nele punktile:
- Vastuse keha kuvatakse puu kujul, mis lisaks informatiivsusele lubab ka lisada mitmeid huvitavaid funktsioone, millest allpool rÀÀgin.
- 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:

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.
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'.
Sisaldab vÀÀrtust â kontrollib, kas alamstring esineb stringis.
XPath â kontrollib, kas XML-is selektoriga on seatud kindel vÀÀrtus.
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:

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

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 1Kuidas 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:

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

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?
- Node'i kontseptsioon, mis vÔimaldab praktiliselt piiramatu funktsionaalsuse skaala projekti
- Inimesele loetav projekti formaat faili sĂŒsteemi salvestamine, mis lihtsustab versioonihaldussĂŒsteemide kasutamist
- Testide loomise vĂ”imalus ilma programmeerimiseta ja tĂ€iustatud js-tugi testiredaktoris (automaatne tĂ€iendamine, staatiline analĂŒĂŒsitööriist)
- 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:
Ootame huviga teie soove ja ettepanekuid!
Allikas: habr.com
