Waarom TestMace beter is as Postman

Waarom TestMace beter is as Postman

Hallo almal, hier gaan julle TestMace! Miskien weet baie mense van ons van van ons vorige artikels. Vir diegene wat pas aangesluit het: ons ontwikkel 'n IDE om met die TestMace API te werk. Die mees algemene vraag wanneer TestMace met mededingende produkte vergelyk word, is "Hoe verskil jy van Postman?" Ons het besluit dat dit tyd is om 'n gedetailleerde antwoord op hierdie vraag te gee. Hieronder het ons ons voordele bo uiteengesit Postman.

Verdeel in nodusse

As jy met Postman werk, weet jy dat die versoekkoppelvlak al die nodige funksionaliteit bevat. Daar is skrifte, toetse, en in werklikheid die versoeke self. Dit maak dit makliker vir beginners, maar in groot scenario's is hierdie benadering nie buigsaam nie. Wat as jy verskeie navrae wil skep en saamvoeging daarop wil uitvoer? Wat as jy 'n skrif wil uitvoer sonder 'n versoek of verskeie logies geskei skrifte in 'n ry? Dit sal tog 'n goeie idee wees om toetse van gewone nutsskrifte te skei. Daarbenewens is die benadering "voeg al die funksionaliteit by een nodus by" nie skaalbaar nie - die koppelvlak raak vinnig oorlaai.

TestMace verdeel aanvanklik alle funksionaliteit in verskillende tipes nodusse. Wil jy 'n versoek rig? Dit is vir jou versoek stap nodus Wil jy 'n draaiboek skryf? Dit is vir jou script nodus Benodig toetse? Asseblief - Bewering nodus O ja, jy kan nog steeds hierdie hele ding insluit gids nodus En dit alles kan maklik met mekaar gekombineer word. Hierdie benadering is nie net baie buigsaam nie, maar laat jou ook, in ooreenstemming met die beginsel van enkele verantwoordelikheid, toe om net te gebruik wat jy op die oomblik regtig nodig het. Hoekom het ek skrifte en toetse nodig as ek net 'n versoek wil rig?

Mensleesbare projekformaat

Daar is 'n konseptuele verskil tussen TestMace en Postman in die manier waarop hulle gestoor word. In Postman word alle versoeke iewers in plaaslike stoor gestoor. As daar 'n behoefte is om versoeke tussen verskeie gebruikers te deel, dan moet jy die ingeboude sinchronisasie gebruik. Trouens, dit is 'n algemeen aanvaarde benadering, maar nie sonder sy nadele nie. Wat van datasekuriteit? Die beleid van sommige maatskappye sal immers nie toelaat dat data by derde partye gestoor word nie. Ons dink egter TestMace het iets beter om te bied! En die naam van hierdie verbetering is "mens-leesbare projekformaat."

Kom ons begin met die feit dat daar in TestMace in beginsel 'n "projek"-entiteit is. En die toepassing is aanvanklik ontwikkel met die oog op die stoor van projekte in weergawebeheerstelsels: die projekboom word amper een-tot-een op die lêerstruktuur geprojekteer, yaml word as die stoorformaat gebruik (sonder ekstra hakies en kommas), en die toepassing lêervoorstelling van elke nodus word in detail beskryf in die dokumentasie met kommentaar. Maar in die meeste gevalle sal jy nie daar kyk nie - alle veldname het logiese name.

Wat gee dit die gebruiker? Dit laat jou toe om die span se werkvloei baie buigsaam te verander, deur gebruik te maak van bekende benaderings. Ontwikkelaars kan byvoorbeeld 'n projek in dieselfde bewaarplek as die backend stoor. In takke, benewens om die kodebasis self te verander, kan die ontwikkelaar bestaande navraagskrifte en -toetse regstel. Nadat jy veranderinge aan die bewaarplek (git, svn, mercurial - waarvan jy ook al die beste hou) aangebring het, begin CI (jou gunsteling, nie deur iemand opgelê nie) ons konsole-hulpprogram testmace-cli, en die verslag wat na uitvoering ontvang word (byvoorbeeld in junit-formaat, wat ook in testmace-cli ondersteun word) word na die toepaslike stelsel gestuur. En die bogenoemde sekuriteitskwessie is nie meer 'n probleem nie.

Soos u kan sien, dring TestMace nie sy ekosisteem en paradigma op nie. In plaas daarvan pas dit maklik in gevestigde prosesse.

Dinamiese veranderlikes

TestMace volg die geen-kode konsep: as 'n probleem opgelos kan word sonder om kode te gebruik, probeer ons om hierdie geleentheid te bied. Werk met veranderlikes is presies die soort funksionaliteit waar jy in die meeste gevalle sonder programmering kan klaarkom.

Voorbeeld: ons het 'n antwoord van die bediener ontvang, en ons wil 'n deel van die antwoord in 'n veranderlike stoor. In Postman, in 'n toetsskrif (wat op sigself vreemd is) sou ons iets soos:

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

