PĂ«rshĂ«ndetje tĂ« gjithĂ«ve! Sot dĂ«shirojmĂ« tĂ« paraqesim pĂ«r publikun IT produktin tonĂ« â IDE pĂ«r punĂ«n me API. . Ndoshta disa nga ju tashmĂ« e dini pĂ«r ne nga . MegjithatĂ«, nuk kishte njĂ« pĂ«rmbledhje gjithĂ«pĂ«rfshirĂ«se tĂ« mjetit, prandaj po e largojmĂ« kĂ«tĂ« mangĂ«si tĂ« pakĂ«ndshme.

Motivimi
Do të doja të filloja me atë si, në të vërtetë, arritëm në këtë mënyrë jetese dhe vendosëm të zhvillonim mjetin tonë për punë të avancuar me API. Të nisim me listën e funksionaliteteve që produkti duhet të ketë, për të cilin, sipas mendimit tonë, mund të thuhet se është "IDE për punë me API":
- Krijimi dhe ekzekutimi i kërkesave dhe skenarëve (sekuenca kërkesash)
- Shkrimi i testeve të ndryshme
- Gjenarimi i testeve
- Puna me përshkrimin e API, përfshirë importin nga formate të tillë si Swagger, OpenAPI, WADL etj.
- Mocking i kërkesave
- Support i mirë për një ose më shumë gjuhë programuese për shkrimin e skripteve, duke përfshirë integrimin me bibliotekat popullore
- etj.
Lista mund tĂ« plotĂ«sohet sipas dĂ«shirĂ«s. ĂshtĂ« e rĂ«ndĂ«sishme tĂ« krijohet jo vetĂ«m vetĂ« IDE, por gjithashtu njĂ« infrastrukturĂ« tĂ« caktuar, siç Ă«shtĂ« sinkronizimi cloud, mjetet e komandĂ«s, shĂ«rbimi i monitorimit online etj. NĂ« fund tĂ« fundit, tendencat e viteve tĂ« fundit na diktuan jo vetĂ«m njĂ« funksionalitet tĂ« fuqishĂ«m tĂ« aplikacionit, por edhe njĂ« ndĂ«rfaqe tĂ« kĂ«ndshme.
PĂ«r kĂ« Ă«shtĂ« i nevojshĂ«m njĂ« mjet i tillĂ«? E gjithĂ« kjo Ă«shtĂ« e qartĂ«, pĂ«r tĂ« gjithĂ« ata qĂ« janĂ« ndonjĂ«herĂ« tĂ« lidhur me zhvillimin dhe testimin e API â zhvilluesit dhe testuesit =). Dhe ndonĂ«se pĂ«r tĂ« parĂ«t shpesh mjafton tĂ« kryejnĂ« kĂ«rkesa tĂ« vetme dhe skenarĂ« tĂ« thjeshtĂ«, pĂ«r testuesit kjo Ă«shtĂ« njĂ« nga mjetet kryesore, e cila, pĂ«rveç tĂ« tjerash, duhet tĂ« pĂ«rfshijĂ« njĂ« mekanizĂ«m tĂ« fuqishĂ«m pĂ«r shkrimin e testeve me mundĂ«sinĂ« e ekzekutimit tĂ« tyre nĂ« CI.
Pra, duke ndjekur këto orientime, filluam të krijojmë produktin tonë. Le të shohim se çfarë kemi arritur deri në këtë fazë.
Nisja e shpejtë
Le tĂ« fillojmĂ« me takimin e parĂ« me aplikacionin. Mund ta shkarkoni . NĂ« kĂ«tĂ« moment mbĂ«shteten tĂ« tri platformat kryesore â Windows, Linux, MacOS. Shkarkoni, instaloni, hapni. NĂ« fillim, mund tĂ« shihni dritaren e mĂ«poshtme:

Klikoni në plusin në pjesën e sipërme të zonës së përmbajtjes për të krijuar kërkesën e parë. Tab-i me kërkesën duket si më poshtë:

Le të ndalemi pak më gjatë në të. Interfaci i kërkesës i ngjan shumë atij të klientëve popullarë të REST, gjë që lehtëson migronin nga këto mjete. Le të bëjmë kërkesën e parë në url

