Wêrom TestMace is better as Postman

Wêrom TestMace is better as Postman

Hallo allegear, hjir geane jo TestMace! Miskien in protte minsken witte oer ús út fan ús foarige artikels. Foar dyjingen dy't krekt lid binne: wy ûntwikkelje in IDE om te wurkjen mei de TestMace API. De meast stelde fraach by it fergelykjen fan TestMace mei konkurrearjende produkten is "Hoe binne jo oars as Postman?" Wy besletten dat it tiid wie om in detaillearre antwurd op dizze fraach te jaan. Hjirûnder hawwe wy sketst ús foardielen boppe Postrinner.

Splitting yn knopen

As jo ​​wurkje mei Postman, dan wite jo dat de oanfraachynterface alle nedige funksjonaliteit befettet. D'r binne skripts, tests, en, yn feite, de oanfragen sels. Dit makket it makliker foar begjinners, mar yn grutte senario's is dizze oanpak net fleksibel. Wat as jo ferskate query's wolle oanmeitsje en dêr aggregaasje op útfiere? Wat as jo in skript wolle útfiere sûnder in fersyk of ferskate logysk skieden skripts op in rige? It soe ommers in goed idee wêze om tests te skieden fan reguliere nutskripts. Derneist is de "foegje alle funksjonaliteit yn ien knooppunt ta" oanpak net skalberber - de ynterface wurdt gau oerladen.

TestMace dielt yn earste ynstânsje alle funksjonaliteit yn ferskate soarten knopen. Wolle jo in fersyk dwaan? It is foar dy fersyk stap node Wolle jo in skript skriuwe? It is foar dy skrift node Tests nedich? Asjebleaft - Bewearing node O ja, jo kinne dit alles noch ynpakke folder node En dit alles kin maklik wurde kombinearre mei elkoar. Dizze oanpak is net allinich heul fleksibel, mar ek, yn oerienstimming mei it prinsipe fan ienige ferantwurdlikens, kinne jo allinich brûke wat jo op it stuit echt nedich binne. Wêrom haw ik skripts en tests nedich as ik gewoan in fersyk dwaan wol?

Human-lêsber projektformaat

D'r is in konseptueel ferskil tusken TestMace en Postman yn 'e manier wêrop se wurde opslein. Yn Postman wurde alle oanfragen earne opslein yn lokale opslach. As der ferlet is om oanfragen te dielen tusken ferskate brûkers, dan moatte jo de ynboude syngronisaasje brûke. Yn feite is dit in algemien akseptearre oanpak, mar net sûnder syn neidielen. Hoe sit it mei gegevensfeiligens? Ommers, it belied fan guon bedriuwen kin net tastean gegevens opslaan by tredden. Wy tinke lykwols dat TestMace wat betters te bieden hat! En de namme fan dizze ferbettering is "minsklik lêsber projektformaat."

Litte wy begjinne mei it feit dat yn TestMace, yn prinsipe, in "projekt" entiteit is. En de applikaasje waard yn earste ynstânsje ûntwikkele mei it each op it opslaan fan projekten yn ferzjekontrôlesystemen: de projektbeam wurdt hast ien-op-ien projektearre op 'e triemstruktuer, yaml wurdt brûkt as opslachformaat (sûnder ekstra heakjes en komma's), en de applikaasje triemfertsjintwurdiging fan elke knooppunt wurdt yn detail beskreaun yn 'e dokumintaasje mei opmerkingen. Mar yn 'e measte gefallen sille jo dêr net sjen - alle fjildnammen hawwe logyske nammen.

Wat jout dit de brûker? Hjirmei kinne jo de wurkstream fan it team heul fleksibel feroarje, mei fertroude oanpak. Bygelyks kinne ûntwikkelders in projekt opslaan yn deselde repository as de backend. Yn tûken, neist it feroarjen fan de koadebasis sels, kin de ûntwikkelder besteande query-skripts en tests korrigearje. Nei it ynbringen fan wizigingen yn it repository (git, svn, mercurial - wat jo it bêste fine), lanseart CI (jo favorite, net oplein troch ien) ús konsole-hulpprogramma testmace-cli, en it rapport ûntfongen nei útfiering (bygelyks yn junit-formaat, dat ek stipe wurdt yn testmace-cli) wurdt stjoerd nei it passende systeem. En it hjirboppe neamde feiligensprobleem is gjin probleem mear.

Lykas jo kinne sjen, stelt TestMace syn ekosysteem en paradigma net op. Ynstee past it maklik yn fêstige prosessen.

Dynamyske fariabelen

TestMace folget it konsept sûnder koade: as in probleem kin wurde oplost sûnder koade te brûken, besykje wy dizze kâns te jaan. Wurkje mei fariabelen is krekt it soarte funksjonaliteit wêr't jo yn 'e measte gefallen sûnder programmearje kinne.

Foarbyld: wy krigen in antwurd fan de tsjinner, en wy wolle in part fan it antwurd bewarje yn in fariabele. Yn Postman soene wy ​​yn in proefskrift (dat op himsels nuver is) soksawat skriuwe as:

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

