Bakit mas mahusay ang TestMace kaysa sa Postman

Bakit mas mahusay ang TestMace kaysa sa Postman

Kumusta sa lahat, dito na kayo TestMace! Marahil maraming tao ang nakakaalam tungkol sa amin mula sa ng ating dati Artikulo. Para sa mga kakasali pa lang: gumagawa kami ng IDE para gumana sa TestMace API. Ang pinaka-madalas na itanong kapag inihambing ang TestMace sa mga nakikipagkumpitensyang produkto ay "Paano ka naiiba sa Postman?" Napagpasyahan namin na oras na para magbigay ng detalyadong sagot sa tanong na ito. Sa ibaba ay inilarawan namin ang aming mga pakinabang Kartero.

Paghahati sa mga node

Kung nagtatrabaho ka sa Postman, alam mo na ang interface ng kahilingan ay naglalaman ng lahat ng kinakailangang pag-andar. May mga script, pagsubok, at, sa katunayan, ang mga kahilingan mismo. Ginagawa nitong mas madali para sa mga nagsisimula, ngunit sa malalaking senaryo ay hindi flexible ang diskarteng ito. Paano kung gusto mong lumikha ng ilang mga query at magsagawa ng pagsasama-sama sa mga ito? Paano kung gusto mong magsagawa ng isang script nang walang kahilingan o ilang lohikal na pinaghihiwalay na mga script sa isang hilera? Pagkatapos ng lahat, magandang ideya na paghiwalayin ang mga pagsubok mula sa mga regular na script ng utility. Bilang karagdagan, ang diskarte na "idagdag ang lahat ng pag-andar sa isang node" ay hindi nasusukat - ang interface ay mabilis na na-overload.

Unang hinahati ng TestMace ang lahat ng functionality sa iba't ibang uri ng mga node. Gusto mo bang humingi ng kahilingan? Ito ay para sa iyo hakbang ng kahilingan node Gusto mo bang magsulat ng script? Ito ay para sa iyo script node Kailangan ng mga pagsubok? pakiusap - badya node Oh oo, maaari mo pa ring tapusin ang buong bagay na ito folder node At ang lahat ng ito ay madaling pagsamahin sa isa't isa. Ang diskarte na ito ay hindi lamang masyadong nababaluktot, ngunit din, alinsunod sa prinsipyo ng solong responsibilidad, ay nagbibigay-daan sa iyo na gamitin lamang kung ano ang talagang kailangan mo sa sandaling ito. Bakit kailangan ko ng mga script at pagsubok kung gusto ko lang mag-request?

Format ng proyektong nababasa ng tao

Mayroong isang konseptong pagkakaiba sa pagitan ng TestMace at Postman sa paraan ng pag-iimbak ng mga ito. Sa Postman, lahat ng mga kahilingan ay nakaimbak sa isang lugar sa lokal na imbakan. Kung may pangangailangang magbahagi ng mga kahilingan sa pagitan ng ilang user, kailangan mong gamitin ang built-in na pag-synchronize. Sa katunayan, ito ay isang pangkalahatang tinatanggap na diskarte, ngunit hindi nang walang mga kakulangan nito. Paano ang tungkol sa seguridad ng data? Pagkatapos ng lahat, maaaring hindi pinapayagan ng patakaran ng ilang kumpanya ang pag-iimbak ng data sa mga third party. Gayunpaman, sa tingin namin ay may mas magandang maiaalok ang TestMace! At ang pangalan ng pagpapahusay na ito ay "format ng proyektong nababasa ng tao."

Magsimula tayo sa katotohanan na sa TestMace, sa prinsipyo, mayroong isang entity na "proyekto". At ang application ay unang binuo na may mata sa pag-iimbak ng mga proyekto sa mga version control system: ang project tree ay halos one-on-one na naka-project sa file structure, yaml ay ginagamit bilang storage format (nang walang dagdag na bracket at comma), at ang Ang representasyon ng file ng bawat node ay inilarawan nang detalyado sa dokumentasyon na may mga komento. Ngunit sa karamihan ng mga kaso ay hindi ka titingin doon - lahat ng mga pangalan ng field ay may mga lohikal na pangalan.