Në përgjithësi, në shikim të parë, panele e përgjigjeve nuk sjell ndonjë befasim. Megjithatë, do t'i drejtoj vëmendjen tuaj disa pikave:
- Trupi i përgjigjes paraqitet si një pemë, e cila, nga njëra anë, shton informueshmërinë dhe nga ana tjetër lejon të shtojmë disa veçori interesante, për të cilat do flasim më poshtë
- Ekziston një skedë Assertions, ku shfaqet lista e testeve për këtë kërkesë
Siç mund të vëreni, mjeti ynë mund të përdoret si një klient i përshtatshëm i REST. Megjithatë, ne nuk do të ishim këtu nëse kapacitetet e tij do të kufizoheshin vetëm në dërgimin e kërkesave. Më pas, do përshkruaj konceptet kryesore dhe funksionalitetet e TestMace.
Koncepte kryesore dhe mundësi
Nyja
Funksionaliteti i TestMace është i ndarë në lloje të ndryshme nyjash. Në shembullin e mësipërm ne demonstruam punën e nyjës RequestStep. Megjithatë, aktualisht në aplikacion janë gjithashtu të disponueshme lloje të tjera nyjash:
- RequestStep. Kjo është një nyjë, me anë të së cilës mund të krijoni një kërkesë. Si një element fëmijor, ajo mund të ketë vetëm një nyjë Assertion.
- Assertion. Nyjë që përdoret për të shkruar teste. Mund të jetë një nyjë fëmijore vetëm për nyjën RequestStep.
- Folder. Lejon grupimin e nyjave Folder dhe RequestStep brenda saj.
- Project. Kjo është nyja rrënjësore, krijohet automatikisht me krijimin e projektit. Në të tjera përsërit funksionalitetet e nyjës Folder.
- Link. Një lidhje në nyjën Folder ose RequestStep. Lejon ripërdorimin e kërkesave dhe skenarëve.
- etj.
Nodet janë të vendosura në scratches (përmes panelit në maj të poshtme, i cili shërben për krijimin e shpejtë të kërkesave "njëherëshe") dhe në project (paneli në maj të sipërme), ku do të ndalemi më në detaje.
Projekti
Kur të startoni aplikacionin, mund të keni vënë re një rresht të vetëm Project në këndin e majtë lart. Ky është rrënjësori i pemës së projektit. Kur projekti startohet, krijohet një projekt përkohësor, rruga e të cilit varet nga sistemi operativ që përdorni. Në çdo moment mund të transferoni projektin në një vend më të përshtatshëm për ju.
Qëllimi kryesor i projektit është të mundësojë ruajtjen e punimeve në sistemin e skedarëve dhe sinkronizimin e mëtejshëm përmes sistemeve të kontrollit të versioneve, ekzekutimin e skenarëve në CI, rishikimin e ndryshimeve etj.
Variablat
Variablat janĂ« njĂ« nga mekanizmat kryesorĂ« tĂ« aplikacionit. Ata prej jush qĂ« punoni me mjete tĂ« tilla si TestMace, ndoshta e keni kuptuar pĂ«r çfarĂ« do flitet. Pra, variablat janĂ« njĂ« mĂ«nyrĂ« pĂ«r ruajtjen e tĂ« dhĂ«nave tĂ« pĂ«rbashkĂ«ta dhe komunikimin mes nodave. NjĂ« analog tĂ« tillĂ« janĂ« variablat e ambientit nĂ« Postman ose Insomnia. MegjithatĂ«, ne kemi shkuar mĂ« tej dhe e kemi zhvilluar temĂ«n. NĂ« TestMace, variablat mund tĂ« vendosen nĂ« nivel nodash. Ădo nodĂ«. Gjithashtu ekziston njĂ« mekanizĂ«m trashĂ«gimi tĂ« variablave nga pararendĂ«sit dhe mbulimi i variablave nĂ« pasardhĂ«s. PĂ«rveç kĂ«saj, ekziston njĂ« sĂ«rĂ« variablesh tĂ« integruar, emrat e variablave tĂ« integruar fillojnĂ« me $. Ja disa prej tyre:
$prevStepâ referencĂ« pĂ«r variablat e nodĂ«s sĂ« kaluar$nextStepâ referencĂ« pĂ«r variablat e nodĂ«s sĂ« ardhshme$parentâ po e njĂ«jta gjĂ«, por pĂ«r pararendĂ«sin$responseâ pĂ«rgjigjja nga serveri$envâ variablat aktuale tĂ« ambientit$dynamicVarâ variablat dinamike, tĂ« krijuara gjatĂ« ekzekutimit tĂ« skenarit ose kĂ«rkesĂ«s
$env â nĂ« thelb, janĂ« variablat e zakonshme tĂ« nivelit projekti, megjithatĂ«, grupi i variablave tĂ« ambientit ndryshon sipas ambientit tĂ« zgjedhur.
Qasja në variabël bëhet përmes ${variable_name}
Si vlerë e variablit mund të jetë një variabël tjetër, ose madje një shprehje e tërë. Për shembull, si variabël url mund të jetë një shprehje e tillë
http://${host}:${port}/${endpoint}.
Vlen të theksohet mundësia e caktimit të variablave gjatë ekzekutimit të skenarit. Për shembull, shpesh lind nevoja për të ruajtur të dhënat e autorizimit (token ose të gjithë headerin), të cilat vijnë nga serveri pas një kyçjeje të suksesshme. TestMace lejon ruajtjen e këtij lloji të të dhënave në variabla dinamikë të një nga paraardhësit. Për të shmangur kolizionet me variablat "statikë" që tashmë ekzistojnë, variablat dinamikë janë vendosur në një objekt të veçantë. $dynamicVar.
Skenarët
Duke përdorur të gjitha mundësitë e lartpërmendura, ju mund të realizoni skenarë të tërë kërkesash. Për shembull, krijimi i një entiteti -> kërkesa për entitetin -> fshirja e entitetit. Në këtë rast, ju mund të përdorni nodën Folder për grupimin e disa nodave RequestStep.
Plotësimi automatik dhe ndriçimi i vlerës së shprehjes
Për një punë të këndshme me variablat (dhe jo vetëm) është e nevojshme autokompletimi. Natyrisht, është e rëndësishme edhe ndriçimi i vlerës së shprehjes, për të qenë më e lehtë dhe më ndihmuese të saktësohet çfarë ka të bëjë ndonjë variabël. Ky është pikërisht rasti kur është më mirë të shohësh një herë sesa të dëgjosh njëqind herë:

