
Përshëndetje të gjithëve ! E mundshme, shumë prej jush na njohin nga . Për ata që sapo u bashkuan: ne po zhvillojmë një IDE për të punuar me API TestMace. Pyetja më e shpeshtë kur krahasojmë TestMace me produktet konkuruese është - «Çfarë ju diferencojnë nga Postman?». Ne vendosëm që është koha t'i japim një përgjigje të detajuar kësaj pyetje. Më poshtë, kemi renditur përfitimet tona përpara .
Ndarja në nyje
Nëse punoni me Postman, e dini se ndërfaqja e kërkesës përmban të gjitha funksionalitetet e nevojshme. Ky është skriptet, testet dhe vetë kërkesat. Kjo e bën punën më të lehtë për fillestarët, megjithatë, skenarët e mëdhenj e bëjnë këtë qasje jo fleksibile. Çfarë nëse dëshiron të krijosh disa kërkesa dhe të bësh agregim mbi to? Çfarë nëse dëshiron të ekzekutosh një skript pa kërkesë ose disa skripte të ndara logjikisht njëri pas tjetrit? Fundja, do të ishte mirë të ndaheshin testet nga skriptet e zakonshme utilitare. Përveç kësaj, qasja e «shtimit të gjithë funksionalitetit në një nyje» është e pa shkallëzuar - ndërfaqja shpejt bëhet e ngarkuar.
TestMace fillimisht ndan të gjithë funksionalitetin në tipa të ndryshëm nyjesh. Dëshiron të bësh një kërkesë? Ja një nyje. Dëshiron të shkruash një skript? Ja një nyje. Këto janë testet? Ju lutemi - nyje. Ah, po, ju gjithashtu mund të mbështillni të gjithë këtë në një nyje. Dhe të gjithë këto kombinohen lehtë me njëri-tjetrin. Kjo qasje jo vetëm që është shumë fleksibile, por në përputhje me parimin e përgjegjësisë unike, lejon të përdoret vetëm ajo që ju nevojitet në këtë moment. Pse të jem i interesuar për skripte dhe teste, nëse thjesht dua të bëj një kërkesë?
Formati i lexueshëm për njeri
Mes TestMace dhe Postman ka një dallim konceptual në mënyrën e ruajtjes. Në Postman të gjitha kërkesat ruhen diku në një depo lokale. Nëse ka nevojë të ndahen kërkesat midis disa përdoruesve, duhet të përdorni sinkronizimin e integruar. Në të vërtetë, kjo është një qasje e pranuar gjerësisht, por jo pa disavantazhe. Çfarë do të thotë siguria e të dhënave? Politika e disa kompanive mund të mos lejojë ruajtjen e të dhënave te palët e treta. Megjithatë, ne besojmë se TestMace mund të ofrojë diçka më të mirë! Dhe emri i këtij përmirësimi është «formati i lexueshëm për projektin».
Le të fillojmë me faktin se në TestMace ekziston një entitet "projekt". Dhe aplikacioni nga fillimi është zhvilluar me qëllim ruajtjen e projekteve në sistemet e kontrollit të versioneve: struktura e projektit projektohet praktikisht një në një në strukturën e skedarëve, formati i ruajtjes është yaml (pa paranteza dhe presje të tepërta), dhe përfaqësimi i skedarëve të çdo nyje është detajuar në dokumentacion me komente. Por në shumicën e rasteve ju nuk do të shikoni atje — të gjitha emrat e fushave kanë emra logjikë.
Çfarë i ofron kjo përdoruesit? Kjo i lejon të ndryshojnë shumë fleksibël rrjedhën e punës së ekipit, duke përdorur qasjet e zakonshme. Për shembull, zhvilluesit mund të ruajnë projektin në të njëjtin repository si backend. Në degët, përveç se të ndryshohet direkt baza e kodit, zhvilluesi mund të rregullojë skenarët e kërkesave dhe testet ekzistuese. Pas regjistrimit të ndryshimeve në repository (git, svn, mercurial — çfarëdo që ju pëlqen më shumë) CI (e preferuara juaj, e cila nuk është e impozume nga askush) nis utilitarin tonë të konsolës , dhe raporti i marrë pas ekzekutimit (për shembull, në formatin junit, i cili gjithashtu mbështetet në testmace-cli) dërgohet në sistemin përkatës. Edhe pyetja e lartpërmendur mbi sigurinë tashmë nuk përbën një problem.
Siç e shihni, TestMace nuk imposon ekosistemin dhe parimin e saj. Në vend të kësaj, ajo lehtë integrohet në proceset tashmë të vendosura.
Variablat dinamikë
TestMace ndjek konceptin no-code: nëse problemi mund të zgjidhet pa përdorur kod, ne përpiqemi të ofrojmë një mundësi për këtë. Puna me variablat është pikërisht funksionaliteti ku në shumicën e rasteve mund të shkojmë pa programim.
Shembuj: na erdhi një përgjigje nga serveri, dhe ne duam të ruajmë një pjesë të përgjigjes në një variabël. Në Postman do të shkruanim diçka në scriptin e testit (që vetë është e çuditshme) diçka në frymën e:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);Por sipas mendimit tonë, shkruajta e një skripti për një skenar kaq të thjeshtë dhe shumë të përdorur duket e tepërt. Prandaj në TestMace ka mundësi për t'i dhënë një variabli një copë përgjigjeje, duke përdorur ndërfaqen grafike. Shikoni sa e thjeshtë është:

Dhe tani, me çdo kërkesë, kjo variabël dinamike do të përditësohet. Por ju mund të kundërshtoni, argumentoni se qasja e Postman-it është më fleksible dhe lejon jo vetëm të bëni një caktim, por gjithashtu të kryeni disa përpunime paraprake. Ja se si mund të modifikoni shembullin e mëparshëm:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));Mirë, për këtë në TestMace ka një nyje, e cila mbulon këtë skenar. Për të riprodhuar rastin e mëparshëm, por tashmë në ekzekutimin e TestMace, është e nevojshme pas kërkesës të krijoni një nyje script dhe si skenar të përdorni kodin e mëposhtëm:
const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));Siç e shihni, kompozita e nyjeve këtu ka ndihmuar shumë. Dhe për një rast të tillë të thjeshtë, siç është përshkruar më lart, mund të thjesht caktoni shprehjen ${crypto.MD5($response.data)} si një variabël, e krijuar përmes ndërfaqes grafike!
Krijimi i testeve përmes GUI
Postman lejon krijimin e testeve duke shkruar skenarë (në rastin e Postman-it, kjo është JavaScript). Ky qasje ka shumë përfitime - fleksibilitet praktikisht të pakufizuar, praninë e zgjidhjeve të gatshme, etj.
Megjithatë, realitetet shpesh janë të tilla (nuk jemi ne, është jeta e tillë), që testiuesi nuk ka aftësi programimi, dhe skuadra do të dëshironte që të kontribuante tashmë. Për këto raste, duke ndjekur konceptin e no-code, TestMace lejon krijimin e testeve të thjeshta përmes ndërfaqes grafike, pa nevojën për të shkruar skenarë. Ja si duket procesi i krijimit të një testi që krahasohet vlerat për barazim:

Megjithatë, krijimi i testeve në redaktorin grafik nuk e anullon mundësinë . Këtu janë të njëjtat biblioteka si në nyjen script, dhe për shkruajtjen e testeve.
Mundësia për të ekzekutuar një skenar ekzistues përmes lidhjes (nyje Link)
Shpesh ndodhin situata të tilla, kur një kërkesë ose madje një skenar i tërë duhet të ekzekutohet disa herë në pjesë të ndryshme të projektit. Një shembull i tillë kërkesash mund të jetë autorizimi shumë-hapa i personalizuar, vendosja e mjedisit në gjendjen e nevojshme, etj. Në përgjithësi, nëse flasim në terminologjinë e gjuhëve të programimit, do të dëshironim të kishim funksione që mund të rishfrytëzohen në pjesë të ndryshme të aplikacionit. Në TestMace, kjo funksion ekzekutohet Nod. E shumë e lehtë ta përdorësh:
1) krijo një kërkesë ose skenar
2) krijo një nod të tipit Link
3) në parametrat specifiko lidhjen me skenarin e krijuar në hapin e parë
Në një variant më të avancuar, mund të specifikosh se cilat variabla dinamike nga skenari të kalohen në nivelin më lart në lidhje me lidhjen. Tingëllon konfuz? Supozoni se kemi krijuar një Folder me emrin create-post, brenda të cilit përcaktohet një variabël dinamike postId. Tani në nodin Link create-post-link mund të specifikosh qartë që variabla postId të caktohet prindit create-post-link. Ky mekanizëm (përsëri, duke folur në mënyrë programore) mund të përdoret për të kthyer rezultatin nga "funksioni". Në përgjithësi, është ndryshe, DRY në gjithë shkallën dhe përsëri asnjë rresht kodi nuk ka pësuar dëme.

