{"id":54188,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/chem-testmace-luchshe-postman"},"modified":"2020-02-18T14:02:10","modified_gmt":"2020-02-18T11:02:10","slug":"chem-testmace-luchshe-postman","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/news\/chem-testmace-luchshe-postman","title":{"rendered":"Vad g\u00f6r TestMace b\u00e4ttre \u00e4n Postman?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Vad g\u00f6r TestMace b\u00e4ttre \u00e4n Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/4b61986c287c32a4cefeb2f805fc228f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hej alla, h\u00e4r \u00e4r vi <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/\">TestMace<\/a><\/noindex>! M\u00e5nga kanske k\u00e4nner oss genom <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">v\u00e5ra<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462585\/\">de tidigare<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">artiklar<\/a><\/noindex>. F\u00f6r dem som just har anslutit sig: vi utvecklar en IDE f\u00f6r att arbeta med API TestMace. Den vanligaste fr\u00e5gan vid j\u00e4mf\u00f6relser av TestMace med konkurrerande produkter \u00e4r \u2013 &#171;Vad skiljer er fr\u00e5n Postman?&#187;. Vi har beslutat att det \u00e4r dags att ge ett utf\u00f6rligt svar p\u00e5 denna fr\u00e5ga. Nedan har vi punkt f\u00f6r punkt listat v\u00e5ra f\u00f6rdelar gentemot <noindex><a rel=\"nofollow\" href=\"https:\/\/www.getpostman.com\/\">Postman<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"razdelenie-na-uzly\">Uppdelning i noder<\/h2>\n<p><\/p>\n<p>Om du arbetar med Postman vet du att gr\u00e4nssnittet f\u00f6r f\u00f6rfr\u00e5gan inneh\u00e5ller all n\u00f6dv\u00e4ndig funktionalitet. H\u00e4r finns skript, tester och i grunden sj\u00e4lva f\u00f6rfr\u00e5gningarna. Detta f\u00f6renklar arbetet f\u00f6r nyb\u00f6rjare, men i stora scenarier \u00e4r denna metod inte flexibel. Vad om man vill skapa flera f\u00f6rfr\u00e5gningar och g\u00f6ra aggregering p\u00e5 dem? Vad om man vill k\u00f6ra ett skript utan f\u00f6rfr\u00e5gan eller flera logiskt avskilda skript i f\u00f6ljd? I slut\u00e4ndan skulle det vara bra att separera tester fr\u00e5n vanliga nyttoskript. Ut\u00f6ver detta \u00e4r metoden &#171;att l\u00e4gga till all funktionalitet i ett enda element&#187; icke skalbar \u2013 gr\u00e4nssnittet blir snabbt \u00f6verbelastat.<\/p>\n<p><\/p>\n<p>TestMace delar fr\u00e5n b\u00f6rjan upp all funktionalitet i olika typer av noder. Vill du g\u00f6ra en f\u00f6rfr\u00e5gan? H\u00e4r har du <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/requeststep\">request step<\/a><\/noindex> nod. Vill du skriva ett skript? H\u00e4r har du <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> nod. Beh\u00f6ver du tester? Vars\u00e5god - <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> nod. \u00c5h ja, du kan ocks\u00e5 sl\u00e5 in allt detta i en <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/folder\">folder<\/a><\/noindex> nod. Och allt detta g\u00e5r l\u00e4tt att kombinera. Detta tillv\u00e4gag\u00e5ngss\u00e4tt \u00e4r inte bara mycket flexibelt, utan enligt principen om enhetlig ansvarighet till\u00e5ter det att anv\u00e4nda bara det du verkligen beh\u00f6ver just nu. Varf\u00f6r skulle jag beh\u00f6va skript och tester om jag bara vill g\u00f6ra en f\u00f6rfr\u00e5gan?<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-proekta\">M\u00e4nskligt l\u00e4sbart projektformat<\/h2>\n<p><\/p>\n<p>Mellan TestMace och Postman finns en konceptuell skillnad i hur lagring sker. I Postman lagras alla f\u00f6rfr\u00e5gningar n\u00e5gonstans i den lokala lagringen. Om det finns ett behov av att dela f\u00f6rfr\u00e5gningar mellan flera anv\u00e4ndare m\u00e5ste man anv\u00e4nda den inbyggda synkroniseringen. I sj\u00e4lva verket \u00e4r detta en vanlig metod som inte \u00e4r utan nackdelar. Hur \u00e4r det med dataskydd? Vissa f\u00f6retags policyer kan n\u00e4mligen f\u00f6rbjuda lagring av data hos tredje parter. Men vi anser att TestMace kan erbjuda n\u00e5got b\u00e4ttre! Och namnet p\u00e5 denna f\u00f6rb\u00e4ttring \u00e4r &#171;l\u00e4sbar projektformat&#187;.<\/p>\n<p><\/p>\n<p>L\u00e5t oss b\u00f6rja med att s\u00e4ga att det faktiskt finns en entitet \"projekt\" i TestMace. Applikationen har fr\u00e5n b\u00f6rjan utvecklats med tanke p\u00e5 att lagra projekt i versionshanteringssystem: projekttr\u00e4det projiceras praktiskt taget rakt av p\u00e5 filstrukturen, lagringsformatet som anv\u00e4nds \u00e4r yaml (utan on\u00f6diga klamrar och kommatecken), och filpresentationen av varje nod \u00e4r detaljerat beskriven i dokumentationen med kommentarer. Men i de flesta fall kommer du inte att beh\u00f6va titta d\u00e4r \u2014 alla f\u00e4ltnamn har logiska beteckningar. <\/p>\n<p><\/p>\n<p>Vad ger detta anv\u00e4ndaren? Det m\u00f6jligg\u00f6r en mycket flexibel f\u00f6r\u00e4ndring av teamets arbetsfl\u00f6de, med hj\u00e4lp av bekanta metoder. Till exempel kan utvecklare lagra projektet i samma repository som backend. I grenarna, f\u00f6rutom att \u00e4ndra sj\u00e4lva kodbasen, kan utvecklaren justera existerande fr\u00e5gescenarier och tester. Efter att \u00e4ndringarna har bekr\u00e4ftats i repositoryt (git, svn, mercurial \u2014 vad du \u00e4n f\u00f6redrar) k\u00f6r CI (din favorit som ingen har p\u00e5dyvlat) v\u00e5rt kommandoradsverktyg <noindex><a rel=\"nofollow\" href=\"https:\/\/www.npmjs.com\/package\/@testmace\/cli\">testmace-cli<\/a><\/noindex>, och rapporten som genereras efter k\u00f6rningen (till exempel i junit-format, som ocks\u00e5 st\u00f6ds av testmace-cli) skickas till det motsvarande systemet. Och den ovan n\u00e4mnda s\u00e4kerhetsfr\u00e5gan \u00e4r inte l\u00e4ngre ett problem.<\/p>\n<p><\/p>\n<p>Som ni kan se, TestMace inf\u00f6r inte sin egen ekosystem eller paradigm. Ist\u00e4llet integreras det l\u00e4tt i redan etablerade processer.<\/p>\n<p><\/p>\n<h2 id=\"dinamicheskie-peremennye\">Dynamiska variabler<\/h2>\n<p><\/p>\n<p>TestMace f\u00f6ljer konceptet no-code: om problemet kan l\u00f6sas utan att anv\u00e4nda kod, f\u00f6rs\u00f6ker vi ge den m\u00f6jligheten. Att arbeta med variabler \u00e4r just den funktionaliteten d\u00e4r man i de flesta fall kan klara sig utan programmering.<\/p>\n<p><\/p>\n<p>Exempel: vi fick ett svar fr\u00e5n servern, och vi vill spara en del av svaret i en variabel. I Postman skulle vi i testscripten (vilket i sig \u00e4r konstigt) skriva n\u00e5got i stil med:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">var jsonData = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"data\", jsonData.data);<\/code><\/pre>\n<p><\/p>\n<p>Men enligt v\u00e5r mening verkar det \u00f6verfl\u00f6digt att skriva ett skript f\u00f6r ett s\u00e5 enkelt och ofta anv\u00e4nt scenario. D\u00e4rf\u00f6r finns det i TestMace en m\u00f6jlighet att tilldela variabeln en del av svaret, med hj\u00e4lp av det grafiska gr\u00e4nssnittet. Se hur enkelt det \u00e4r:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Vad g\u00f6r TestMace b\u00e4ttre \u00e4n Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/2ce8ce2f9aa2964cb5bd1d5eacead423.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Och nu kommer denna dynamiska variabel att uppdateras vid varje f\u00f6rfr\u00e5gan. Men du kan inv\u00e4nda och h\u00e4vda att Postman-metoden \u00e4r mer flexibel och till\u00e5ter inte bara att g\u00f6ra en tilldelning, utan ocks\u00e5 att utf\u00f6ra viss f\u00f6rbehandling. H\u00e4r \u00e4r hur du kan modifiera det tidigare exemplet:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">var jsonData = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"data\", CryptoJS.MD5(jsonData.data));<\/code><\/pre>\n<p><\/p>\n<p>N\u00e5v\u00e4l, f\u00f6r detta finns det <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> en nod i TestMace som t\u00e4cker detta scenario. F\u00f6r att \u00e5terskapa det tidigare fallet, men nu i TestMace, kr\u00e4vs att du efter f\u00f6rfr\u00e5gan skapar en script-nod och anv\u00e4nder f\u00f6ljande kod som script:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">const data = tm.currentNode.prev.response.body.data;\ntm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));<\/code><\/pre>\n<p><\/p>\n<p>Som du kan se har kompositionen av noder gjort stor nytta h\u00e4r. Och f\u00f6r ett s\u00e5 enkelt fall, som det ovan beskrivna, kan du faktiskt bara tilldela ett uttryck <code>${crypto.MD5($response.data)}<\/code> till den variabel som skapas via det grafiska gr\u00e4nssnittet!<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov-cherez-gui\">Skapande av tester via GUI<\/h2>\n<p><\/p>\n<p>Postman m\u00f6jligg\u00f6r skapande av tester genom att skriva skript (i Postman \u00e4r det JavaScript). Denna metod har en m\u00e4ngd f\u00f6rdelar \u2014 n\u00e4stan obegr\u00e4nsad flexibilitet, tillg\u00e5ng till f\u00e4rdiga l\u00f6sningar, etc.<\/p>\n<p><\/p>\n<p>Men verkligheten \u00e4r ofta s\u00e5dan (inte vi, utan livet), att testaren saknar programmeringsf\u00e4rdigheter, och man vill g\u00e4rna bidra till teamet redan nu. F\u00f6r s\u00e5dana fall, i enlighet med no-code-konceptet, l\u00e5ter TestMace dig skapa enkla tester via det grafiska gr\u00e4nssnittet, utan att skriva skript. H\u00e4r \u00e4r exempel p\u00e5 hur processen f\u00f6r att skapa ett test som j\u00e4mf\u00f6r v\u00e4rden ser ut:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Vad g\u00f6r TestMace b\u00e4ttre \u00e4n Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/c0a8ce4cbe264dd76e3b5d90594eeff5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Men att skapa tester i den grafiska redakt\u00f6ren utesluter inte m\u00f6jligheten <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\/script\">att skriva tester i kod<\/a><\/noindex>. H\u00e4r finns alla samma bibliotek som i script-noden, och <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chaijs.com\/\">chai<\/a><\/noindex> f\u00f6r att skriva tester.<\/p>\n<p><\/p>\n<h2 id=\"vozmozhnost-zapustit-uzhe-suschestvuyuschiy-scenariy-po-ssylke-link-uzel\">M\u00f6jligheten att k\u00f6ra ett redan existerande scenario via l\u00e4nk (Link nod)<\/h2>\n<p><\/p>\n<p>Uppst\u00e5r ofta situationer d\u00e4r en viss f\u00f6rfr\u00e5gan eller till och med ett helt scenario m\u00e5ste utf\u00f6ras flera g\u00e5nger p\u00e5 olika delar av projektet. Exempel p\u00e5 s\u00e5dana f\u00f6rfr\u00e5gningar kan vara anpassad flerstegsautentisering, att s\u00e4tta milj\u00f6n i r\u00e4tt tillst\u00e5nd, etc. Om vi pratar i termer av programmeringsspr\u00e5k skulle man vilja ha funktioner som kan \u00e5teranv\u00e4ndas p\u00e5 olika st\u00e4llen i applikationen. I TestMace utf\u00f6r denna funktion <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/link\">link<\/a><\/noindex> Knut. Det \u00e4r mycket enkelt att anv\u00e4nda:<br \/>\n1) Skapa en beg\u00e4ran eller ett skript<br \/>\n2) Skapa en nod av typen L\u00e4nk<br \/>\n3) Ange l\u00e4nken till skriptet som skapades i steg ett i parametrarna<\/p>\n<p><\/p>\n<p>I en mer avancerad variant kan du ange vilka dynamiska variabler fr\u00e5n skriptet som ska f\u00f6ras vidare till \u00f6verliggande niv\u00e5er relativt l\u00e4nken. L\u00e5ter det f\u00f6rvirrat? Anta att vi har skapat en mapp med namnet <strong>create-post<\/strong>, d\u00e4r en dynamisk variabel tilldelas denna nod <code>postId<\/code>. Nu i L\u00e4nk-noden <strong>create-post-link<\/strong> kan du uttryckligen ange att variabeln <code>postId<\/code> tilldelas f\u00f6r\u00e4ldern <strong>create-post-link<\/strong>. Denna mekanism (\u00e5terigen, uttryckt p\u00e5 programmeringsspr\u00e5k) kan anv\u00e4ndas f\u00f6r att returnera resultatet fr\u00e5n en &#171;funktion&#187;. Generellt \u00e4r det coolt, DRY fullt ut och \u00e5terigen har inte en enda rad kod skadats.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Vad g\u00f6r TestMace b\u00e4ttre \u00e4n Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/5235473a43e5bc2e05aeb2779846245f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4r det g\u00e4ller Postman har funktionen f\u00f6r \u00e5teranv\u00e4ndning av beg\u00e4rningar <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535\">h\u00e4ngt sedan 2015<\/a><\/noindex>, och det verkar till och med finnas <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535#issuecomment-280305898\">n\u00e5gra ledtr\u00e5dar<\/a><\/noindex>, p\u00e5 att det arbetas p\u00e5 detta problem. I sitt nuvarande skick har Postman naturligtvis m\u00f6jlighet till fl\u00f6des\u00e4ndring, vilket i teorin troligen skulle kunna m\u00f6jligg\u00f6ra ett s\u00e5dant beteende, men det \u00e4r snarare en smutsig hack \u00e4n en verkligt fungerande metod. <\/p>\n<p><\/p>\n<h2 id=\"prochie-otlichiya\">\u00d6vriga skillnader<\/h2>\n<p><\/p>\n<ul>\n<li>St\u00f6rre kontroll \u00f6ver variablers synlighet. Den minsta omfattningen inom vilken en variabel kan definieras i Postman \u00e4r samlingen. TestMace g\u00f6r det m\u00f6jligt att definiera variabler f\u00f6r vilken beg\u00e4ran eller mapp som helst. I Postman till\u00e5ter delning av samlingar att exportera endast samlingar, medan i TestMace fungerar delning f\u00f6r varje nod<\/li>\n<li>TestMace st\u00f6der <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">\u00e4rvda rubriker<\/a><\/noindex>, som som standard kan inkluderas i underliggande beg\u00e4rningar. N\u00e4r det g\u00e4ller Postman finns det <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947\">uppgift<\/a><\/noindex>, och det \u00e4r till och med st\u00e4ngt, men som l\u00f6sning f\u00f6resl\u00e5s\u2026 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947#issuecomment-292741840\">att anv\u00e4nda skript<\/a><\/noindex>. I TestMace konfigureras allt detta genom GUI och det finns m\u00f6jlighet att valfritt st\u00e4nga av \u00e4rvda rubriker i specifika underordnade<\/li>\n<li>\u00c5ngra\/G\u00f6r om. Fungerar inte bara vid redigering av noder, utan ocks\u00e5 vid flyttning, radering, omd\u00f6pning och andra operationer som \u00e4ndrar projektstrukturen<\/li>\n<li>Filer som bifogas till beg\u00e4rningar blir en del av projektet och lagras tillsammans med det, och synkroniseras perfekt, till skillnad fr\u00e5n Postman. (Ja, du beh\u00f6ver inte l\u00e4ngre manuellt v\u00e4lja filer varje g\u00e5ng och \u00f6verf\u00f6ra till kollegor i arkiv)<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"fichi-kotorye-uzhe-na-podhode\">Funktioner som redan \u00e4r p\u00e5 v\u00e4g<\/h2>\n<p><\/p>\n<p>Vi kunde inte motst\u00e5 frestelsen att \u00f6ppna en liten del av hemligheten kring kommande releaser, s\u00e4rskilt inte n\u00e4r funktionerna \u00e4r s\u00e5 attraktiva och redan genomg\u00e5r en f\u00f6rrelease-finslipning. L\u00e5t oss v\u00e4lkomna dem.<\/p>\n<p><\/p>\n<h3 id=\"funkcii\">Funktioner<\/h3>\n<p><\/p>\n<p>Som bekant anv\u00e4nds s\u00e5 kallade dynamiska variabler f\u00f6r att generera v\u00e4rden i Postman. <noindex><a rel=\"nofollow\" href=\"https:\/\/learning.getpostman.com\/docs\/postman\/variables-and-environments\/variables-list\/\">Listan \u00e4r imponerande<\/a><\/noindex> och den \u00f6verv\u00e4ldigande majoriteten av funktionerna syftar till att generera falska v\u00e4rden. Till exempel, f\u00f6r att generera en slumpm\u00e4ssig e-postadress beh\u00f6ver man skriva:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">{{ $randomEmail }}<\/code><\/pre>\n<p><\/p>\n<p>Men eftersom detta \u00e4r variabler (\u00e4ven om de \u00e4r dynamiska) kan de inte anv\u00e4ndas som funktioner: de \u00e4r inte parameteriserade, och d\u00e4rmed g\u00e5r det inte att ta en hash av en str\u00e4ng.<\/p>\n<p><\/p>\n<p>I TestMace planerar vi att l\u00e4gga till &#171;\u00e4rliga&#187; funktioner. Direkt inuti ${} kan man inte bara referera till en variabel, utan \u00e4ven anropa en funktion. D.v.s. om man beh\u00f6ver generera det \u00f6k\u00e4nda falska e-postmeddelandet, skriver vi helt enkelt<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${faker.internet.email()}<\/code><\/pre>\n<p><\/p>\n<p>F\u00f6rutom att det \u00e4r en funktion, kan man ocks\u00e5 se att det finns m\u00f6jlighet att anropa metod fr\u00e5n ett objekt. Och ist\u00e4llet f\u00f6r en stor platt lista av dynamiska variabler har vi en upps\u00e4ttning logiskt grupperade objekt.<\/p>\n<p><\/p>\n<p>Vad h\u00e4nder om vi vill r\u00e4kna ut en hash fr\u00e5n en str\u00e4ng? Inga problem!<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${crypto.MD5($dynamicVar.data)}<\/code><\/pre>\n<p><\/p>\n<p>Man kan se att man till och med kan skicka variabler som parametrar! Vid detta tillf\u00e4lle kan den nyfikna l\u00e4saren misst\u00e4nka att n\u00e5got \u00e4r fel... <\/p>\n<p><\/p>\n<h3 id=\"ispolzovanie-javascript-v-vyrazheniyah\">Anv\u00e4ndning av JavaScript i uttryck<\/h3>\n<p><\/p>\n<p>... och med r\u00e4tta! N\u00e4r kraven p\u00e5 funktionerna formulerades kom vi pl\u00f6tsligt fram till att uttryck m\u00e5ste till\u00e5ta giltig JavaScript. S\u00e5 nu \u00e4r det fritt fram att skriva uttryck i stil med:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">${1 + '' + crypto.MD5('asdf')}<\/code><\/pre>\n<p><\/p>\n<p>Och allt detta utan skript direkt i inmatningsf\u00e4lten!<\/p>\n<p><\/p>\n<p>N\u00e4r det g\u00e4ller Postman kan man bara anv\u00e4nda variabler, och vid f\u00f6rs\u00f6k att skriva ens ett litet uttryck klagar validatorn och v\u00e4grar att ber\u00e4kna det.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Vad g\u00f6r TestMace b\u00e4ttre \u00e4n Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/b301760640ff15ea682e9dfb1462116b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"prodvinutoe-avtodopolnenie\">Avancerad autocompletion<\/h3>\n<p><\/p>\n<p>F\u00f6r n\u00e4rvarande har TestMace standardautocompletion som ser ut p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Vad g\u00f6r TestMace b\u00e4ttre \u00e4n Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/1f5ec38a6a6da29e8308882d271b6b14.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>H\u00e4r, f\u00f6rutom den autocompleta str\u00e4ngen, anges \u00e4ven vad denna str\u00e4ng tillh\u00f6r. Denna mekanism fungerar endast i uttryck som \u00e4r inneslutna i klamrar ${}.<\/p>\n<p><\/p>\n<p>Som du kan m\u00e4rka har vi lagt till visuella mark\u00f6rer som indikerar typ av variabel (t.ex. str\u00e4ng, tal, array osv.). Du kan ocks\u00e5 v\u00e4xla mellan autocompletion-l\u00e4gen (t.ex. v\u00e4lja autocompletion med variabler eller rubriker). Men \u00e4ven det \u00e4r inte det viktigaste!<\/p>\n<p><\/p>\n<p>F\u00f6r det f\u00f6rsta fungerar autocompletion \u00e4ven i uttryck (d\u00e4r det \u00e4r m\u00f6jligt). S\u00e5 h\u00e4r ser det ut:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Vad g\u00f6r TestMace b\u00e4ttre \u00e4n Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/676721c8d12f6c43970ed335deb238f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Och f\u00f6r det andra \u00e4r autocompletion nu ocks\u00e5 tillg\u00e4ngligt i skripten. Titta p\u00e5 hur det fungerar!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Vad g\u00f6r TestMace b\u00e4ttre \u00e4n Postman?\" src=\"\/wp-content\/uploads\/2019\/12\/3b6b4335447c0cbed7044d98831001dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Det \u00e4r inte meningsfullt att j\u00e4mf\u00f6ra denna funktionalitet med Postman - d\u00e4r begr\u00e4nsas autocompletion endast till statiska listor av variabler, rubriker och deras v\u00e4rden (korrigera mig om jag missat n\u00e5got). Skripten autocompletas inte \ud83d\ude41<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Slutsats<\/h1>\n<p><\/p>\n<p>I oktober firade vi ett \u00e5r sedan vi b\u00f6rjade utveckla v\u00e5r produkt. Under denna tid har vi gjort mycket och i vissa avseenden hunnit ikapp v\u00e5ra konkurrenter. Men hur som helst, v\u00e5rt m\u00e5l \u00e4r att skapa ett riktigt anv\u00e4ndarv\u00e4nligt verktyg f\u00f6r att arbeta med API. Vi har fortfarande mycket arbete kvar, h\u00e4r \u00e4r en ungef\u00e4rlig utvecklingsplan f\u00f6r v\u00e5rt projekt under det kommande \u00e5ret: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/roadmap\/\">https:\/\/testmace.com\/roadmap<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Din feedback kommer att hj\u00e4lpa oss att b\u00e4ttre navigera i m\u00e4ngden funktioner, och ditt st\u00f6d ger oss kraft och f\u00f6rtroende i att det vi g\u00f6r \u00e4r viktigt. Det r\u00e5kade bli s\u00e5 att idag \u00e4r en betydelsefull dag f\u00f6r v\u00e5rt projekt - dagen f\u00f6r publiceringen av TestMace p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.producthunt.com\/posts\/testmace\">ProductHunt<\/a><\/noindex>. V\u00e4nligen st\u00f6d v\u00e5rt projekt, det \u00e4r v\u00e4ldigt viktigt f\u00f6r oss. Speciellt eftersom vi har ett lockande erbjudande p\u00e5 v\u00e5r PH-sida idag, och det \u00e4r begr\u00e4nsat<\/p>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/480734\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 TestMace! \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u043d\u0430\u0441 \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f: \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace. \u0421\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 TestMace \u0441 \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u043c\u0438 \u2014 &#171;\u0427\u0435\u043c \u0432\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u043e\u0442 Postman?&#187;. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u043f\u043e\u0440\u0430 \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441. \u041d\u0438\u0436\u0435 \u043c\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54188","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/news\/chem-testmace-luchshe-postman\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0427\u0435\u043c TestMace \u043b\u0443\u0447\u0448\u0435 Postman | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/news\/chem-testmace-luchshe-postman\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Varf\u00f6r TestMace \u00e4r b\u00e4ttre \u00e4n Postman | ProHoster","description":"Hej alla, h\u00e4r \u00e4r vi","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/news\/chem-testmace-luchshe-postman","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0427\u0435\u043c TestMace \u043b\u0443\u0447\u0448\u0435 Postman | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438","og:url":"https:\/\/prohoster.info\/sv\/blog\/news\/chem-testmace-luchshe-postman","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54188","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:21:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:33","updated":"2026-01-24 10:21:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/54188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=54188"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/54188\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=54188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=54188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=54188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}