{"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\/no\/blog\/news\/chem-testmace-luchshe-postman","title":{"rendered":"Hva gj\u00f8r TestMace bedre enn Postman","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Hva gj\u00f8r TestMace bedre enn Postman\" src=\"\/wp-content\/uploads\/2019\/12\/4b61986c287c32a4cefeb2f805fc228f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hei alle sammen, her er vi <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/\">TestMace<\/a><\/noindex>! Mange kjenner kanskje til oss fra <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">v\u00e5re<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462585\/\">de forrige<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">artiklene<\/a><\/noindex>. For those who have just joined: we are developing an IDE for working with the TestMace API. The most frequently asked question when comparing TestMace with competing products is, \u201cHow are you different from Postman?\u201d. We decided it\u2019s time to provide a detailed answer to this question. Below, we have outlined our advantages over <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\">Oppdeling i noder<\/h2>\n<p><\/p>\n<p>If you work with Postman, you know that the request interface contains all the necessary functionality. It includes scripts, tests, and, of course, the requests themselves. This simplifies the work for beginners; however, it is inflexible for larger scenarios. What if you want to create several requests and aggregate them? What if you want to run a script without a request or execute several logically separated scripts sequentially? Ultimately, it would be nice to separate tests from regular utility scripts. In addition, the approach of \u2018adding all functionality into one node\u2019 is inherently non-scalable\u2014the interface quickly becomes cluttered.<\/p>\n<p><\/p>\n<p>TestMace deler opprinnelig all funksjonalitet inn i ulike typer noder. Vil du lage en foresp\u00f8rsel? Her har du <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/requeststep\">request step<\/a><\/noindex> node. Vil du skrive et skript? Her har du <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> node. Trenger du tester? V\u00e6r s\u00e5 god \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> node. \u00c5h ja, du kan ogs\u00e5 pakke alt dette inn i <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/folder\">folder<\/a><\/noindex> node. Og alt dette lar seg enkelt kombinere. Denne tiln\u00e6rmingen er ikke bare veldig fleksibel, men i samsvar med prinsippet om enkeltansvar, lar deg bruke bare det du faktisk trenger i \u00f8yeblikket. Hvorfor trenger jeg skript og tester hvis jeg bare vil lage en foresp\u00f8rsel?<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-proekta\">Menneskelig lesbar prosjektformat<\/h2>\n<p><\/p>\n<p>There is a conceptual difference between TestMace and Postman in the way data is stored. In Postman, all requests are stored somewhere in local storage. If there is a need to share requests among multiple users, the built-in synchronization must be used. In fact, this is a common approach but not without its drawbacks. What about data security? After all, the policies of some companies may not allow data to be stored with third parties. However, we believe TestMace can offer something better! And this improvement is called 'human-readable project format'.<\/p>\n<p><\/p>\n<p>La oss begynne med at TestMace i utgangspunktet har en enhet kalt \u201cprosjekt\u201d. Applikasjonen ble opprinnelig utviklet med tanke p\u00e5 lagring av prosjekter i versjonskontrollsystemer: prosjektstrukturen projiseres nesten direkte p\u00e5 filsystemet, lagringsformatet som brukes er yaml (uten un\u00f8dvendige parenteser og komma), og den filbaserte representasjonen av hver node er detaljert beskrevet i dokumentasjonen med kommentarer. Men i de fleste tilfeller vil du ikke se p\u00e5 det \u2014 alle felt navngivningene er logiske. <\/p>\n<p><\/p>\n<p>Hva gir dette brukeren? Det gj\u00f8r det mulig \u00e5 endre teamets arbeidsflyt p\u00e5 en veldig fleksibel m\u00e5te, ved \u00e5 bruke kjente metoder. For eksempel kan utviklere lagre prosjektet i samme depot som backend. I grenene, i tillegg til endringer i selve kodebasen, kan utvikleren rette opp eksisterende foresp\u00f8rselsscenarier og tester. Etter bekreftelse av endringene i depotet (git, svn, mercurial \u2014 hva du liker best) lanserer CI (din favoritt, ingen p\u00e5tvunget) v\u00e5r kommandolinjeverkt\u00f8y <noindex><a rel=\"nofollow\" href=\"https:\/\/www.npmjs.com\/package\/@testmace\/cli\">testmace-cli<\/a><\/noindex>, og rapporten som genereres etter kj\u00f8ringen (for eksempel i junit-format, som ogs\u00e5 st\u00f8ttes i testmace-cli) sendes til det aktuelle systemet. Og det ovennevnte sp\u00f8rsm\u00e5let om sikkerhet er ikke lenger et problem.<\/p>\n<p><\/p>\n<p>Som du kan se, p\u00e5legger ikke TestMace sitt eget \u00f8kosystem og paradigme. I stedet integreres det enkelt i allerede etablerte prosesser.<\/p>\n<p><\/p>\n<h2 id=\"dinamicheskie-peremennye\">Dynamiske variabler<\/h2>\n<p><\/p>\n<p>TestMace f\u00f8lger no-code-konseptet: hvis et problem kan l\u00f8ses uten \u00e5 bruke kode, pr\u00f8ver vi \u00e5 gi den muligheten. Arbeid med variabler er akkurat den funksjonaliteten hvor det i de fleste tilfeller er mulig \u00e5 unng\u00e5 programmering.<\/p>\n<p><\/p>\n<p>Eksempel: vi fikk et svar fra serveren, og vi \u00f8nsker \u00e5 lagre en del av svaret i en variabel. I Postman ville vi i testskriptet (som i seg selv er merkelig) skrevet noe i retning av:<\/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 etter v\u00e5r mening ser det \u00e5 skrive et skript for et s\u00e5 enkelt og ofte brukt scenario overfl\u00f8dig ut. Derfor har TestMace muligheten til \u00e5 tilordne en del av svaret til en variabel ved \u00e5 bruke det grafiske grensesnittet. Se hvor enkelt det er:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hva gj\u00f8r TestMace bedre enn Postman\" src=\"\/wp-content\/uploads\/2019\/12\/2ce8ce2f9aa2964cb5bd1d5eacead423.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Og n\u00e5 vil denne dynamiske variabelen oppdateres ved hver foresp\u00f8rsel. Men du kan kanskje innvende og si at Postman-tiln\u00e6rmingen er mer fleksibel og tillater ikke bare \u00e5 gj\u00f8re en tildeling, men ogs\u00e5 \u00e5 utf\u00f8re en form for forh\u00e5ndsbehandling. Her er hvordan du kan modifisere det forrige eksemplet:<\/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>Vel, for dette finnes <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> en node i TestMace som dekker dette scenariet. For \u00e5 gjenskape det forrige tilfellet, men n\u00e5 i TestMaces utf\u00f8relse, m\u00e5 du etter foresp\u00f8rselen opprette en script-node og bruke f\u00f8lgende kode som skript:<\/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 ser, har sammensetningen av noder ogs\u00e5 v\u00e6rt til stor hjelp her. Og for et s\u00e5 enkelt tilfelle som beskrevet ovenfor, kan du til og med bare tilordne uttrykket <code>${crypto.MD5($response.data)}<\/code> til variabelen som opprettes via det grafiske grensesnittet!<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov-cherez-gui\">Oppretting av tester via GUI<\/h2>\n<p><\/p>\n<p>Postman gj\u00f8r det mulig \u00e5 lage tester ved \u00e5 skrive skript (i Postman er dette JavaScript). Denne tiln\u00e6rmingen har mange fordeler \u2013 praktisk talt ubegrenset fleksibilitet, tilgjengeligheten av ferdige l\u00f8sninger, osv.<\/p>\n<p><\/p>\n<p>Men virkeligheten er ofte slik (vi er ikke skyld i det, livet er slik) at testeren ikke har programmeringsferdigheter, men \u00f8nsker \u00e5 bidra til teamet n\u00e5. For slike tilfeller, i tr\u00e5d med no-code-konseptet, lar TestMace deg lage enkle tester gjennom det grafiske grensesnittet uten \u00e5 skrive skript. Her er, for eksempel, hvordan prosessen med \u00e5 lage en test som sammenligner verdier for likhet ser ut:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hva gj\u00f8r TestMace bedre enn Postman\" src=\"\/wp-content\/uploads\/2019\/12\/c0a8ce4cbe264dd76e3b5d90594eeff5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Men oppretting av tester i den grafiske redakt\u00f8ren fritar ikke muligheten <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\/script\">for \u00e5 skrive tester i kode<\/a><\/noindex>. Her bruker du de samme bibliotekene som i script-noden, og <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chaijs.com\/\">chai<\/a><\/noindex> for \u00e5 skrive tester.<\/p>\n<p><\/p>\n<h2 id=\"vozmozhnost-zapustit-uzhe-suschestvuyuschiy-scenariy-po-ssylke-link-uzel\">Muligheten til \u00e5 kj\u00f8re en allerede eksisterende scenario via lenken (Link-node)<\/h2>\n<p><\/p>\n<p>Oppst\u00e5r ofte situasjoner der en bestemt foresp\u00f8rsel eller til og med et helt scenario m\u00e5 kj\u00f8res flere ganger p\u00e5 forskjellige deler av prosjektet. Eksempler p\u00e5 slike foresp\u00f8rsel kan v\u00e6re tilpasset flertrinnsautorisering, sette opp milj\u00f8et til \u00f8nsket tilstand, osv. Generelt, hvis vi snakker i programmeringsspr\u00e5k, vil man gjerne ha funksjoner som kan gjenbrukes i ulike deler av applikasjonen. I TestMace utf\u00f8rer denne funksjonen <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/link\">link<\/a><\/noindex> nod. Det er veldig enkelt \u00e5 bruke:<br \/>\n1) opprett en foresp\u00f8rsel eller et skript<br \/>\n2) opprett en node av typen Link<br \/>\n3) i innstillingene angir du linken til skriptet som ble opprettet i f\u00f8rste trinn<\/p>\n<p><\/p>\n<p>I en mer avansert variant kan du spesifisere hvilke dynamiske variabler fra skriptet som skal overf\u00f8res til niv\u00e5et over i forhold til linken. H\u00f8res dette komplisert ut? La oss si at vi har opprettet en Mappe med navnet <strong>create-post<\/strong>, der en dynamisk variabel blir tildelt denne noden <code>postId<\/code>. N\u00e5 kan du i Link-noden <strong>create-post-link<\/strong> ange eksplisitt at variabelen <code>postId<\/code> tilordnes til overordnet <strong>create-post-link<\/strong>. This mechanism (again, speaking in programmer\u2019s terms) can be used to return a result from a \u2018function\u2019. In general, it\u2019s great, DRY in full bloom and again not a single line of code has suffered.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hva gj\u00f8r TestMace bedre enn Postman\" src=\"\/wp-content\/uploads\/2019\/12\/5235473a43e5bc2e05aeb2779846245f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e5r det gjelder Postman, har foresp\u00f8rselen om gjenbruk av foresp\u00f8rslene <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535\">hengt siden 2015<\/a><\/noindex>, og det ser til og med ut til \u00e5 v\u00e6re <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535#issuecomment-280305898\">noen antydninger<\/a><\/noindex>, om at det jobbes med dette problemet. For \u00f8yeblikket har Postman selvf\u00f8lgelig muligheten til \u00e5 bytte utf\u00f8relsesflyt, noe som i teorien muligens lar deg implementere en slik oppf\u00f8rsel, men det er mer en skitten hack enn en virkelig fungerende tiln\u00e6rming. <\/p>\n<p><\/p>\n<h2 id=\"prochie-otlichiya\">Andre forskjeller<\/h2>\n<p><\/p>\n<ul>\n<li>St\u00f8rre kontroll over synlighetsomr\u00e5det for variabler. Det minste omfanget, der du kan definere en variabel i Postman, er collection. TestMace lar deg definere variable for enhver foresp\u00f8rsel eller mappe. I Postman lar Share collection deg eksportere bare samlinger, mens i TestMace fungerer deling for enhver node<\/li>\n<li>TestMace st\u00f8tter <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">arvede overskrifter<\/a><\/noindex>, som som standard kan settes inn i underordnede foresp\u00f8rsel. I Postman er det p\u00e5 dette omr\u00e5det <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947\">oppgave<\/a><\/noindex>, og det er faktisk lukket, men som l\u00f8sning foresl\u00e5s det \u00e5... <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947#issuecomment-292741840\">bruke skripter<\/a><\/noindex>. I TestMace konfigureres alt dette gjennom GUI, og det er en mulighet for valgfrie avstengninger av arvede overskrifter i spesifikke etterkommere.<\/li>\n<li>Angre\/Gj\u00f8r om. Fungerer ikke bare ved redigering av noder, men ogs\u00e5 ved flytting, sletting, omd\u00f8ping og andre operasjoner som endrer prosjektstrukturen.<\/li>\n<li>Filer knyttet til foresp\u00f8rslene blir en del av prosjektet og lagres sammen med det, samtidig som de synkroniseres perfekt, i motsetning til Postman. (Ja, du trenger ikke lenger \u00e5 velge filer manuelt hver gang ved hver oppstart og sende dem til kolleger i arkiver).<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"fichi-kotorye-uzhe-na-podhode\">Funksjoner som allerede er p\u00e5 vei<\/h2>\n<p><\/p>\n<p>Vi klarte ikke \u00e5 motst\u00e5 fristelsen til \u00e5 \u00e5pne sl\u00f8ret over de kommende utgivelsene, spesielt n\u00e5r funksjonaliteten er s\u00e5 fristende og allerede gjennomg\u00e5r en pre-release-finish. S\u00e5, la oss m\u00f8te det.<\/p>\n<p><\/p>\n<h3 id=\"funkcii\">Functions<\/h3>\n<p><\/p>\n<p>Som kjent brukes s\u00e5kalte dynamiske variabler for \u00e5 generere verdier i Postman. <noindex><a rel=\"nofollow\" href=\"https:\/\/learning.getpostman.com\/docs\/postman\/variables-and-environments\/variables-list\/\">Listen over dem er imponerende<\/a><\/noindex> og flertallet av funksjonene tjener til \u00e5 generere falske verdier. For eksempel, for \u00e5 generere en tilfeldig e-post m\u00e5 du skrive:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">{{$randomEmail}}<\/code><\/pre>\n<p><\/p>\n<p>Men siden dette er variabler (om enn dynamiske), kan de ikke brukes som funksjoner: de er ikke parametriserbare, og derfor kan man ikke ta hashen av strengen.<\/p>\n<p><\/p>\n<p>In TestMace, we plan to add 'honest' functions. Right inside ${}, you will be able not only to refer to a variable but also to call a function. That is, if you need to generate the notorious fake email, we will simply write<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${faker.internet.email()}<\/code><\/pre>\n<p><\/p>\n<p>I tillegg til at dette er en funksjon, kan man merke seg at det er mulig \u00e5 kalle metoden til objektet. Og i stedet for en stor flat liste over dynamiske variabler, har vi et sett av logisk grupperte objekter.<\/p>\n<p><\/p>\n<p>Og hva om vi \u00f8nsker \u00e5 beregne hasjen av en streng? Lett!<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${crypto.MD5($dynamicVar.data)}<\/code><\/pre>\n<p><\/p>\n<p>Man kan merke seg at man til og med kan sende variabler som parametere! P\u00e5 dette punktet kan den nysgjerrige leseren mistenke noe... <\/p>\n<p><\/p>\n<h3 id=\"ispolzovanie-javascript-v-vyrazheniyah\">Bruk av JavaScript i uttrykk<\/h3>\n<p><\/p>\n<p>... Og ikke uten grunn! Da kravene til funksjonene ble formulert, inns\u00e5 vi plutselig at vi m\u00e5tte tillate gyldig JavaScript i uttrykkene. Derfor er du n\u00e5 fri til \u00e5 skrive uttrykk som:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">${1 + '' + crypto.MD5('asdf')}<\/code><\/pre>\n<p><\/p>\n<p>Og alt dette uten skripting rett i inndatafeltene!<\/p>\n<p><\/p>\n<p>N\u00e5r det gjelder Postman, kan man bare bruke variabler, og ved fors\u00f8k p\u00e5 \u00e5 skrive et minimalt uttrykk, reagerer validatoren med \u00e5 klage og nekter \u00e5 beregne det.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hva gj\u00f8r TestMace bedre enn Postman\" src=\"\/wp-content\/uploads\/2019\/12\/b301760640ff15ea682e9dfb1462116b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"prodvinutoe-avtodopolnenie\">Avansert autocompletion<\/h3>\n<p><\/p>\n<p>For \u00f8yeblikket har TestMace standard autocompletion som ser slik ut:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hva gj\u00f8r TestMace bedre enn Postman\" src=\"\/wp-content\/uploads\/2019\/12\/1f5ec38a6a6da29e8308882d271b6b14.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Her angis det i tillegg til den autocompletable strengen hva den aktuelle strengen tilh\u00f8rer. Denne mekanismen virker kun i uttrykk omkranset av ${}.<\/p>\n<p><\/p>\n<p>Som kan merkast, har det kome visuelle mark\u00f8rar som indikerer typen av variabel (som streng, tal, matrise osv.). Det er ogs\u00e5 mogleg \u00e5 endre autokompliteringsmodus (for eksempel kan ein velje autokomplettering med variablar eller overskrifter). Men sj\u00f8lv dette er ikkje det viktigaste!<\/p>\n<p><\/p>\n<p>For det f\u00f8rste, autokomplettering fungerer til og med i uttrykk (der det er mogleg). Slik ser det ut:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hva gj\u00f8r TestMace bedre enn Postman\" src=\"\/wp-content\/uploads\/2019\/12\/676721c8d12f6c43970ed335deb238f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Og for det andre er autokomplettering no ogs\u00e5 tilgjengeleg i skript. Ta ein titt p\u00e5 korleis det fungerer!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hva gj\u00f8r TestMace bedre enn Postman\" src=\"\/wp-content\/uploads\/2019\/12\/3b6b4335447c0cbed7044d98831001dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Det er ingen mening \u00e5 samanlikne denne funksjonen med Postman \u2013 der er autokomplettering avgrensa til berre statiske lister over variablar, overskrifter og verdiane deira (rett meg om eg har gl\u00f8ymt noko). Skript f\u00e5r ikkje autokomplettering \ud83d\ude41<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Konklusjon<\/h1>\n<p><\/p>\n<p>I oktober fylte det eitt \u00e5r sidan utviklinga av produktet v\u00e5rt starta. I l\u00f8pet av denne tida har vi klart \u00e5 gjere mykje og har n\u00e5dd opp til konkurrentane v\u00e5re p\u00e5 nokre parameter. Men uansett, v\u00e5rt m\u00e5l er \u00e5 lage eit verkeleg brukervennleg verkt\u00f8y for arbeid med API. Vi har framleis mykje arbeid igjen, her er ein omtrentlig utviklingsplan for prosjektet v\u00e5rt det kommende \u00e5ret: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/roadmap\/\">https:\/\/testmace.com\/roadmap<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Tilbakemeldingane fr\u00e5 dykk gir oss betre oversyn over mengda av funksjonar, og st\u00f8tta dykkar gir oss styrke og tryggleik til \u00e5 vite at vi gjer noko nyttig. Det har seg slik at i dag er ein viktig dag for prosjektet v\u00e5rt \u2013 dagen for publiseringa av TestMace p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.producthunt.com\/posts\/testmace\">ProductHunt<\/a><\/noindex>. Vennligst st\u00f8tt prosjektet v\u00e5rt, det betyr mykje for oss. Spesielt sidan det er eit fristande tilbod p\u00e5 PH-sida v\u00e5r i dag, og det er avgrensa<\/p>\n<p>Kilde: <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.5 - 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\/no\/blog\/news\/chem-testmace-luchshe-postman\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Kva gjer TestMace betre enn Postman | ProHoster","description":"Hei alle sammen, her er vi","canonical_url":"https:\/\/prohoster.info\/no\/blog\/news\/chem-testmace-luchshe-postman","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/54188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=54188"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/54188\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=54188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=54188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=54188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}