Sa i përket Postman, kërkesa për veçori për ripërdorimin e kërkesave , dhe duket se ka , që ky problem po studiohet. Në formën aktuale, Postman sigurisht ka mundësinë për të ndryshuar rrjedhën e ekzekutimit, e cila, në teori, ndoshta lejon të realizohet një sjellje të tillë, por kjo është më shumë një mashtrim i papastër sesa një qasje e vërtetë.
Dallime të tjera
- Kontroll më të madh mbi fushën e dukshmërisë së variablave. Skopeza më e vogël brenda së cilës mund të caktosh një variabël në Postman është koleksioni. TestMace lejon të përcaktosh variablat për çdo kërkesë ose dosje. Në Postman, ndarja e koleksionit lejon eksportimin vetëm të koleksioneve, ndërsa në TestMace, ndarja funksionon për çdo nod.
- TestMace mbështet , të cilat sipas parashikimit mund të futen në kërkesat fëmijë. Në këtë drejtim, Postman ka , dhe madje është mbyllur, por si zgjidhje propozohet… . Në TestMace, gjithçka konfigurohet përmes GUI dhe ka mundësinë e çaktivizimit opsional të titujve trashëgues në trashëgimtarët specifik.
- Undo/Rredo. Funksionon jo vetëm kur redaktohen nodet, por edhe kur lëvizen, fshihen, rinjosen dhe në operacione të tjera që ndryshojnë strukturën e projektit.
- Skedarët e lidhur me kërkesat bëhen pjesë e projektit dhe ruhen së bashku me të, duke u sinkronizuar mirë, për dallim nga Postman. (Po, nuk është më e nevojshme që çdo herë të zgjedhësh skedarë manualisht çdo herë që starton dhe t’i kalosh kolegëve në arkiva).
Veçoritë që janë në rrugë
Nuk mundëm të qëndrojmë pa zbuluar disa detaje në lidhje me lansimet e ardhshme, veçanërisht kur funksionaliteti është shumë atraktiv dhe tashmë po kalon përpunimin para-lansimit. Pra, mirëseardhje.
Funksionet
Siç dihet, për të gjeneruar vlera në Postman përdoren variablat e ashtuquajtur dinamikë. dhe shumica e funksioneve shërbejnë për gjenerimin e vlerave false. Për shembull, për të gjeneruar një email rastësor, duhet të shkruhet:
{{$randomEmail}}Megjithatë, sepse këto janë variabla (edhe pse dinamike), ato nuk mund të përdoren si funksione: ato nuk mund të parametrizohen, prandaj nuk mund të merret hash nga një string.
Në TestMace planifikojmë të shtojmë funksione "të ndershme". Brenda ${} do të jetë e mundur jo vetëm të referohesh në një variabël, por edhe të thërrasësh një funksion. Kështu, nëse nevojitet të gjenerojmë atë emailin e njohur fals, ne thjesht do të shkruajmë
${faker.internet.email()}Për më tepër, kjo është një funksion, mund të vërehet se ka mundësinë e thirrjes së metodës së një objekti. Dhe në vend të një liste të madhe të planit të variablave dinamikë, ne kemi një grup objektesh që janë logjikisht të grumbulluara.
Po nëse duam të llogarisim hash nga një string? Lehtë!
${crypto.MD5($dynamicVar.data)}Mund të vërehet se si parametra është mundësia për të kaluar edhe variabla! Në këtë pikë, lexuesi kurioz mund të dyshojë…
Përdorimi i JavaScript në shprehje
... Dhe pa dyshim! Kur kërkesat për funksionet u formuluan, arritëm në përfundimin se në shprehje duhej të lejohej shkruajta JavaScript të vlefshëm. Prandaj tani jeni të lirë të shkruani shprehje në stilin e:
${1 + '' + crypto.MD5('asdf')}Dhe gjithë kjo pa skripta direkt në fushat e hyrjes!
Sa i përket Postman, këtu mund të përdoren vetëm variablat, dhe, kur përpiqeni të shkruani një shprehje të vogël, validuesi ankohet dhe refuzon ta llogarisë atë.
![]()
Plotësimi i avancuar
Aktualisht, TestMace ka plotësimin standard që duket si më poshtë:

Këtu, përveç stringut të plotësuar, shikohet se për çfarë i përket ky string. Ky mekanizëm funksionon vetëm në shprehjet që janë rrethuar nga parentesat ${}.
Si mund të vëreni, janë shtuar shenjat vizuale që tregojnë llojin e variablit (p.sh., varg, numër, array, etj.). Gjithashtu, mund të ndryshoni modulet e autokompensimit (p.sh., mund të zgjidhni autokompensimin me variabla ose tituj). Por as kjo nuk është më e rëndësishmja!
Së pari, autokompensimi funksionon edhe në shprehje (ku është e mundur). Këtu është si duket:

Dhe së dyti, tani autokompensimi është i disponueshëm edhe në skriptet. Holloni vështrimin, si funksionon!

Nuk ka kuptim të krahasohet ky funksionalitet me Postman — atje autokompensimi kufizohet vetëm në lista statike të variablave, titujve dhe vlerave të tyre (më korrigjoni nëse kam harruar diçka). Skriptet nuk autokompensohen 🙁
Përfundim
Në tetor kaloi një vit nga fillimi i zhvillimit të produktit tonë. Gjatë kësaj kohe, kemi arritur të bëjmë shumë gjëra dhe në disa aspekte kemi arritur konkurrencën tonë. Por, siç ndodhi, qëllimi ynë është të krijojmë një mjet të vërtetë të përzgjedhur për punën me API. Na mbetet ende shumë punë, ja një plan afatgjatë për zhvillimin e projektit tonë në vitin e ardhshëm: .
Përvoja juaj do të na ndihmojë të orientoheni më mirë në shumicën e veçorive, dhe mbështetja juaj na jep forcë dhe besim në atë që bëjmë. Siç doli, sot është një ditë e rëndësishme për projektin tonë — dita e publikimit të TestMace në . Ju lutemi mbështetni projektin tonë, kjo është shumë e rëndësishme për ne. Sidomos tani që në faqen tonë në PH ka një ofertë tërheqëse, e cila është e kufizuar.
Burimi: habr.com