Vlen të përmendet se autokompletimi është realizuar jo vetëm për variablat, por edhe, për shembull, për titujt, vlerat e titujve të caktuar (p.sh., autokompletimi për titullin Content-Type), protokollet dhe shumë gjëra të tjera. Lista vazhdon të plotësohet me rritjen e aplikacionit.
Undo/redo
Anulimi/ripërsëritja e ndryshimeve është një gjë shumë e dobishme, por për ndonjë arsye nuk është realizuar kudo (dhe mjete për të punuar me API nuk janë përjashtim). Por ne nuk jemi ata!) Undo/redo është realizuar në kuadër të të gjithë projektit, çfarë lejon të anulohet jo vetëm redaktimi i një nodi të caktuar, por edhe krijimi, fshirja, zhvendosja, etj. Operacionet më kritike kërkojnë konfirmim.
Krijimi i testeve
Për krijimin e testeve është përgjegjës nodi i Assertit. Një nga veçoritë kryesore është mundësia e krijimit të testeve pa programim, duke përdorur redaktorët e integruar.
Nodi i Assertion pĂ«rbĂ«het nga njĂ« grup assertion-esh. Ădo assertion ka njĂ« tip tĂ« vetin, pĂ«r momentin ekzistojnĂ« disa tipe assertion-esh.
Compare values â thjesht krahasohet 2 vlera. Ka disa operatorĂ« krahasimi "e barabartĂ«", "nuk Ă«shtĂ« e barabartĂ«", "mĂ« shumĂ«", "mĂ« shumĂ« ose e barabartĂ«", "mĂ« pak", "mĂ« pak ose e barabartĂ«".
PĂ«rfshin vlerĂ«n â kontrollon prani tĂ« njĂ« nĂ«nstrobe nĂ« vargun.
XPath â kontrollon se çfarĂ« vlerĂ« ndodhet nĂ« XML nĂ« bazĂ« tĂ« selektorit tĂ« caktuar.
Assertion JavaScript â njĂ« skript i rastĂ«sishĂ«m nĂ« gjuhĂ«n javascript, i cili kthen true nĂ« rast suksesi dhe false nĂ« rast dĂ«shtimi.
Dua të theksoj se vetëm e fundit kërkon nga përdoruesi aftësi programimi, 3 assertion-t e tjera krijohen me anë të ndërfaqes grafike. Ja, si duket dialogu për krijimin e një assertion-i për krahasimin e vlerave:

