{"id":54187,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/testmace-moshhnaya-ide-dlya-raboty-s-api"},"modified":"2020-02-18T14:02:10","modified_gmt":"2020-02-18T11:02:10","slug":"testmace-moshhnaya-ide-dlya-raboty-s-api","status":"publish","type":"post","link":"https:\/\/prohoster.info\/no\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2014 en kraftig IDE for API-arbeid","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hei alle sammen! I dag \u00f8nsker vi \u00e5 presentere v\u00e5rt produkt for IT-samfunnet - en IDE for API-arbeid <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex>. Kanskje noen av dere allerede kjenner oss fra <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">tidligere artikler<\/a><\/noindex>. Men det har ikke v\u00e6rt noen omfattende gjennomgang av verkt\u00f8yet, s\u00e5 vi retter opp i denne svikten.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftig IDE for API-arbeid\" src=\"\/wp-content\/uploads\/2019\/12\/798c0783510a07e7fd162bdf14151c29.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"motivaciya\">Motivasjon<\/h1>\n<p><\/p>\n<p>Vi vil gjerne begynne med hvordan vi kom hit i livet og bestemte oss for \u00e5 lage v\u00e5rt eget verkt\u00f8y for avansert arbeid med API. La oss starte med en liste over funksjonene som produktet v\u00e5rt b\u00f8r ha, som vi mener kan beskrives som \"IDE for API-arbeid\":<\/p>\n<p><\/p>\n<ul>\n<li>Oppretting og utf\u00f8ring av foresp\u00f8rsel og script (sekvenser av foresp\u00f8rsel)<\/li>\n<li>Skriving av ulike typer tester<\/li>\n<li>Generering av tester<\/li>\n<li>Jobbe med API-beskrivelse, inkludert import fra formater som Swagger, OpenAPI, WADL osv.<\/li>\n<li>Mocking av foresp\u00f8rsel<\/li>\n<li>God st\u00f8tte for ett eller flere programmeringsspr\u00e5k for skripting, inkludert integrasjon med popul\u00e6re biblioteker<\/li>\n<li>osv.<\/li>\n<\/ul>\n<p><\/p>\n<p>Listen kan utvides etter smak. Det er ogs\u00e5 viktig \u00e5 lage ikke bare selve IDE-en, men ogs\u00e5 en bestemt infrastruktur, som skylagring, kommandolinjeverkt\u00f8y, online overv\u00e5kningstjeneste osv. Til syvende og sist dikterer trendene de siste \u00e5rene ikke bare kraftige funksjoner i applikasjonen, men ogs\u00e5 et behagelig grensesnitt.<\/p>\n<p><\/p>\n<p>Hvem trenger et slikt verkt\u00f8y? \u00c5penbart alle som er involvert i utvikling og testing av API-er - utviklere og testere =). For de f\u00f8rstnevnte er det ofte tilstrekkelig med enkeltforesp\u00f8rsel og enkle skripter, mens for testere er dette et av de viktigste verkt\u00f8yene som i tillegg m\u00e5 inkludere sterke mekanismer for \u00e5 skrive tester med mulighet for kj\u00f8ring i CI.<\/p>\n<p><\/p>\n<p>S\u00e5, i tr\u00e5d med disse retningslinjene, begynte vi \u00e5 utvikle v\u00e5rt produkt. La oss ta en titt p\u00e5 hva vi har oppn\u00e5dd s\u00e5 langt.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">Rask start<\/h1>\n<p><\/p>\n<p>La oss begynne med \u00e5 bli kjent med applikasjonen. Du kan laste den ned <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">p\u00e5 v\u00e5r nettside<\/a><\/noindex>. For \u00f8yeblikket st\u00f8ttes alle 3 hovedplattformer - Windows, Linux, MacOS. Last ned, installer og kj\u00f8r. Ved f\u00f8rste oppstart kan du se f\u00f8lgende vindu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftig IDE for API-arbeid\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Klikk p\u00e5 pluss-tegnet \u00f8verst i innholdsomr\u00e5det for \u00e5 opprette den f\u00f8rste foresp\u00f8rselen. Fanen med foresp\u00f8rselen ser slik ut:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftig IDE for API-arbeid\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La oss se n\u00e6rmere p\u00e5 det. Foresp\u00f8rselgrensesnittet ligner sterkt p\u00e5 grensesnittene til popul\u00e6re REST-klienter, noe som gj\u00f8r migreringen fra slike verkt\u00f8y enklere. La oss utf\u00f8re den f\u00f8rste foresp\u00f8rselen til URL-en <noindex><a rel=\"nofollow\" href=\"https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8\">https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftig IDE for API-arbeid\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ved f\u00f8rste \u00f8yekast ser det ut til at responspanelet ikke gir noen overraskelser. Men jeg vil p\u00e5peke noen punkter:<\/p>\n<p><\/p>\n<ol>\n<li>Kroppen av responsen har en trestruktur, noe som dels gir mer informasjon, og dels tillater \u00e5 legge til noen interessante funksjoner, som jeg vil forklare nedenfor.<\/li>\n<li>Det finnes en faneblad for Assertions, hvor testlisten for denne foresp\u00f8rselen vises.<\/li>\n<\/ol>\n<p><\/p>\n<p>Som du kan se, kan verkt\u00f8yet v\u00e5rt brukes som en praktisk REST-klient. Men vi ville ikke v\u00e6re her hvis mulighetene var begrenset til bare \u00e5 sende foresp\u00f8rsler. Jeg vil n\u00e5 forklare de grunnleggende begrepene og funksjonalitetene til TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Grunnleggende begreper og muligheter<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">Nod<\/h2>\n<p><\/p>\n<p>Funksjonaliteten til TestMace er delt etter ulike nodetyper. I eksemplet ovenfor viste vi hvordan RequestStep-noden fungerer. Men for \u00f8yeblikket er f\u00f8lgende nodetyper ogs\u00e5 tilgjengelige i applikasjonen:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Dette er noden som brukes til \u00e5 lage en foresp\u00f8rsel. Den kan bare ha ett Assertion-noden som barnet.<\/li>\n<li>Assertion. Noden brukes til \u00e5 skrive tester. Den kan bare v\u00e6re en barnenode for RequestStep-noden.<\/li>\n<li>Folder. Lar deg gruppere Folder- og RequestStep-noder inni seg.<\/li>\n<li>Project. Dette er rot-noden, som automatisk opprettes ved oppretting av prosjektet. Ellers gjentar det funksjonalitetene til Folder-noden.<\/li>\n<li>Link. En lenke til en Folder- eller RequestStep-node. Lar deg gjenbruke foresp\u00f8rslene og scenariene.<\/li>\n<li>osv.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nodene er plassert i scratches (panelet nederst til venstre, som er for rask oppretting av \"engang\"-foresp\u00f8rsel) og i project (panelet \u00f8verst til venstre), som vi vil g\u00e5 n\u00e6rmere inn p\u00e5.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Prosjekt<\/h2>\n<p><\/p>\n<p>N\u00e5r du starter applikasjonen, kan du ha lagt merke til den ensomme linjen Project i \u00f8verste venstre hj\u00f8rne. Dette er rotpunktet for prosjektet. N\u00e5r prosjektet startes, opprettes et midlertidig prosjekt, og banen til dette avhenger av operativsystemet ditt. Du kan n\u00e5r som helst flytte prosjektet til et sted som er mer praktisk for deg.<\/p>\n<p><\/p>\n<p>Hovedform\u00e5let med prosjektet er \u00e5 kunne lagre arbeidet i filsystemet og deretter synkronisere gjennom versjonskontrollsystemer, kj\u00f8re scenarier i CI, gjennomg\u00e5 endringer, osv.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Variabler<\/h2>\n<p><\/p>\n<p>Variabler er en av de viktige mekanismene i applikasjonen. De av dere som jobber med verkt\u00f8y som TestMace, har kanskje allerede forst\u00e5tt hva dette handler om. S\u00e5, variabler er en m\u00e5te \u00e5 lagre felles data og kommunisere mellom noder. Et analogt eksempel er milj\u00f8variabler i Postman eller Insomnia. Men vi har g\u00e5tt videre og utviklet temaet. I TestMace kan variabler settes p\u00e5 nodeniv\u00e5. Enhver. Det finnes ogs\u00e5 en mekanisme for \u00e5 arve variabler fra foreldrene og overstyre variabler i avkom. I tillegg finnes det en rekke innebygde variabler, navnene p\u00e5 innebygde variabler begynner med <code>$<\/code>. Her er noen av dem:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 referanse til variabler fra forrige node<\/li>\n<li><code>$nextStep<\/code> \u2014 referanse til variabler fra neste node<\/li>\n<li><code>$parent<\/code> \u2014 det samme, men for forelderen<\/li>\n<li><code>$response<\/code> \u2014 svar fra serveren<\/li>\n<li><code>$env<\/code> \u2014 n\u00e5v\u00e6rende milj\u00f8variabler<\/li>\n<li><code>$dynamicVar<\/code> \u2014 dynamiske variabler som opprettes under kj\u00f8ring av scenariet eller foresp\u00f8rselen<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 dette er egentlig vanlige variabler p\u00e5 prosjekt niv\u00e5, men settet av milj\u00f8variabler endres avhengig av det valgte milj\u00f8et. <\/p>\n<p><\/p>\n<p>Tilgang til variabelen skjer gjennom <code>${variable_name}<\/code><br \/>\nSom verdi av variabelen kan v\u00e6re en annen variabel, eller til og med en hel uttrykk. For eksempel kan en variabel url ha et uttrykk av typen<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Det er verdt \u00e5 merke seg muligheten for \u00e5 tildele variabler under kj\u00f8ring av skriptet. For eksempel oppst\u00e5r det ofte behov for \u00e5 lagre autentiseringsdata (token eller hele hodet) som kom fra serveren etter vellykket innlogging. TestMace lar deg lagre slike data i dynamiske variabler til en av foreldrene. For \u00e5 unng\u00e5 kollisjoner med allerede eksisterende \"statisk\"-variabler, er dynamiske variabler plassert i et eget objekt. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Scenarier<\/h2>\n<p><\/p>\n<p>Ved \u00e5 bruke alle de nevnte mulighetene kan du utf\u00f8re hele scenarier av foresp\u00f8rslene. For eksempel, opprette en enhet -&gt; foresp\u00f8rre enheten -&gt; slette enheten. I dette tilfellet kan du for eksempel bruke Folder noden for \u00e5 gruppere flere RequestStep noder.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Autofullf\u00f8ring og fremheving av uttrykkets verdi<\/h2>\n<p><\/p>\n<p>For convenient work with variables (and not only), autocompletion is necessary. And of course, highlighting the value of an expression makes it easier and more convenient to clarify what a particular variable represents. This is one of those cases where it's better to see something once than to hear about it a hundred times.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftig IDE for API-arbeid\" src=\"\/wp-content\/uploads\/2019\/12\/cf9d30c9623b18575825d4282b8fe3e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>It should be noted that autocompletion is not only implemented for variables, but also, for example, for headers, values of certain headers (like autocompletion for the Content-Type header), protocols, and much more. The list is constantly expanding as the application grows.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">Undo\/redo<\/h2>\n<p><\/p>\n<p>Undo\/redo functions are very handy; however, for some reason, they are not implemented everywhere (and tools for working with APIs are no exception). But we're not like that!) Undo\/redo is implemented across the entire project, allowing you to undo not only the editing of a specific node but also its creation, deletion, moving, etc. The most critical operations require confirmation.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov\">Creating tests<\/h2>\n<p><\/p>\n<p>The Assertion node is responsible for creating tests. One of the main features is the ability to create tests without programming, using built-in editors. <\/p>\n<p><\/p>\n<p>The Assertion node consists of a set of assertions. Each assertion has its own type; currently, there are several types of assertions.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Sammenlign verdier \u2014 sammenligner bare 2 verdier. Det finnes flere sammenligningsoperatorer \"lik\", \"ulik\", \"st\u00f8rre\", \"st\u00f8rre enn eller lik\", \"mindre\", \"mindre enn eller lik\".<\/p>\n<p>\n<\/li>\n<li>\n<p>Contains value \u2014 checks for the presence of a substring within a string.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath \u2014 checks that a specific value exists by the selector in XML.<\/p>\n<p>\n<\/li>\n<li>\n<p>JavaScript assertion \u2014 an arbitrary script written in JavaScript that returns true upon success and false upon failure.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>I should note that only the last one requires programming skills from the user; the other 3 assertions are created using a graphical interface. Here's how the dialog for creating a compare values assertion looks:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftig IDE for API-arbeid\" src=\"\/wp-content\/uploads\/2019\/12\/e71e11fb0fb664d1d9751a71fbdcc850.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>The cherry on top is the quick creation of assertions from the response; just take a look at this!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftig IDE for API-arbeid\" src=\"\/wp-content\/uploads\/2019\/12\/3b86084419339a7a05a3548df5c12d6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>However, such assertions have obvious limitations, and when you encounter them, you can use JavaScript assertions. Here, TestMace also provides a comfortable environment with autocompletion, syntax highlighting, and even a static analyzer.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">API Documentation<\/h2>\n<p><\/p>\n<p>TestMace gir deg ikke bare muligheten til \u00e5 bruke API-et, men ogs\u00e5 til \u00e5 dokumentere det. Beskrivelsen har ogs\u00e5 en hierarkisk struktur som integreres godt med resten av prosjektet. I tillegg er det n\u00e5 mulig \u00e5 importere API-beskrivelser fra Swagger 2.0 \/ OpenAPI 3.0 formater. Beskrivelsen ligger ikke bare stille, men integreres n\u00e6rt med resten av prosjektet, spesielt med auto-fullf\u00f8ring av URL-er, HTTP-hoder, sp\u00f8rringsparametere og mer. I fremtiden planlegger vi \u00e5 legge til tester for \u00e5 sjekke om svaret samsvarer med API-beskrivelsen.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Deling av noder<\/h2>\n<p><\/p>\n<p>Scenario: Du \u00f8nsker \u00e5 dele et problematisk sp\u00f8rring eller til og med et helt scenario med en kollega, eller bare legge det ved en feilrapport. TestMace dekker ogs\u00e5 dette scenariet: applikasjonen lar deg serialisere hvilken som helst node og til og med et undertre i en URL. Kopier-og-lim inn, og du har enkelt overf\u00f8rt sp\u00f8rringen til en annen maskin eller prosjekt.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">Menneskelig lesbart format for prosjektlagring<\/h2>\n<p><\/p>\n<p>For \u00f8yeblikket lagres hver node i en egen fil med filtypen yml (som i tilfellet med Assertion-noden), eller i en mappe med nodens navn og en index.yml-fil i den.<br \/>\nSlik ser filen med foresp\u00f8rselen ut, slik vi gjorde i anmeldelsen ovenfor:<\/p>\n<p>\n<b class=\"spoiler_title\">index.yml<\/b><\/p>\n<pre><code class=\"ruby\">children: []\nvariables: {}\ntype: RequestStep\nassignVariables: []\nrequestData:\n  request:\n    method: GET\n    url: 'https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8'\n  headers: []\n  disabledInheritedHeaders: []\n  params: []\n  body:\n    type: Json\n    jsonBody: ''\n    xmlBody: ''\n    textBody: ''\n    formData: []\n    file: ''\n    formURLEncoded: []\n  strictSSL: Inherit\nauthData:\n  type: inherit\nname: Scratch 1<\/code><\/pre>\n<p><\/p>\n<p>Som du ser, er alt veldig klart. Om \u00f8nskelig er det helt komfortabelt \u00e5 redigere dette formatet manuelt.<\/p>\n<p><\/p>\n<p>Hierarkiet av mapper i filsystemet gjentar fullt ut hierarkiet av noder i prosjektet. For eksempel, et scenario som:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftig IDE for API-arbeid\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mapper seg til f\u00f8lgende struktur i filsystemet (bare hierarkiet av mapper er vist, men poenget er klart)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftig IDE for API-arbeid\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dette letter prosessen med gjennomgang av prosjektet.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Import fra Postman<\/h2>\n<p><\/p>\n<p>Etter \u00e5 ha lest alt ovenfor, vil noen brukere gjerne pr\u00f8ve (er det ikke s\u00e5?) det nye produktet, eller (hvem vet?) ta det i bruk i sitt prosjekt. Men migrasjonen kan bli hindret av et stort antall ressurser i Postman. I slike tilfeller st\u00f8tter TestMace import av samlinger fra Postman. For \u00f8yeblikket st\u00f8ttes import uten tester, men vi utelukker ikke \u00e5 st\u00f8tte dem i fremtiden.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Planer<\/h1>\n<p><\/p>\n<p>Eg h\u00e5par at mange av dei som har lese hit, likte produktet v\u00e5rt. Men det er ikkje alt! Arbeidet med produktet g\u00e5r for fullt, og her er nokre funksjonar vi planlegg \u00e5 legge til snart.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">Sky-synkronisering<\/h2>\n<p><\/p>\n<p>Ei av dei mest etterspurte funksjonane. For tida tilbyr vi versjonskontrollsystem som synkroniseringsalternativ, og vi gjer formatet meir vennlig for lagring av denne typen. Men ikkje alle passar til denne arbeidsgangen, derfor planlegg vi \u00e5 legge til ein meir kjent synkroniseringsmekanisme via serverane v\u00e5re. <\/p>\n<p><\/p>\n<h2 id=\"cli\">I cli-runtime og kubectl<\/h2>\n<p><\/p>\n<p>Som nemnt tidlegare, kjem ikkje IDE-niv\u00e5 produkter utan ulike integrasjonar med eksisterande applikasjonar eller arbeidsganger. CLI er n\u00f8dvendig for \u00e5 integrere testarar skrivne i TestMace inn i prosessen med kontinuerleg integrasjon. Arbeidet med CLI er i full gang, og i tidlige versjonar vil prosjektet bli kj\u00f8rt med ein enkel konsollrapport. Det er planlagt \u00e5 legge til rapportutgifting i JUnit-format seinare.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Plugin-system<\/h2>\n<p><\/p>\n<p>Til tross for krafta i verkt\u00f8yet v\u00e5rt, er settet av saker som krev l\u00f8ysing uendelig. Til slutt er det oppg\u00e5ver som er spesifikke for bestemte prosjekt. Derfor planlegg vi \u00e5 legge til eit SDK for utvikling av plugins, slik at kvar utviklar kan legge til funksjonalitet etter eigne \u00f8nskjer.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Utvidelse av utvalet av nodetypar<\/h2>\n<p><\/p>\n<p>Dette settet av noder dekkjer ikkje alle sakene som brukaren treng. Nodene som er planlagt lagt til:<\/p>\n<p><\/p>\n<ul>\n<li>Script-node \u2014 konverterer og plasserer data ved \u00e5 bruke js og tilsvarande API. Ved \u00e5 bruke denne nodetypen kan ein lage ting som pre-request og post-request skript i Postman.<\/li>\n<li>GraphQL-node \u2014 st\u00f8tte for graphql<\/li>\n<li>Custom assertion-node \u2014 vil gjere det mogleg \u00e5 utvide settet av eksisterande assertionar i prosjektet<br \/>\nDet er sj\u00f8lvsagt ikkje den endelege lista, den vil bli kontinuerleg oppdatert, blant anna basert p\u00e5 tilbakemeldinga fr\u00e5 dykk.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">FAQ<\/h1>\n<p><\/p>\n<p><strong>Kva skil dykk fr\u00e5 Postman?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>Konsepter for noder som gjer det mogleg \u00e5 forsterke funksjonaliteten til prosjektet p\u00e5 nesten uendeleg vis<\/li>\n<li>Menneske-leseleg format for prosjektet med lagring i filsystemet, noko som forenklar bruken av versjonskontrollsystem<\/li>\n<li>Moglegheit for \u00e5 lage testar utan programmering og meir avansert st\u00f8tte for js i testeredit\u00f8ren (autofullf\u00f8ring, statisk analyse)<\/li>\n<li>Avansert automatisk utfylling og fremheving av gjeldende variabelverdier<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>Er dette et open-source produkt?<\/strong><\/p>\n<p><\/p>\n<p>Nei, per n\u00e5 er kildekoden lukket, men vi vurderer muligheten for \u00e5 \u00e5pne den i fremtiden.<\/p>\n<p><\/p>\n<p><strong>Hvordan tjener dere penger?)<\/strong><\/p>\n<p><\/p>\n<p>Sammen med den gratis versjonen planlegger vi \u00e5 lansere en betalt versjon av produktet. Denne vil prim\u00e6rt inneholde funksjoner som krever server-side st\u00f8tte, for eksempel synkronisering.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Konklusjon<\/h1>\n<p><\/p>\n<p>Prosjektet v\u00e5rt beveger seg raskt mot en stabil utgivelse. Men allerede n\u00e5 kan produktet brukes, og positive tilbakemeldinger fra v\u00e5re tidlige brukere bekrefter dette. Vi samler aktivt tilbakemeldinger, for uten n\u00e6rt samarbeid med samfunnet er det umulig \u00e5 lage et godt verkt\u00f8y. Du kan finne oss her:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Offisiell nettside<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/testmace\">Telegram<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/testmaceslackin.herokuapp.com\">Slack<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/testmace\">Facebook<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/TestMace-issues\">Issues-tracker<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Vi ser frem til deres \u00f8nsker og forslag!<\/p>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">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! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u043d\u0430\u0441 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435\u043e\u0431\u044a\u0435\u043c\u043b\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u0434\u043e\u0441\u0430\u0434\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a. \u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0442\u043e\u0433\u043e \u043a\u0430\u043a, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0442\u0430\u043a\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0440\u0435\u0448\u0438\u043b\u0438 [&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-54187","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! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\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\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\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\udd47TestMace \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/no\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\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\udd47TestMace \u2014 en kraftig IDE for arbeid med API | ProHoster","description":"Hei alle sammen! I dag \u00f8nsker vi \u00e5 presentere v\u00e5rt produkt for IT-samfunnet \u2014 en IDE for arbeid med API TestMace.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","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\udd47TestMace \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.","og:url":"https:\/\/prohoster.info\/no\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","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":"54187","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\/54187","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=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}