Mar neffens ús liket it skriuwen fan in skript foar sa'n ienfâldich en faak brûkt senario oerstallich. Dêrom, yn TestMace is it mooglik om tawize in stik fan it antwurd oan in fariabele mei help fan de grafyske ynterface. Sjoch hoe ienfâldich it is:

Wêrom TestMace is better as Postman

En no mei elk fersyk sil dizze dynamyske fariabele wurde bywurke. Mar jo kinne beswier meitsje, mei it argumint dat de Postman-oanpak fleksibeler is en jo net allinich in opdracht meitsje kinne, mar ek wat foarferwurking útfiere. Hjir is hoe't jo it foarige foarbyld feroarje:

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

No, foar dit doel hat TestMace skrift node, dy't covers dit senario. Om it foarige gefal te reprodusearjen, mar al útfierd troch TestMace, moatte jo in skriptknooppunt oanmeitsje nei it fersyk en de folgjende koade brûke as skript:

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

Sa't jo sjen kinne, tsjinne de gearstalling fan 'e knopen hjir ek goed. En foar sa'n ienfâldige gefal as hjirboppe beskreaun, kinne jo de útdrukking gewoan tawize ${crypto.MD5($response.data)} fariabele makke fia de GUI!

Tests meitsje fia GUI

Postman lit jo testen meitsje troch skripts te skriuwen (yn it gefal fan Postman is dit JavaScript). Dizze oanpak hat in protte foardielen - hast ûnbeheinde fleksibiliteit, beskikberens fan klearmakke oplossingen, ensfh.

De realiteit is lykwols faaks sa (wy binne net sa, it libben is sa) dat in tester gjin programmearfeardigens hat, mar hy wol op dit stuit foardiel bringe oan it team. Foar sokke gefallen, nei it konsept fan gjin koade, kinne TestMace jo ienfâldige tests meitsje fia in GUI sûnder taflecht te nimmen ta it skriuwen fan skripts. Hjir is bygelyks hoe it proses fan it meitsjen fan in test dy't wearden fergeliket foar gelikensens derút sjocht:

Wêrom TestMace is better as Postman

It meitsjen fan tests yn in grafyske bewurker elimineert de mooglikheid lykwols net skriuwen tests yn koade. Alle deselde biblioteken binne hjir as yn it skript node, en chai foar it skriuwen fan toetsen.

Situaasjes ûntsteane faak as in bepaalde fraach of sels in folslein skript ferskate kearen útfierd wurde moat yn ferskate dielen fan it projekt. In foarbyld fan sokke oanfragen kin oanpaste meartalige autorisaasje wêze, it miljeu yn 'e winske steat bringe, ensfh. Yn 't algemien, sprutsen yn termen fan programmeartalen, wolle wy funksjes hawwe dy't kinne wurde opnij brûkt yn ferskate dielen fan' e applikaasje. Yn TestMace dizze funksje wurdt útfierd troch link node It is heul ienfâldich te brûken:
1) meitsje in query of skript
2) meitsje in knooppunt fan type Link
3) spesifisearje yn 'e parameters in keppeling nei it skript makke yn' e earste stap

Yn in mear avansearre ferzje kinne jo opjaan hokker dynamyske fariabelen út it skript wurde trochjûn nei in heger nivo relatyf oan de keppeling. Sound betiizjend? Litte wy sizze dat wy in map makke hawwe mei de namme meitsje-post, wêryn in dynamyske fariabele wurdt tawiisd oan dit knooppunt postId. No yn Link node meitsje-post-link jo kinne eksplisyt oantsjutte dat de fariabele postId oan in foarfaar tawiisd meitsje-post-link. Dit meganisme (wer, yn programmeartaal) kin brûkt wurde om in resultaat fan in "funksje" werom te jaan. Yn it algemien, it is cool, DRY is yn folle gong en wer net ien rigel fan koade waard skansearre.

Wêrom TestMace is better as Postman

Wat Postman oanbelanget, is d'r in funksjefersyk foar it opnij brûken fan fersiken hinget sûnt 2015, en it liket der sels guon hintsdat se wurkje oan dit probleem. Yn syn hjoeddeistige foarm hat Postman fansels de mooglikheid om de tried fan útfiering te feroarjen, wat yn teory wierskynlik it mooglik makket om ferlykber gedrach út te fieren, mar dit is mear in smoarge hack as in echt wurkjende oanpak.