Maar na ons mening lyk dit oorbodig om 'n draaiboek vir so 'n eenvoudige en gereelde scenario te skryf. Daarom is dit in TestMace moontlik om 'n stuk van die antwoord aan 'n veranderlike toe te ken deur die grafiese koppelvlak te gebruik. Kyk hoe eenvoudig is dit:

Waarom TestMace beter is as Postman

En nou met elke versoek sal hierdie dinamiese veranderlike opgedateer word. Maar jy kan beswaar maak met die argument dat die Postman-benadering meer buigsaam is en jou nie net toelaat om 'n opdrag te maak nie, maar ook om voorafverwerking uit te voer. Hier is hoe om die vorige voorbeeld te verander:

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

Wel, vir hierdie doel het TestMace script node, wat hierdie scenario dek. Om die vorige geval te reproduseer, maar reeds deur TestMace uitgevoer, moet jy 'n script node skep na aanleiding van die versoek en die volgende kode as 'n script gebruik:

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

Soos u kan sien, het die samestelling van die nodusse ook hier goed gedien. En vir so 'n eenvoudige geval soos hierbo beskryf, kan jy eenvoudig die uitdrukking toeken ${crypto.MD5($response.data)} veranderlike geskep via die GUI!

Skep toetse via GUI

Postman laat jou toe om toetse te skep deur skrifte te skryf (in die geval van Postman is dit JavaScript). Hierdie benadering hou baie voordele in - byna onbeperkte buigsaamheid, beskikbaarheid van klaargemaakte oplossings, ens.

Die realiteit is egter dikwels so (ons is nie so nie, die lewe is so) dat 'n toetser nie programmeervaardighede het nie, maar hy wil graag nou voordeel vir die span bring. Vir sulke gevalle, na aanleiding van die geen-kode konsep, laat TestMace jou toe om eenvoudige toetse deur 'n GUI te skep sonder om skrifte te skryf. Hier is byvoorbeeld hoe die proses lyk om 'n toets te skep wat waardes vir gelykheid vergelyk:

Waarom TestMace beter is as Postman

Die skep van toetse in 'n grafiese redigeerder skakel egter nie die moontlikheid uit nie skryf toetse in kode. Al dieselfde biblioteke is hier as in die script node, en chai vir die skryf van toetse.

Situasies ontstaan ​​dikwels wanneer 'n sekere navraag of selfs 'n hele skrif verskeie kere in verskillende dele van die projek uitgevoer moet word. 'n Voorbeeld van sulke versoeke kan pasgemaakte multi-stadium magtiging wees, om die omgewing na die verlangde toestand te bring, ens. Oor die algemeen, as ons in terme van programmeertale praat, wil ons graag funksies hê wat in verskillende dele van die toepassing hergebruik kan word. In TestMace word hierdie funksie uitgevoer deur skakel nodus Dit is baie maklik om te gebruik:
1) skep 'n navraag of skrif
2) skep 'n nodus van tipe Link
3) spesifiseer in die parameters 'n skakel na die skrip wat in die eerste stap geskep is

In 'n meer gevorderde weergawe kan jy spesifiseer watter dinamiese veranderlikes van die skrif na 'n hoër vlak relatief tot die skakel oorgedra word. Klink verwarrend? Kom ons sê ons het 'n gids met die naam geskep skep-pos, waarbinne 'n dinamiese veranderlike aan hierdie nodus toegeken word postId. Nou in Link node skep-pos-skakel jy kan uitdruklik spesifiseer dat die veranderlike postId aan 'n voorouer toegewys skep-pos-skakel. Hierdie meganisme (weereens, in programmeertaal) kan gebruik word om 'n resultaat van 'n "funksie" terug te gee. Oor die algemeen is dit gaaf, DRY is in volle swang en weereens is nie 'n enkele reël kode beskadig nie.

Waarom TestMace beter is as Postman

Wat Postman betref, is daar 'n kenmerkversoek vir die hergebruik van versoeke hang sedert 2015, en dit blyk daar is selfs 'n paar wenkedat hulle aan hierdie probleem werk. In sy huidige vorm het Postman natuurlik die vermoë om die draad van uitvoering te verander, wat dit in teorie waarskynlik moontlik maak om soortgelyke gedrag te implementeer, maar dit is meer 'n vuil hack as 'n werklik werkende benadering.

Ander verskille

  • Groter beheer oor die omvang van veranderlikes. Die kleinste bestek waarbinne 'n veranderlike in Postman gedefinieer kan word, is versameling. Met TestMace kan u veranderlikes vir enige navraag of gids definieer. In Postman Share-versameling kan jy slegs versamelings uitvoer, terwyl in TestMace deling vir enige nodus werk
  • TestMace ondersteun oorerfbare opskrifte, wat by verstek in kindernavrae vervang kan word. Postman het iets hieroor: taak, en dit is selfs gesluit, maar dit word as 'n oplossing aangebied ... gebruik skrifte. In TestMace word dit alles via die GUI gekonfigureer en daar is 'n opsie om oorgeërfde opskrifte in spesifieke afstammelinge opsioneel te deaktiveer
  • Ontdoen / Herdoen. Werk nie net wanneer jy nodusse wysig nie, maar ook wanneer jy skuif, uitvee, hernoem en ander bewerkings wat die struktuur van die projek verander
  • Lêers wat aan versoeke geheg word, word deel van die projek en word daarmee gestoor, terwyl dit perfek gesinchroniseer word, anders as Postman. (Ja, jy hoef nie meer lêers handmatig te kies elke keer as jy begin en dit na kollegas in argiewe oordra nie)