Ano ang ibinibigay nito sa gumagamit? Nagbibigay-daan ito sa iyong baguhin ang daloy ng trabaho ng koponan nang napaka-flexible, gamit ang mga pamilyar na diskarte. Halimbawa, maaaring mag-imbak ang mga developer ng proyekto sa parehong repositoryo bilang backend. Sa mga sangay, bilang karagdagan sa pagpapalit ng mismong code base, maaaring itama ng developer ang mga umiiral nang query script at pagsubok. Pagkatapos gumawa ng mga pagbabago sa repository (git, svn, mercurial - anuman ang gusto mo), inilulunsad ng CI (iyong paborito, hindi ipinataw ng sinuman) ang aming console utility testmace-cli, at ang ulat na natanggap pagkatapos ng pagpapatupad (halimbawa, sa junit na format, na sinusuportahan din sa testmace-cli) ay ipinadala sa naaangkop na sistema. At ang nabanggit na isyu sa seguridad ay hindi na problema.

Gaya ng nakikita mo, hindi ipinapatupad ng TestMace ang ecosystem at paradigm nito. Sa halip, madali itong umaangkop sa mga naitatag na proseso.

Mga Dynamic na Variable

Sinusunod ng TestMace ang konseptong walang code: kung malulutas ang isang problema nang hindi gumagamit ng code, sinusubukan naming ibigay ang pagkakataong ito. Ang pagtatrabaho sa mga variable ay eksaktong uri ng pag-andar kung saan sa karamihan ng mga kaso ay magagawa mo nang walang programming.

Halimbawa: nakatanggap kami ng tugon mula sa server, at gusto naming i-save ang bahagi ng tugon sa isang variable. Sa Postman, sa isang test script (na kakaiba sa sarili nito) magsusulat kami ng tulad ng:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

Ngunit sa aming opinyon, ang pagsulat ng isang script para sa isang simple at madalas na ginagamit na senaryo ay mukhang kalabisan. Samakatuwid, sa TestMace posible na magtalaga ng isang piraso ng sagot sa isang variable gamit ang graphical na interface. Tingnan kung gaano ito kasimple:

Bakit mas mahusay ang TestMace kaysa sa Postman

At ngayon sa bawat kahilingan ay maa-update ang dynamic na variable na ito. Ngunit maaari kang tumutol, na nangangatwiran na ang diskarte sa Postman ay mas nababaluktot at nagbibigay-daan sa iyo hindi lamang upang gumawa ng isang pagtatalaga, ngunit din upang magsagawa ng ilang preprocessing. Narito kung paano baguhin ang nakaraang halimbawa:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

Well, para sa layuning ito ay mayroon ang TestMace script node, na sumasaklaw sa sitwasyong ito. Upang kopyahin ang nakaraang kaso, ngunit naisakatuparan na ng TestMace, kailangan mong lumikha ng isang script node kasunod ng kahilingan at gamitin ang sumusunod na code bilang isang script:

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

Tulad ng makikita mo, ang komposisyon ng mga node ay mahusay din dito. At para sa isang simpleng kaso tulad ng inilarawan sa itaas, maaari mo lamang italaga ang expression ${crypto.MD5($response.data)} variable na nilikha sa pamamagitan ng GUI!

Paglikha ng mga pagsubok sa pamamagitan ng GUI

Pinapayagan ka ng Postman na lumikha ng mga pagsubok sa pamamagitan ng pagsulat ng mga script (sa kaso ng Postman, ito ay JavaScript). Ang diskarte na ito ay may maraming mga pakinabang - halos walang limitasyong kakayahang umangkop, pagkakaroon ng mga handa na solusyon, atbp.

Gayunpaman, ang katotohanan ay madalas na ganoon (hindi kami ganoon, ang buhay ay ganoon) na ang isang tester ay walang mga kasanayan sa programming, ngunit nais niyang magdala ng benepisyo sa koponan sa ngayon. Para sa mga ganitong kaso, kasunod ng konseptong walang code, pinapayagan ka ng TestMace na lumikha ng mga simpleng pagsubok sa pamamagitan ng isang GUI nang hindi gumagamit ng pagsulat ng mga script. Narito, halimbawa, kung ano ang hitsura ng proseso ng paglikha ng isang pagsubok na naghahambing ng mga halaga para sa pagkakapantay-pantay:

Bakit mas mahusay ang TestMace kaysa sa Postman

Gayunpaman, ang paglikha ng mga pagsubok sa isang graphical na editor ay hindi nag-aalis ng posibilidad pagsulat ng mga pagsusulit sa code. Ang lahat ng parehong mga aklatan ay narito tulad ng sa script node, at Chai para sa mga pagsusulit sa pagsulat.