Oare ferskillen

  • Gruttere kontrôle oer de omfang fan fariabelen. De lytste omfang wêryn in fariabele kin wurde definiearre yn Postman is kolleksje. TestMace lit jo fariabelen definiearje foar elke query of map. Yn Postman Share-kolleksje kinne jo allinich kolleksjes eksportearje, wylst yn TestMace dielen wurket foar elke knooppunt
  • TestMace stipet erflike kopteksten, dy't standert kinne wurde ferfongen yn bernfragen. Postman hat hjir wat oer: in taak, en it is sels sluten, mar it wurdt oanbean as in oplossing ... brûke skripts. Yn TestMace is dit allegear konfigureare fia de GUI en d'r is in opsje om erfde kopteksten yn spesifike neiteam opsjoneel út te skeakeljen
  • Ungedien meitsje / opnij dwaan. Wurket net allinich by it bewurkjen fan knopen, mar ek by it ferpleatsen, wiskjen, omneame en oare operaasjes dy't de struktuer fan it projekt feroarje
  • Bestannen taheakke oan oanfragen wurde diel fan it projekt en wurde dêrmei opslein, wylst se perfekt syngronisearre binne, yn tsjinstelling ta Postman. (Ja, jo hoege net mear bestannen manuell te selektearjen elke kear as jo begjinne en oerdrage oan kollega's yn argiven)

Funksjes dy't al op 'e wei

Wy koenen de ferlieding net wjerstean om de sluier fan geheimhâlding op te heffen oer de folgjende releases, foaral as de funksjonaliteit heul lekker is en al foarôfgeande polearjen ûndergiet. Dus, lit ús moetsje.

Funksjes

Lykas jo witte, brûkt Postman saneamde dynamyske fariabelen om wearden te generearjen. De list fan harren is yndrukwekkend en de grutte mearderheid fan funksjes wurde brûkt om falske wearden te generearjen. Bygelyks, om in willekeurige e-post te generearjen moatte jo skriuwe:

{{$randomEmail}}

Om't dit fariabelen binne (hoewol dynamysk), kinne se lykwols net brûkt wurde as funksjes: se binne net te parametreerjen, dêrom sil it net mooglik wêze om in hash út in tekenrige te nimmen.

Wy binne fan plan om "earlike" funksjes ta te foegjen oan TestMace. Rjochts binnen ${} sil it mooglik wêze om net allinich tagong te krijen ta in fariabele, mar ek in funksje oproppe. Dy. as jo de beruchte falske e-post moatte generearje, sille wy gewoan skriuwe

${faker.internet.email()}

Neist it feit dat it in funksje is, sille jo merke dat it mooglik is om in metoade op in objekt te neamen. En ynstee fan in grutte platte list fan dynamyske fariabelen, wy hawwe in set fan logysk groepearre objekten.

Wat as wy de hash fan in tekenrige wolle berekkenje? Maklik!

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

Jo sille merke dat jo sels fariabelen kinne trochjaan as parameters! Op dit punt kin in nijsgjirrige lêzer fermoedzje dat der wat mis is ...

JavaScript brûke yn ekspresjes

... En foar goede reden! Doe't de easken foar funksjes foarme waarden, kamen wy ynienen ta de konklúzje dat jildich javaskript yn útdrukkingen skreaun wurde moast. Dus no binne jo frij om útdrukkingen te skriuwen lykas:

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

En dit alles sûnder skripts, direkt yn 'e ynfierfjilden!

Wat Postman oanbelanget, hjir kinne jo allinich fariabelen brûke, en as jo besykje de minste útdrukking te skriuwen, flokt de validator en wegeret it te berekkenjen.

Wêrom TestMace is better as Postman

Avansearre autofolling

Op it stuit hat TestMace in standert autofolling dy't der sa útsjocht:

Wêrom TestMace is better as Postman

Hjir wurdt njonken de auto-folsleine rigel oanjûn wêrfan dizze rigel heart. Dit meganisme wurket allinnich yn útdrukkingen omjûn troch heakjes ${}.

Sa't jo sjen kinne, binne fisuele markers tafoege dy't it type fariabele oanjaan (bygelyks string, nûmer, array, ensfh.). Jo kinne ek de autooanfollingmodi feroarje (jo kinne bygelyks autofoltôging selektearje mei fariabelen of kopteksten). Mar ek dit is net it wichtichste ding!

Earst wurket autofolling sels yn útdrukkingen (wêr mooglik). Dit is hoe't it derút sjocht:

Wêrom TestMace is better as Postman

En twadde, autofolling is no beskikber yn skripts. Besjoch hoe't it wurket!

Wêrom TestMace is better as Postman

D'r hat gjin punt om dizze funksjonaliteit te fergelykjen mei Postman - autofoltôging d'r is allinich beheind ta statyske listen fan fariabelen, kopteksten en har wearden (korrigearje my as ik wat fergetten bin). Skripten wurde net automatysk foltôge :)

konklúzje

Oktober markearre in jier sûnt it begjin fan ús produktûntwikkeling. Yn dizze tiid slaggen wy in protte dingen te dwaan en yn guon opsichten ús konkurrinten ynhelle. Mar hoe dan ek, ús doel is om in wirklik handich ark te meitsjen foar wurkjen mei API's. Wy hawwe noch in soad wurk te dwaan, hjir is in rûch plan foar de ûntwikkeling fan ús projekt foar it kommende jier: https://testmace.com/roadmap.

Jo feedback sil ús tastean om de oerfloed fan funksjes better te navigearjen, en jo stipe jout ús krêft en fertrouwen dat wy it goede ding dogge. It bart sa dat hjoed in wichtige dei is foar ús projekt - de dei dat TestMace waard publisearre Produkt Hunt. Stypje asjebleaft ús projekt, it is heul wichtich foar ús. Boppedat is d'r hjoed in ferliedlik oanbod op ús PH-side, en it is beheind

Boarne: www.habr.com

Add a comment