Kenmerke wat reeds op pad is

Ons kon nie die versoeking weerstaan ​​om die sluier van geheimhouding oor die volgende vrystellings te lig nie, veral wanneer die funksionaliteit baie smaaklik is en reeds voorvrystelling poleer word. So, kom ons ontmoet.

Funksies

Soos u weet, gebruik Postman sogenaamde dinamiese veranderlikes om waardes te genereer. Die lys van hulle is indrukwekkend en die oorgrote meerderheid van funksies word gebruik om vals waardes te genereer. Byvoorbeeld, om 'n ewekansige e-pos te genereer, moet jy skryf:

{{$randomEmail}}

Aangesien dit egter veranderlikes is (alhoewel dinamies), kan hulle nie as funksies gebruik word nie: hulle is nie parameteriseerbaar nie, daarom sal dit nie moontlik wees om 'n hash uit 'n string te neem nie.

Ons beplan om "eerlike" funksies by TestMace te voeg. Reg binne ${} sal dit nie net moontlik wees om toegang tot 'n veranderlike te verkry nie, maar ook om 'n funksie te roep. Dié. as jy die berugte vals e-pos moet genereer, sal ons eenvoudig skryf

${faker.internet.email()}

Benewens die feit dat dit 'n funksie is, sal jy opmerk dat dit moontlik is om 'n metode op 'n voorwerp te roep. En in plaas van 'n groot plat lys van dinamiese veranderlikes, het ons 'n stel logies gegroepeerde voorwerpe.

Wat as ons die hash van 'n string wil bereken? Maklik!

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

Jy sal agterkom dat jy selfs veranderlikes as parameters kan deurgee! Op hierdie stadium kan 'n nuuskierige leser vermoed iets is fout...

Gebruik JavaScript in uitdrukkings

... En met goeie rede! Toe die vereistes vir funksies gevorm word, het ons skielik tot die gevolgtrekking gekom dat geldige javascript in uitdrukkings geskryf moet word. So nou is jy vry om uitdrukkings te skryf soos:

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

En dit alles sonder skrifte, reg in die invoervelde!

Wat Postman betref, hier kan jy net veranderlikes gebruik, en wanneer jy die geringste uitdrukking probeer skryf, vloek die valideerder en weier om dit te bereken.

Waarom TestMace beter is as Postman

Gevorderde outovoltooiing

Tans het TestMace 'n standaard outovoltooiing wat soos volg lyk:

Waarom TestMace beter is as Postman

Hier word, benewens die outo-voltooi-lyn, aangedui waaraan hierdie reël behoort. Hierdie meganisme werk slegs in uitdrukkings omring deur hakies ${}.

Soos jy kan sien, is visuele merkers bygevoeg wat die tipe veranderlike aandui (byvoorbeeld string, getal, skikking, ens.). Jy kan ook die outovoltooiingsmodusse verander (jy kan byvoorbeeld outovoltooiing met veranderlikes of kopskrifte kies). Maar selfs dit is nie die belangrikste ding nie!

Eerstens werk outovoltooiing selfs in uitdrukkings (waar moontlik). Dit is hoe dit lyk:

Waarom TestMace beter is as Postman

En tweedens, outovoltooiing is nou beskikbaar in skrifte. Kyk bietjie hoe dit werk!

Waarom TestMace beter is as Postman

Dit is geen sin om hierdie funksionaliteit met Postman te vergelyk nie - outovoltooiing daar is slegs beperk tot statiese lyste van veranderlikes, opskrifte en hul waardes (korrigeer my as ek iets vergeet het). Skripte word nie outovoltooi nie :)

Gevolgtrekking

Oktober was 'n jaar sedert die begin van ons produkontwikkeling. In hierdie tyd het ons daarin geslaag om baie dinge te doen en in sekere opsigte ons mededingers ingehaal. Maar hoe dit ook al sy, ons doel is om 'n werklik gerieflike hulpmiddel te maak om met API's te werk. Ons het nog baie werk om te doen, hier is 'n rowwe plan vir die ontwikkeling van ons projek vir die komende jaar: https://testmace.com/roadmap.

Jou terugvoer sal ons in staat stel om die oorvloed kenmerke beter te navigeer, en jou ondersteuning gee ons krag en vertroue dat ons die regte ding doen. Dit gebeur so dat vandag 'n belangrike dag vir ons projek is - die dag waarop TestMace gepubliseer is ProductHunt. Ondersteun asseblief ons projek, dit is vir ons baie belangrik. Boonop is daar vandag 'n aanloklike aanbod op ons PH-bladsy, en dit is beperk

Bron: will.com

Voeg 'n opmerking