Ang mga sitwasyon ay madalas na lumitaw kapag ang isang partikular na query o kahit isang buong script ay kailangang isagawa nang maraming beses sa iba't ibang bahagi ng proyekto. Ang isang halimbawa ng mga naturang kahilingan ay maaaring custom na multi-stage na awtorisasyon, na nagdadala sa kapaligiran sa gustong estado, atbp. Sa pangkalahatan, sa pagsasalita sa mga tuntunin ng mga programming language, gusto naming magkaroon ng mga function na maaaring magamit muli sa iba't ibang bahagi ng application. Sa TestMace ang function na ito ay ginagampanan ng link node Napakadaling gamitin:
1) lumikha ng isang query o script
2) lumikha ng isang node ng uri ng Link
3) sa mga parameter, tukuyin ang isang link sa script na ginawa sa unang hakbang

Sa isang mas advanced na bersyon, maaari mong tukuyin kung aling mga dynamic na variable mula sa script ang ipapasa sa mas mataas na antas na nauugnay sa link. Nakakalito ang tunog? Sabihin nating gumawa kami ng Folder na may pangalan lumikha-post, kung saan nakatalaga ang isang dynamic na variable sa node na ito postId. Ngayon ay nasa Link node lumikha-post-link maaari mong tahasang tukuyin na ang variable postId itinalaga sa isang ninuno lumikha-post-link. Ang mekanismong ito (muli, sa programming language) ay maaaring gamitin upang ibalik ang isang resulta mula sa isang "function". Sa pangkalahatan, maganda ito, puspusan na ang DRY at muli, wala ni isang linya ng code ang nasira.

Bakit mas mahusay ang TestMace kaysa sa Postman

Tulad ng para sa Postman, mayroong isang tampok na kahilingan para sa muling paggamit ng mga kahilingan nakabitin mula noong 2015, at parang meron din ilang pahiwatigna ginagawa nila ang problemang ito. Sa kasalukuyang anyo nito, ang Postman, siyempre, ay may kakayahang baguhin ang thread ng pagpapatupad, na sa teorya ay malamang na ginagawang posible na ipatupad ang katulad na pag-uugali, ngunit ito ay higit pa sa isang maruming hack kaysa sa isang tunay na diskarte sa pagtatrabaho.

Iba pang mga pagkakaiba

  • Higit na kontrol sa saklaw ng mga variable. Ang pinakamaliit na saklaw kung saan maaaring tukuyin ang isang variable sa Postman ay koleksyon. Pinapayagan ka ng TestMace na tukuyin ang mga variable para sa anumang query o folder. Sa Postman Share koleksyon ay nagbibigay-daan sa iyo upang i-export lamang ang mga koleksyon, habang sa TestMace pagbabahagi ay gumagana para sa anumang node
  • Sinusuportahan ng TestMace namamana na mga header, na maaaring palitan sa mga child query bilang default. Ang postman ay may isang bagay tungkol dito: ang gawain, at sarado pa nga ito, ngunit inaalok ito bilang solusyon... gumamit ng mga script. Sa TestMace, lahat ito ay na-configure sa pamamagitan ng GUI at mayroong opsyon na opsyonal na huwag paganahin ang mga minanang header sa mga partikular na inapo
  • I-undo/I-redo. Gumagana hindi lamang kapag nag-e-edit ng mga node, kundi pati na rin kapag gumagalaw, nagtatanggal, nagpapalit ng pangalan at iba pang mga operasyon na nagbabago sa istraktura ng proyekto
  • Ang mga file na naka-attach sa mga kahilingan ay naging bahagi ng proyekto at iniimbak kasama nito, habang perpektong naka-synchronize, hindi katulad ng Postman. (Oo, hindi mo na kailangang manu-manong pumili ng mga file sa tuwing sisimulan mo at ilipat ang mga ito sa mga kasamahan sa mga archive)

Mga tampok na nasa daan na

Hindi namin napigilan ang tuksong alisin ang belo ng lihim sa mga susunod na release, lalo na kapag ang functionality ay napakasarap at sumasailalim na sa pre-release polishing. Kaya, magkita tayo.

Pag-andar

Tulad ng alam mo, ang Postman ay gumagamit ng tinatawag na mga dynamic na variable upang makabuo ng mga halaga. Ang listahan ng mga ito ay kahanga-hanga at ang karamihan sa mga function ay ginagamit upang makabuo ng mga pekeng halaga. Halimbawa, upang makabuo ng random na email kailangan mong isulat:

{{$randomEmail}}

