{"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\/da\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2014 en kraftfuld IDE til arbejde med API","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hej alle! I dag vil vi gerne pr\u00e6sentere vores produkt for IT-samfundet \u2014 en IDE til arbejde med API'er <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex>. Nogle af jer kender m\u00e5ske allerede til os fra <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">tidligere artikler<\/a><\/noindex>. Men der har ikke v\u00e6ret en omfattende anmeldelse af v\u00e6rkt\u00f8jet, s\u00e5 vi udbedrer denne \u00e6rgerlige mangel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftfuld IDE til arbejde med API\" 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\">Motivation<\/h1>\n<p><\/p>\n<p>Lad os starte med, hvordan vi faktisk kom til at leve s\u00e5dan og besluttede os for at udvikle dit eget v\u00e6rkt\u00f8j til avanceret arbejde med API. Vi begynder med en liste over de funktionelle muligheder, som produktet, som vi mener kan kaldes en &#171;IDE til arbejdet med API&#187;, b\u00f8r have:<\/p>\n<p><\/p>\n<ul>\n<li>Oprettelse og udf\u00f8relse af anmodninger og scripts (sekvenser af anmodninger)<\/li>\n<li>Skrivning af forskellige typer tests<\/li>\n<li>Generering af tests<\/li>\n<li>H\u00e5ndtering af API-dokumentation, inklusive import fra formater som Swagger, OpenAPI, WADL osv.<\/li>\n<li>Mocking af anmodninger<\/li>\n<li>God support for et eller flere programmeringssprog til skrivning af scripts, inklusive integration med popul\u00e6re biblioteker<\/li>\n<li>osv.<\/li>\n<\/ul>\n<p><\/p>\n<p>Listen kan udvides efter behov. Det er vigtigt ikke kun at skabe selve IDE'en, men ogs\u00e5 en bestemt infrastruktur, s\u00e5som cloud-synkronisering, kommandolinjev\u00e6rkt\u00f8jer, online overv\u00e5gning osv. I de senere \u00e5r har trends ikke kun dikteret et kraftfuldt funktionalitet, men ogs\u00e5 et brugervenligt interface.<\/p>\n<p><\/p>\n<p>Hvem har brug for et s\u00e5dant v\u00e6rkt\u00f8j? \u00c5benbart alle, der p\u00e5 en eller anden m\u00e5de er involveret i udvikling og testning af API'er \u2014 udviklere og testere =). For de f\u00f8rstn\u00e6vnte er det ofte tilstr\u00e6kkeligt at udf\u00f8re enkeltanmodninger og simple scripts, mens det for testere er et af de vigtigste v\u00e6rkt\u00f8jer, der udover dette b\u00f8r inkludere en kraftfuld mekanisme til at skrive tests med mulighed for at k\u00f8re dem i CI.<\/p>\n<p><\/p>\n<p>S\u00e5, i overensstemmelse med disse retningslinjer, begyndte vi at udvikle vores produkt. Lad os se, hvad vi har opn\u00e5et p\u00e5 dette stadium.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">Hurtig start<\/h1>\n<p><\/p>\n<p>Lad os starte med den f\u00f8rste introduktion til applikationen. Du kan downloade den <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">p\u00e5 vores hjemmeside<\/a><\/noindex>. I \u00f8jeblikket underst\u00f8ttes alle 3 hovedplatforme \u2014 Windows, Linux, MacOS. Download, installer, start. Ved f\u00f8rste opstart kan du se f\u00f8lgende vindue:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftfuld IDE til arbejde med API\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Klik p\u00e5 plus-tegnet \u00f8verst i indholdsomr\u00e5det for at oprette din f\u00f8rste anmodning. Fanen med anmodningen ser s\u00e5ledes ud:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftfuld IDE til arbejde med API\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lad os se n\u00e6rmere p\u00e5 det. Foresp\u00f8rgselsgr\u00e6nsefladen ligner meget gr\u00e6nsefladen fra popul\u00e6re REST-klienter, hvilket g\u00f8r overgangen fra s\u00e5danne v\u00e6rkt\u00f8jer lettere. Lad os udf\u00f8re den f\u00f8rste foresp\u00f8rgsel p\u00e5 url <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 kraftfuld IDE til arbejde med API\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Umiddelbart ser response-panelet heller ikke ud til at bringe nogen overraskelser. Men jeg vil gerne p\u00e5pege nogle punkter:<\/p>\n<p><\/p>\n<ol>\n<li>Response-kroppen pr\u00e6senteres som et tr\u00e6, hvilket b\u00e5de tilf\u00f8jer information og g\u00f8r det muligt at tilf\u00f8je nogle interessante funktioner, som jeg n\u00e6vner nedenfor.<\/li>\n<li>Der er en faneblad for Assertions, hvor en liste over test for denne foresp\u00f8rgsel vises.<\/li>\n<\/ol>\n<p><\/p>\n<p>Som det kan ses, kan vores v\u00e6rkt\u00f8j ogs\u00e5 bruges som en praktisk REST-klient. Men vi ville ikke v\u00e6re her, hvis dets funktioner kun omfattede at sende foresp\u00f8rgsler. Nedenfor vil jeg forklare de grundl\u00e6ggende begreber og funktionalitet i TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Grundl\u00e6ggende begreber og muligheder<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">Node<\/h2>\n<p><\/p>\n<p>Funktionaliteten i TestMace er opdelt efter forskellige typer noder. I eksemplet ovenfor har vi vist arbejdet med RequestStep-noden. Men der er nu ogs\u00e5 tilg\u00e6ngelige f\u00f8lgende typer noder i applikationen:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Dette er noden, som kan bruges til at oprette en foresp\u00f8rgsel. Som et underordnet element kan den kun have \u00e9n Assertion-node.<\/li>\n<li>Assertion. Noden bruges til at skrive tests. Den kan kun v\u00e6re en underordnet node for RequestStep-noden.<\/li>\n<li>Folder. Giver mulighed for at gruppere Folder og RequestStep-noder inden for sig.<\/li>\n<li>Project. Dette er rodenoden, der automatisk oprettes, n\u00e5r et projekt oprettes. Ellers gentager den funktionaliteterne fra Folder-noden.<\/li>\n<li>Link. Et link til en Folder- eller RequestStep-node. Giver mulighed for at genbruge foresp\u00f8rgsler og scripts.<\/li>\n<li>osv.<\/li>\n<\/ul>\n<p><\/p>\n<p>Noderne findes i scratches (panelet nederst til venstre, der fungerer som en hurtig m\u00e5de at oprette &#171;engangs&#187; foresp\u00f8rgsler) og i project (panelet \u00f8verst til venstre), som vi vil uddybe.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Projekt<\/h2>\n<p><\/p>\n<p>N\u00e5r du starter applikationen, kunne du have bem\u00e6rket den ensomme r\u00e6kke Project i \u00f8verste venstre hj\u00f8rne. Dette er roden af projektets tr\u00e6. N\u00e5r projektet starts, oprettes et midlertidigt projekt, hvis sti afh\u00e6nger af dit operativsystem. P\u00e5 ethvert tidspunkt kan du flytte projektet til et sted, der passer dig.<\/p>\n<p><\/p>\n<p>Hovedform\u00e5let med projektet er at gemme arbejdet i filsystemet og synkronisere det gennem versionskontrolsystemer, k\u00f8re scripts i CI, gennemg\u00e5 \u00e6ndringer osv.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Variabler<\/h2>\n<p><\/p>\n<p>Variabler er en af de centrale mekanismer i applikationen. De af jer, der arbejder med v\u00e6rkt\u00f8jer som TestMace, har m\u00e5ske allerede en id\u00e9 om, hvad der er p\u00e5 spil. S\u00e5, variabler er en m\u00e5de at gemme f\u00e6lles data og kommunikere mellem noder. Et eksempel kunne v\u00e6re milj\u00f8variabler i Postman eller Insomnia. Men vi har taget et skridt videre og videreudviklet ideen. I TestMace kan variabler s\u00e6ttes p\u00e5 nodeniveau. Enhver. Der eksisterer ogs\u00e5 en mekanisme til at arve variabler fra forf\u00e6dre og til at overskrive variabler i efterkommere. Derudover er der et antal indbyggede variabler, hvis navne starter med <code>$<\/code>. Her er nogle af dem:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 henvisning til variablerne fra den foreg\u00e5ende node<\/li>\n<li><code>$nextStep<\/code> \u2014 henvisning til variablerne fra den n\u00e6ste node<\/li>\n<li><code>$parent<\/code> \u2014 det samme, men kun for en forfader<\/li>\n<li><code>$response<\/code> \u2014 svar fra serveren<\/li>\n<li><code>$env<\/code> \u2014 de nuv\u00e6rende milj\u00f8variabler<\/li>\n<li><code>$dynamicVar<\/code> \u2014 dynamiske variabler, der oprettes under udf\u00f8relsen af \u200b\u200bscenariet eller anmodningen<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 dette er i bund og grund almindelige variabler p\u00e5 Project-node niveau, men s\u00e6t variablerne \u00e6ndres afh\u00e6ngigt af det valgte milj\u00f8. <\/p>\n<p><\/p>\n<p>Adgang til en variabel sker gennem <code>${variable_name}<\/code><br \/>\nSom v\u00e6rdi for variablen kan der v\u00e6re en anden variabel, eller endda et helt udtryk. For eksempel, som en variabel kan url v\u00e6re et udtryk af typen<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Det er v\u00e6rd at n\u00e6vne muligheden for at tildele variabler under scriptets udf\u00f8relse. For eksempel opst\u00e5r der ofte behov for at gemme loginoplysninger (token eller hele headeren), der kom fra serveren efter et vellykket login. TestMace g\u00f8r det muligt at gemme s\u00e5danne data i dynamiske variabler i en af forf\u00e6drene. For at undg\u00e5 kollisioner med allerede eksisterende &#171;statisk&#187; variabler, er de dynamiske variabler placeret i et separat objekt. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Scenarier<\/h2>\n<p><\/p>\n<p>Ved at bruge alle ovenn\u00e6vnte funktioner kan du udf\u00f8re hele scenarier af anmodninger. For eksempel, oprettelse af en enhed -&gt; anmodning om enhed -&gt; sletning af enhed. I dette tilf\u00e6lde kan du for eksempel bruge Folder-noden til at gruppere flere RequestStep-noder.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Autoudfyldning og fremh\u00e6velse af udtrykkets v\u00e6rdi<\/h2>\n<p><\/p>\n<p>For convenience when working with variables (and more), auto-completion is essential. And of course, highlighting the value of the expression makes it easier and more convenient to clarify what a certain variable equals. This is one of those cases where it's better to see once than to hear a hundred times:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftfuld IDE til arbejde med API\" 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 auto-completion is implemented not only for variables but also, for example, for headers, specific header values (like auto-completion 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>Canceling\/repeating changes is very handy, but for some reason, it's not implemented everywhere (API tools are no exception). But we're not like that!) Undo\/redo is implemented throughout the entire project, allowing not only to cancel the editing of a specific node but also its creation, deletion, movement, 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 its 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 type, and at present, there are several types of assertions.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Compare values \u2014 sammenligner ganske enkelt 2 v\u00e6rdier. Der er flere sammenligningsoperatorer &#171;lig med&#187;, &#171;ikke lig med&#187;, &#171;st\u00f8rre end&#187;, &#171;st\u00f8rre end eller lig med&#187;, &#171;mindre end&#187;, &#171;mindre end eller lig med&#187;.<\/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 is present according to the selector in XML.<\/p>\n<p>\n<\/li>\n<li>\n<p>JavaScript assertion \u2014 an arbitrary script in JavaScript that returns true if successful and false if it fails.<\/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, for example, how the dialog for creating a compare values assertion looks:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftfuld IDE til arbejde med API\" 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 kraftfuld IDE til arbejde med API\" 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 faced with them, you can use JavaScript assertions. Here, TestMace also provides a comfortable environment with auto-completion, syntax highlighting, and even a static analyzer.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">API description<\/h2>\n<p><\/p>\n<p>TestMace giver dig ikke kun mulighed for at bruge API'et, men ogs\u00e5 at dokumentere det. Beskrivelsen har en hierarkisk struktur, der passer godt ind i resten af projektet. Derudover er det i \u00f8jeblikket muligt at importere API-beskrivelse fra Swagger 2.0 \/ OpenAPI 3.0 formater. Beskrivelsen er ikke bare d\u00f8dt v\u00e6gt; den integreres t\u00e6t med resten af projektet, is\u00e6r med autocomplete til URLs, HTTP-overskrifter, foresp\u00f8rgselsparametre og mere, og i fremtiden planl\u00e6gger vi at tilf\u00f8je tests for at sikre, at svaret stemmer overens med API-beskrivelsen.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Node-sharing<\/h2>\n<p><\/p>\n<p>Case: Du \u00f8nsker at dele en problematisk foresp\u00f8rgsel eller endda et helt scenarie med en kollega eller blot vedh\u00e6fte det til en fejlrapport. TestMace d\u00e6kker ogs\u00e5 dette scenario: applikationen giver mulighed for at serialisere enhver node og endda et undertr\u00e6 til en URL. Copy-paste, og du har nemt flyttet foresp\u00f8rgslen til en anden maskine eller et andet projekt.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">Menneskel\u00e6sbart format til projektlagring<\/h2>\n<p><\/p>\n<p>I \u00f8jeblikket gemmes hver node i en separat fil med .yml-endelsen (som i tilf\u00e6ldet med Assertion noden) eller i en mappe med nodens navn og en index.yml fil i den.<br \/>\nHer er, hvordan en foresp\u00f8rgselsfil ser ud, som vi lavede i gennemgangen 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 kan se, er alt meget klart. Hvis \u00f8nskes, kan dette format redigeres komfortabelt manuelt.<\/p>\n<p><\/p>\n<p>Hierarkiet af mapper i filsystemet afspejler fuldst\u00e6ndigt hierarkiet af noderne i projektet. For eksempel mappes et scenarie som:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftfuld IDE til arbejde med API\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>I filsystemet til f\u00f8lgende struktur (kun hierarkiet af mapper vises, men essensen er klar)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 en kraftfuld IDE til arbejde med API\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dette letter gennemgangen af projektet.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Import fra Postman<\/h2>\n<p><\/p>\n<p>Efter at have l\u00e6st det ovenst\u00e5ende, vil nogle brugere m\u00e5ske \u00f8nsker at pr\u00f8ve (er det ikke rigtigt?) det nye produkt eller (hvem ved?) bruge det fuldt ud i deres projekt. Men migreringen kan blive stoppet af en masse arbejde i samme Postman. Til s\u00e5danne tilf\u00e6lde underst\u00f8tter TestMace import af samlinger fra Postman. I \u00f8jeblikket underst\u00f8ttes import uden tests, men vi udelukker ikke, at vi ogs\u00e5 vil st\u00f8tte dem i fremtiden.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Planer<\/h1>\n<p><\/p>\n<p>Jeg h\u00e5ber, at mange af dem, der har l\u00e6st indtil nu, finder vores produkt attraktivt. Men det er ikke alt! Arbejdet med produktet er i fuld gang, og her er nogle af de funktioner, vi planl\u00e6gger at tilf\u00f8je snart.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">Sky-synkronisering<\/h2>\n<p><\/p>\n<p>En af de mest efterspurgte funktioner. I \u00f8jeblikket tilbyder vi at bruge versionskontrolsystemer til synkronisering, for hvilket vi g\u00f8r formatet mere venligt for denne type opbevaring. Men ikke alle passer til denne arbejdsmetode, s\u00e5 vi planl\u00e6gger at tilf\u00f8je en mere almindelig synkroniseringsmekanisme gennem vores servere. <\/p>\n<p><\/p>\n<h2 id=\"cli\">flagen -k til integration med<\/h2>\n<p><\/p>\n<p>Som n\u00e6vnt tidligere, s\u00e5 kan IDE-niveau produkter ikke undg\u00e5 forskellige integrationer med allerede eksisterende applikationer eller workflows. CLI er netop n\u00f8dvendigt for at integrere tests skrevet i TestMace i processen for kontinuerlig integration. Arbejdet med CLI er i fuld gang, i de tidlige versioner vil der v\u00e6re en projektstart med en simpel konsollrapport. P\u00e5 sigt planl\u00e6gges det at tilf\u00f8je rapportering i JUnit-format.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Plugin-system<\/h2>\n<p><\/p>\n<p>P\u00e5 trods af al styrken i vores v\u00e6rkt\u00f8j er m\u00e6ngden af sager, der kr\u00e6ver l\u00f8sning, ubegribelig. I sidste ende er der opgaver, der er specifikke for et bestemt projekt. Derfor planl\u00e6gger vi at tilf\u00f8je et SDK til plugin-udvikling, s\u00e5 enhver udvikler kan tilf\u00f8je funktionalitet efter behov.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Udvidelse af sortimentet af nodetyper<\/h2>\n<p><\/p>\n<p>Dette udvalg af noder d\u00e6kker ikke alle tilf\u00e6lde, der er n\u00f8dvendige for brugeren. Noder, der planl\u00e6gges at blive tilf\u00f8jet:<\/p>\n<p><\/p>\n<ul>\n<li>Script-node \u2014 transformerer og placerer data ved hj\u00e6lp af js og den relevante API. Ved at bruge denne type node kan man lave ting som pre-request og post-request scripts i Postman.<\/li>\n<li>GraphQL-node \u2014 support for graphql<\/li>\n<li>Custom assertion-node \u2014 giver mulighed for at udvide det eksisterende s\u00e6t af assertions i projektet<br \/>\nNaturligvis er dette ikke den endelige liste, den vil l\u00f8bende blive opdateret, ogs\u00e5 takket v\u00e6re jeres feedback.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">FAQ<\/h1>\n<p><\/p>\n<p><strong>Hvordan adskiller I jer fra Postman?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>Konceptet med noder, der n\u00e6sten uendeligt kan skalere projektets funktionalitet<\/li>\n<li>Menneskel\u00e6sbar format for projektet, der gemmes i filsystemet, hvilket forenkler arbejdet med versionskontrolsystemer<\/li>\n<li>Muligheden for at oprette tests uden programmering og mere avanceret underst\u00f8ttelse af js i testeditoren (autofuldf\u00f8relse, statisk analyse)<\/li>\n<li>Avanceret autoudfyldning og fremh\u00e6vning af nuv\u00e6rende variabelv\u00e6rdier<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>Er det et open-source produkt?<\/strong><\/p>\n<p><\/p>\n<p>Nej, koden er i \u00f8jeblikket lukket, men vi overvejer at \u00e5bne kilden i fremtiden.<\/p>\n<p><\/p>\n<p><strong>Hvordan lever I?)<\/strong><\/p>\n<p><\/p>\n<p>Ved siden af den gratis version planl\u00e6gger vi at udgive en betalt version af produktet. Den vil prim\u00e6rt indeholde funktioner, der kr\u00e6ver server-side, s\u00e5som synkronisering.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Konklusion<\/h1>\n<p><\/p>\n<p>Vores projekt bev\u00e6ger sig hurtigt mod en stabil release. Men produktet kan allerede bruges, og de positive tilbagemeldinger fra vores tidlige brugere bekr\u00e6fter dette. Vi indsamler aktivt feedback, for uden t\u00e6t samarbejde med f\u00e6llesskabet er det umuligt at bygge et godt v\u00e6rkt\u00f8j. Du kan finde os her:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Officiel hjemmeside<\/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 jeres \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.3 - 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\/da\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 kraftfuld IDE til arbejde med API | ProHoster","description":"Hej alle! I dag vil vi pr\u00e6sentere vores produkt for IT-f\u00e6llesskabet \u2014 en IDE til arbejde med API TestMace.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/54187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}