Krejti në tortë është krijimi i shpejtë i assertion-esh nga përgjigjja, thjesht shikoni këtë!

Megjithëse këto assertion-e kanë kufizime të qarta, kur përballeni me to, mund të përdorni javascript assertion. Edhe këtu, TestMace ofron një mjedis të rehatshëm me autokompaktim, ndriçim sintaksor dhe madje edhe një analizues static.
Përshkrimi i API
TestMace ofron mundësinë për të përdorur API dhe për ta dokumentuar atë. Përshkrimi ka një strukturë hierarkike dhe përshtatet natyrshëm me projektin e përgjithshëm. Përveç kësaj, aktualisht ekziston mundësia e importit të përshkrimit të API nga formatet Swagger 2.0 / OpenAPI 3.0. Përshkrimi nuk është thjesht një ngarkesë e vdekur, por integrohet ngushtë me pjesën tjetër të projektit, duke ofruar autokompaktimin e URL-ve, titujve HTTP, parametrave të pyetjeve dhe më shumë, dhe në të ardhmen planifikojmë të shtojmë teste për përputhshmërinë e përgjigjeve me përshkrimin e API.
Shirimi i nodave
Rasti: do të donit të ndanit një kërkesë problematike apo madje një skenar të tërë me një koleg apo thjesht ta bashkoni atë me një bug. TestMace mbulon edhe këtë rast: aplikacioni lejon serializimin e çdo node dhe madje të një nënpeme në një URL. Kopjoni-ngjitni dhe tashmë e keni transferuar lehtësisht kërkesën në një makinë tjetër ose projekt.
Formati i lexueshëm nga njeriu për ruajtjen e projektit
Aktualisht, çdo nyje ruhet në një skedar të veçantë me prapashtesën yml (ashtu si në rastin e nodës Assertion), ose në një dosje me emrin e nodës dhe skedarin index.yml në të.
Ja si duket për shembull skedari me kërkesën që bëmë në përmbledhjen më lart:
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 1Siç e shihni, gjithçka është shumë e qartë. Nëse dëshironi, ky format mund të redaktohet shumë lehtësisht edhe manualisht.
Hierarkia e dosjeve në sistemin e skedarëve përsërit saktësisht hierarkinë e nodave në projekt. Për shembull, një skenar i tillë:

Përmblidhet në sistemin e skedarëve në këto struktura (tregohet vetëm hierarkia e dosjeve, por thelbi është i qartë)