Gayunpaman, dahil ang mga ito ay mga variable (bagaman pabago-bago), hindi sila maaaring gamitin bilang mga function: hindi sila naa-parameter, samakatuwid hindi posible na kumuha ng hash mula sa isang string.

Plano naming magdagdag ng mga "tapat" na function sa TestMace. Sa loob mismo ng ${} magiging posible hindi lamang ang pag-access sa isang variable, kundi pati na rin ang pagtawag ng isang function. Yung. kung kailangan mong bumuo ng kilalang-kilala na pekeng email, magsusulat lang kami

${faker.internet.email()}

Bilang karagdagan sa katotohanan na ito ay isang function, mapapansin mo na posible na tumawag ng isang paraan sa isang bagay. At sa halip na isang malaking patag na listahan ng mga dynamic na variable, mayroon kaming isang hanay ng mga lohikal na nakapangkat na mga bagay.

Paano kung gusto nating kalkulahin ang hash ng isang string? Madali lang!

${crypto.MD5($dynamicVar.data)}

Mapapansin mo na maaari mo ring ipasa ang mga variable bilang mga parameter! Sa puntong ito, maaaring maghinala ang isang matanong na mambabasa na may mali...

Paggamit ng JavaScript sa Mga Expression

... At sa magandang dahilan! Kapag ang mga kinakailangan para sa mga function ay nabuo, kami ay biglang dumating sa konklusyon na ang wastong javascript ay dapat na nakasulat sa mga expression. Kaya ngayon ay malaya kang magsulat ng mga expression tulad ng:

${1 + '' + crypto.MD5('asdf')}

At lahat ng ito nang walang mga script, sa mismong mga input field!

Tulad ng para sa Postman, dito maaari ka lamang gumamit ng mga variable, at kapag sinubukan mong isulat ang pinakamaliit na expression, ang validator ay nagmumura at tumangging kalkulahin ito.

Bakit mas mahusay ang TestMace kaysa sa Postman

Advanced na autocompletion

Sa kasalukuyan ang TestMace ay may karaniwang autocompletion na ganito ang hitsura:

Bakit mas mahusay ang TestMace kaysa sa Postman

Dito, bilang karagdagan sa auto-complete na linya, ipinapahiwatig kung saan kabilang ang linyang ito. Gumagana lang ang mekanismong ito sa mga expression na napapalibutan ng mga bracket na ${}.

Tulad ng nakikita mo, naidagdag ang mga visual na marker na nagpapahiwatig ng uri ng variable (halimbawa, string, numero, array, atbp.). Maaari mo ring baguhin ang mga mode ng autocompletion (halimbawa, maaari mong piliin ang autocompletion na may mga variable o header). Ngunit kahit na ito ay hindi ang pinakamahalagang bagay!

Una, gumagana ang autocompletion kahit sa mga expression (kung posible). Ito ang hitsura nito:

Bakit mas mahusay ang TestMace kaysa sa Postman

At pangalawa, available na ngayon ang autocompletion sa mga script. Tingnan kung paano ito gumagana!

Bakit mas mahusay ang TestMace kaysa sa Postman

Walang punto sa paghahambing ng pag-andar na ito sa Postman - ang autocompletion doon ay limitado lamang sa mga static na listahan ng mga variable, header at kanilang mga halaga (itama ako kung may nakalimutan ako). Hindi autocompleted ang mga script :)

Konklusyon

Ang Oktubre ay minarkahan ng isang taon mula nang magsimula ang aming pagbuo ng produkto. Sa panahong ito, nakagawa kami ng maraming bagay at, sa ilang aspeto, naabutan namin ang aming mga kakumpitensya. Ngunit anuman ang mangyari, ang aming layunin ay gumawa ng isang tunay na maginhawang tool para sa pagtatrabaho sa mga API. Marami pa kaming dapat gawin, narito ang isang magaspang na plano para sa pagbuo ng aming proyekto para sa darating na taon: https://testmace.com/roadmap.

Ang iyong feedback ay magbibigay-daan sa amin upang mas mahusay na mag-navigate sa kasaganaan ng mga tampok, at ang iyong suporta ay nagbibigay sa amin ng lakas at kumpiyansa na ginagawa namin ang tama. Nagkataon na ngayon ay isang mahalagang araw para sa aming proyekto - ang araw na na-publish ang TestMace ProductHunt. Mangyaring suportahan ang aming proyekto, ito ay napakahalaga sa amin. Bukod dito, mayroong isang mapang-akit na alok sa aming pahina ng PH ngayon, at ito ay limitado

Pinagmulan: www.habr.com

Magdagdag ng komento