Ăka e lehtĂ«son procesin e rishikimit tĂ« projektit.
Importi nga Postman
Pas pas lexhimit të lartpërmendur, disa përdorues do të dëshironin të provonin (në fakt?) produktin e ri ose (për çfarë është kjo!) të përdorin atë në projektin e tyre. Megjithatë, migrimi mund të ndalojë një numër të madh zhvillimesh të bëra në Postman. Për këto raste, TestMace mbështet importimin e koleksioneve nga Postman. Aktualisht mbështetet importi pa testet, megjithatë në të ardhmen nuk përjashtohet mbështetje për to.
Planet
Shpresoj se shumë nga ata që e lexuan deri në këtë pikë e pëlqyen produktin tonë. Megjithatë, kjo nuk është gjithçka! Puna mbi produktin po vazhdon me ritme të plota dhe këtu janë disa karakteristika që planifikojmë të shtojmë së shpejti.
Sinkronizimi në cloud
Një nga karakteristikat më të kërkuara. Aktualisht, ne ofrojmë si mundësi sinkronizimin përmes sistemeve të kontrollit të versioneve, për këtë arsye, ne po e bëjmë formatin më miqësor për këtë lloj ruajtjeje. Megjithatë, jo të gjithë u përshtaten këtij mënyre punuese, prandaj planifikohet të shtohet një mekanizëm sinkronizimi që është i njohur për shumë.
CLI
Siç u tha më sipër, produktet e nivelit IDE nuk mund të shkojnë pa integrime të ndryshme me aplikacione ose rrjedha pune ekzistuese. CLI është pikërisht ajo që nevojitet për integrimin e testeve të shkruara në TestMace në procesin e integrimit të vazhdueshëm. Puna mbi CLI po vazhdon me ritme të shpejta, në versionet e hershme do të ketë një projekt me një raport të thjeshtë në konsol. Më vonë, planifikohet të shtohet raportimi në formatin JUnit.
Sistemi i plugineve
Pavarësisht fuqisë sonë, numri i rasteve që kërkojnë zgjidhje është i paanë. Në fund të fundit, ka detyra që janë specifike për një projekt të caktuar. Pikërisht për këtë arsye, ne planifikojmë të shtojmë SDK për zhvillimin e plugineve dhe çdo programues do të mund të shtojë funksionalitet sipas dëshirës.
Zgjerimi i gamës së tipave të nyjeve
Ky set nyjesh nuk mbulon të gjithë rastet e nevojshme për përdoruesin. Nyjet që planifikojmë të shtojmë janë:
- Nyja Script â transformon dhe vendos tĂ« dhĂ«nat duke pĂ«rdorur js dhe API-nĂ« pĂ«rkatĂ«se. Duke pĂ«rdorur kĂ«tĂ« lloj nyje, mund tĂ« krijoni diçka si skedarĂ«t pre-request dhe post-request nĂ« Postman.
- Nyja GraphQL â mbĂ«shtetje pĂ«r graphql
- Nyja Custom assertion â do tĂ« lejojĂ« zgjerimin e setit tĂ« assertion-ave ekzistuese nĂ« projekt
Natyrisht, ky nuk është një listë përfundimtare, ajo do të plotësohet vazhdimisht, përfshirë edhe feedback-un tuaj.
FAQ
ĂfarĂ« e dallon ju nga Postman?
- Koncepti i nodave që lejon praktisht një zgjerim të pakufizuar të funksionalitetit të projektit
- Formati i lexueshëm për njerëzit të projektit, duke e ruajtur atë në sistemin e skedarëve, që e lehtëson punën me sistemet e kontrollit të versioneve
- Mundësia e krijimit të testeve pa programim dhe mbështetje më e avancuar për js në redaktorin e testeve (plotësimi automatik, analizuesi statik)
- Plotësim automatik i avancuar dhe ndriçimi i vlerës aktuale të variablave
A është ky një produkt open-source?
Jo, në këtë moment kodet burimore janë të mbyllura, megjithatë në të ardhmen ne shikojmë mundësinë e hapjes së kodit burimor
Si jetoni ju?)
Përveç versionit falas, ne planifikojmë të lançojmë një version të paguar të produktit. Kjo do të përfshijë së pari gjërat që kërkojnë një pjesë serverike, për shembull, sinkronizimin.
Përfundim
Projekti ynë po ecën me hapa të mëdhenj drejt një lëshimi stabil. Megjithatë, tashmë produkti është në përdorim dhe vlerësimet pozitive nga përdoruesit tanë të hershëm e konfirmojnë këtë. Ne jemi aktivisht në mbledhjen e feedback-ut, sepse pa një bashkëpunim të ngushtë me komunitetin, është e pamundur të ndërtohet një mjet i mirë. Mund të na gjeni këtu:
Presim me padurim dëshirat dhe sugjerimet tuaja!
Burimi: habr.com
