{"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\/de\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo zusammen! Heute m\u00f6chten wir der IT-Community unser Produkt vorstellen \u2013 eine IDE f\u00fcr die Arbeit mit APIs <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex>. M\u00f6glicherweise haben einige von Ihnen bereits von uns geh\u00f6rt durch <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">vorherigen Artikel<\/a><\/noindex>. Es gab jedoch keine umfassende \u00dcbersicht \u00fcber das Tool, daher beheben wir diesen \u00e4rgerlichen Mangel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs\" 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>Ich m\u00f6chte damit beginnen, wie wir zu diesem Leben gekommen sind und beschlossen haben, unser eigenes Tool f\u00fcr die erweiterte Arbeit mit APIs zu entwickeln. Beginnen wir mit der Liste der Funktionen, die das Produkt haben sollte, \u00fcber das man unserer Meinung nach sagen kann, dass es ein \u201eIDE f\u00fcr die Arbeit mit APIs\u201c ist:<\/p>\n<p><\/p>\n<ul>\n<li>Erstellen und Ausf\u00fchren von Anfragen und Skripten (Anfragesequenzen)<\/li>\n<li>Schreiben verschiedener Testarten<\/li>\n<li>Generierung von Tests<\/li>\n<li>Arbeiten mit API-Beschreibungen, einschlie\u00dflich Import aus Formaten wie Swagger, OpenAPI, WADL usw.<\/li>\n<li>Mocking von Anfragen<\/li>\n<li>Gute Unterst\u00fctzung f\u00fcr eine oder mehrere Programmiersprachen zum Schreiben von Skripten, einschlie\u00dflich Integration mit beliebten Bibliotheken<\/li>\n<li>usw.<\/li>\n<\/ul>\n<p><\/p>\n<p>Die Liste kann nach Belieben erweitert werden. Es ist wichtig, nicht nur die IDE selbst zu schaffen, sondern auch eine bestimmte Infrastruktur, wie Cloud-Synchronisation, Kommandozeilenwerkzeuge, einen Online-\u00dcberwachungsdienst usw. Schlie\u00dflich diktieren uns die Trends der letzten Jahre, dass nicht nur die leistungsstarken Funktionen der Anwendung wichtig sind, sondern auch ihr angenehmes Interface.<\/p>\n<p><\/p>\n<p>F\u00fcr wen ist ein solches Werkzeug n\u00fctzlich? Offensichtlich f\u00fcr all diejenigen, die irgendwie mit der Entwicklung und dem Testen von APIs zu tun haben \u2013 Entwickler und Tester =). W\u00e4hrend f\u00fcr die Entwickler oft einfache Anfragen und einfache Szenarien ausreichen, ist es f\u00fcr die Tester eines der wichtigsten Werkzeuge, das nebenbei auch einen leistungsstarken Mechanismus zum Schreiben von Tests mit der M\u00f6glichkeit ihrer Ausf\u00fchrung in CI enthalten sollte.<\/p>\n<p><\/p>\n<p>Also, gem\u00e4\u00df diesen Vorgaben haben wir begonnen, unser Produkt zu entwickeln. Lassen Sie uns sehen, was wir in diesem Stadium erreicht haben.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">Schnellstart<\/h1>\n<p><\/p>\n<p>Beginnen wir mit dem ersten Kontakt mit der Anwendung. Sie k\u00f6nnen sie herunterladen <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">auf unserer Website<\/a><\/noindex>. Derzeit werden alle drei Hauptplattformen \u2013 Windows, Linux, MacOS \u2013 unterst\u00fctzt. Herunterladen, installieren, starten. Beim ersten Start k\u00f6nnen Sie folgendes Fenster sehen:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Klicken Sie auf das Pluszeichen oben im Inhaltsbereich, um die erste Anfrage zu erstellen. Der Tab f\u00fcr die Anfrage sieht wie folgt aus:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lassen Sie uns n\u00e4her darauf eingehen. Die Anfrage-Oberfl\u00e4che \u00e4hnelt stark der Oberfl\u00e4che bekannter REST-Clients, was den Umstieg von \u00e4hnlichen Tools erleichtert. Lassen Sie uns die erste Anfrage an die URL ausf\u00fchren. <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 \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Auf den ersten Blick bringt das Response-Panel auch keine unerwarteten \u00dcberraschungen. Ich m\u00f6chte jedoch auf einige Punkte hinweisen:<\/p>\n<p><\/p>\n<ol>\n<li>Der Antwortinhalt hat die Darstellung eines Baumes, was erstens informativ ist und zweitens einige interessante Funktionen erm\u00f6glicht, \u00fcber die ich sp\u00e4ter sprechen werde.<\/li>\n<li>Es gibt einen Tab 'Assertions', in dem die Liste der Tests f\u00fcr diese Anfrage angezeigt wird.<\/li>\n<\/ol>\n<p><\/p>\n<p>Wie Sie sehen k\u00f6nnen, l\u00e4sst sich unser Tool als praktischer REST-Client verwenden. Wir w\u00e4ren jedoch nicht hier, wenn seine M\u00f6glichkeiten nur auf das Senden von Anfragen beschr\u00e4nkt w\u00e4ren. Im Folgenden beschreibe ich die grundlegenden Konzepte und Funktionalit\u00e4ten von TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Grundlegende Konzepte und M\u00f6glichkeiten<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">Knoten<\/h2>\n<p><\/p>\n<p>Die Funktionalit\u00e4t von TestMace ist nach verschiedenen Knotentypen unterteilt. Im obigen Beispiel haben wir die Funktion des RequestStep-Knotens demonstriert. Derzeit sind jedoch auch folgende Knotentypen in der Anwendung verf\u00fcgbar:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Dies ist ein Knoten, mit dem eine Anfrage erstellt werden kann. Als untergeordnetes Element kann er nur einen Assertion-Knoten haben.<\/li>\n<li>Assertion. Dieser Knoten wird verwendet, um Tests zu schreiben. Er kann nur ein untergeordneter Knoten f\u00fcr den RequestStep-Knoten sein.<\/li>\n<li>Folder. Dieser Knoten erm\u00f6glicht das Gruppieren von Folder- und RequestStep-Knoten innerhalb seiner selbst.<\/li>\n<li>Project. Dies ist der Wurzelknoten, der automatisch bei der Erstellung eines Projekts erstellt wird. Ansonsten wiederholt er die Funktionalit\u00e4ten des Folder-Knotens.<\/li>\n<li>Link. Ein Verweis auf einen Folder- oder RequestStep-Knoten. Er erm\u00f6glicht die Wiederverwendbarkeit von Anfragen und Szenarien.<\/li>\n<li>usw.<\/li>\n<\/ul>\n<p><\/p>\n<p>Die Knoten befinden sich in den Scratches (Panel links unten, dient der schnellen Erstellung von \u201eeinmaligen\u201c Anfragen) und im Project (Panel links oben), auf dem wir n\u00e4her eingehen werden.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Projekt<\/h2>\n<p><\/p>\n<p>Beim Starten der Anwendung haben Sie m\u00f6glicherweise die einzige Zeile 'Project' oben links bemerkt. Dies ist die Wurzel des Projektbaums. Bei der Erstellung eines Projekts wird ein tempor\u00e4res Projekt erstellt, wobei der Pfad von Ihrem Betriebssystem abh\u00e4ngt. Zu jedem Zeitpunkt k\u00f6nnen Sie das Projekt an einen f\u00fcr Sie praktischen Ort verschieben.<\/p>\n<p><\/p>\n<p>Der Hauptzweck des Projekts ist die M\u00f6glichkeit, die Entwicklungen im Dateisystem zu speichern und eine sp\u00e4tere Synchronisierung \u00fcber Versionskontrollsysteme, das Ausf\u00fchren von Szenarien in CI, das \u00dcberpr\u00fcfen von \u00c4nderungen usw. zu erm\u00f6glichen.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Variablen<\/h2>\n<p><\/p>\n<p>Variablen sind einer der Schl\u00fcsselmechanismen der Anwendung. Diejenigen unter Ihnen, die mit Werkzeugen wie TestMace arbeiten, haben m\u00f6glicherweise bereits verstanden, worum es geht. Also, Variablen sind eine M\u00f6glichkeit, gemeinsame Daten zu speichern und die Kommunikation zwischen Knoten zu erm\u00f6glichen. Ein Beispiel daf\u00fcr sind Umgebungsvariablen in Postman oder Insomnia. Doch wir sind weiter gegangen und haben das Thema weiterentwickelt. In TestMace k\u00f6nnen Variablen auf Knotenebene gesetzt werden. Jede. Es gibt auch einen Mechanismus zum Erben von Variablen von Vorfahren und zum \u00dcberschreiben von Variablen in Nachkommen. Dar\u00fcber hinaus gibt es eine Reihe von integrierten Variablen, deren Namen mit <code>$<\/code>. Hier sind einige von ihnen:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 verweist auf die Variablen des vorherigen Knotens<\/li>\n<li><code>$nextStep<\/code> \u2014 verweist auf die Variablen des n\u00e4chsten Knotens<\/li>\n<li><code>$parent<\/code> \u2014 dasselbe, aber f\u00fcr den Vorfahren<\/li>\n<li><code>$response<\/code> \u2014 Antwort vom Server<\/li>\n<li><code>$env<\/code> \u2014 aktuelle Umgebungsvariablen<\/li>\n<li><code>$dynamicVar<\/code> \u2014 dynamische Variablen, die w\u00e4hrend der Ausf\u00fchrung des Skripts oder der Anfrage erstellt werden,<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 dies sind im Grunde normale Variablen auf Projektebene, jedoch \u00e4ndert sich die Menge der Umgebungsvariablen je nach gew\u00e4hlter Umgebung. <\/p>\n<p><\/p>\n<p>Der Zugriff auf eine Variable erfolgt \u00fcber <code>${variable_name}<\/code><br \/>\nAls Wert einer Variablen kann eine andere Variable oder sogar ein ganzes Ausdruck verwendet werden. Zum Beispiel k\u00f6nnte f\u00fcr die Variable url ein Ausdruck vom Typ<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Besonders hervorzuheben ist die M\u00f6glichkeit, w\u00e4hrend der Ausf\u00fchrung des Skripts Variablen zuzuweisen. Beispielsweise besteht oft die Notwendigkeit, die Authentifizierungsdaten (Token oder den gesamten Header), die vom Server nach erfolgreicher Anmeldung zur\u00fcckgegeben wurden, zu speichern. TestMace erm\u00f6glicht das Speichern solcher Daten in dynamischen Variablen eines der \u00fcbergeordneten Objekte. Um Kollisionen mit bereits vorhandenen \u201estatischen\u201c Variablen zu vermeiden, werden die dynamischen Variablen in ein separates Objekt ausgegliedert. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Szenarien<\/h2>\n<p><\/p>\n<p>Mit all den oben genannten M\u00f6glichkeiten k\u00f6nnen Sie ganze Anfrageszenarien durchf\u00fchren. Zum Beispiel, Entit\u00e4t erstellen -&gt; Entit\u00e4t anfragen -&gt; Entit\u00e4t l\u00f6schen. In diesem Fall k\u00f6nnen Sie zum Beispiel den Folder-Knoten verwenden, um mehrere RequestStep-Knoten zu gruppieren.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Autovervollst\u00e4ndigung und Hervorhebung des Ausdruckswerts<\/h2>\n<p><\/p>\n<p>F\u00fcr eine bequeme Arbeit mit Variablen (und nicht nur) ist Auto-Vervollst\u00e4ndigung notwendig. Und nat\u00fcrlich die Hervorhebung des Ausdruckswertes, um es einfacher und bequemer zu machen, zu kl\u00e4ren, was eine bestimmte Variable bedeutet. Dies ist genau der Fall, wo es besser ist, einmal zu sehen, als hundertmal zu h\u00f6ren:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs\" src=\"\/wp-content\/uploads\/2019\/12\/cf9d30c9623b18575825d4282b8fe3e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es ist zu beachten, dass die Auto-Vervollst\u00e4ndigung nicht nur f\u00fcr Variablen implementiert ist, sondern auch zum Beispiel f\u00fcr \u00dcberschriften, Werte bestimmter \u00dcberschriften (zum Beispiel die Auto-Vervollst\u00e4ndigung f\u00fcr den Content-Type-Header), Protokolle und vieles mehr. Die Liste wird st\u00e4ndig erweitert, w\u00e4hrend die Anwendung w\u00e4chst.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">R\u00fcckg\u00e4ngig\/Wiederherstellen<\/h2>\n<p><\/p>\n<p>Das R\u00fcckg\u00e4ngig\/Wiederherstellen von \u00c4nderungen ist eine sehr praktische Sache, wird jedoch aus irgendeinem Grund nicht \u00fcberall implementiert (und Tools zur Arbeit mit APIs sind keine Ausnahme). Aber wir sind nicht so!) R\u00fcckg\u00e4ngig\/Wiederherstellen ist bei uns im gesamten Projekt implementiert, was es erm\u00f6glicht, nicht nur die Bearbeitung eines bestimmten Knotens, sondern auch dessen Erstellung, L\u00f6schung, Verschiebung usw. r\u00fcckg\u00e4ngig zu machen. Die kritischsten Operationen erfordern eine Best\u00e4tigung.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov\">Test Erstellung<\/h2>\n<p><\/p>\n<p>F\u00fcr die Erstellung von Tests ist der Assertion-Knoten verantwortlich. Eine der Hauptmerkmale ist die M\u00f6glichkeit, Tests ohne Programmierung zu erstellen, unter Verwendung integrierter Editor. <\/p>\n<p><\/p>\n<p>Der Assertion-Knoten besteht aus einer Sammlung von Assertions. Jede Assertion hat ihren eigenen Typ, zurzeit gibt es mehrere Typen von Assertions.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Compare values \u2014 vergleicht einfach zwei Werte. Es gibt mehrere Vergleichsoperatoren: \u201egleich\u201c, \u201eungleich\u201c, \u201egr\u00f6\u00dfer\u201c, \u201egr\u00f6\u00dfer oder gleich\u201c, \u201ekleiner\u201c, \u201ekleiner oder gleich\u201c.<\/p>\n<p>\n<\/li>\n<li>\n<p>Wert enthalten \u2013 \u00fcberpr\u00fcft das Vorkommen eines Teilstrings in einem String.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath \u2013 \u00fcberpr\u00fcft, dass in XML ein bestimmter Wert f\u00fcr den Selektor vorliegt.<\/p>\n<p>\n<\/li>\n<li>\n<p>JavaScript-Assertion \u2013 ein beliebiges Skript in JavaScript, das im Erfolgsfall true und im Misserfolgsfall false zur\u00fcckgibt.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>Ich m\u00f6chte anmerken, dass nur die letzte vom Benutzer Programmierkenntnisse erfordert, die anderen 3 Assertions werden mit einer grafischen Benutzeroberfl\u00e4che erstellt. So sieht beispielsweise der Dialog zum Erstellen einer Compare Values-Assertion aus:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs\" src=\"\/wp-content\/uploads\/2019\/12\/e71e11fb0fb664d1d9751a71fbdcc850.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Das Sahneh\u00e4ubchen ist die schnelle Erstellung von Assertions aus der Antwort, schauen Sie sich das einfach mal an!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs\" src=\"\/wp-content\/uploads\/2019\/12\/3b86084419339a7a05a3548df5c12d6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Allerdings haben solche Assertions offensichtliche Einschr\u00e4nkungen. Wenn Sie damit konfrontiert werden, k\u00f6nnen Sie JavaScript-Assertions verwenden. Auch hier bietet TestMace eine komfortable Umgebung mit Auto-Vervollst\u00e4ndigung, Syntax-Hervorhebung und sogar einem statischen Analyzer.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">API-Beschreibung<\/h2>\n<p><\/p>\n<p>TestMace erm\u00f6glicht nicht nur die Nutzung der API, sondern auch deren Dokumentation. Die Beschreibung selbst hat dabei eine hierarchische Struktur und f\u00fcgt sich organisch in das restliche Projekt ein. Dar\u00fcber hinaus besteht momentan die M\u00f6glichkeit, die API-Beschreibung aus den Formaten Swagger 2.0 \/ OpenAPI 3.0 zu importieren. Die Beschreibung selbst liegt nicht einfach als tote Last herum, sondern integriert sich eng mit dem restlichen Teil des Projekts; insbesondere wird die Autovervollst\u00e4ndigung von URLs, HTTP-Headern, Query-Parametern und vielem mehr angeboten. In Zukunft planen wir auch, Tests zur \u00dcbereinstimmung der Antworten mit der API-Beschreibung hinzuzuf\u00fcgen.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Node-Sharing<\/h2>\n<p><\/p>\n<p>Anwendungsfall: Sie m\u00f6chten eine fehlerhafte Anfrage oder sogar ein gesamtes Szenario mit einem Kollegen teilen oder einfach an einen Bug anh\u00e4ngen. TestMace deckt auch diesen Fall ab: Die Anwendung erm\u00f6glicht es, jede Node und sogar einen Teilbaum in eine URL zu serialisieren. Kopieren und Einf\u00fcgen, und Sie haben die Anfrage m\u00fchelos auf ein anderes Ger\u00e4t oder Projekt \u00fcbertragen.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">Menschenlesbares Format zur Speicherung des Projekts<\/h2>\n<p><\/p>\n<p>Momentan wird jeder Knoten in einer separaten Datei mit der Endung .yml gespeichert (wie im Fall des Assertion-Knotens) oder in einem Ordner mit dem Namen des Knotens und einer index.yml-Datei darin.<br \/>\nSo sieht beispielsweise die Datei mit der Anfrage aus, die wir im obigen \u00dcberblick gemacht haben:<\/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>Wie Sie sehen, ist alles klar und deutlich. Wenn gew\u00fcnscht, l\u00e4sst sich dieses Format auch bequem manuell bearbeiten.<\/p>\n<p><\/p>\n<p>Die Hierarchie der Ordner im Dateisystem spiegelt vollst\u00e4ndig die Hierarchie der Knoten im Projekt wider. Zum Beispiel wird ein Szenario wie:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>im Dateisystem in die folgende Struktur abgebildet (es wird nur die Hierarchie der Ordner gezeigt, aber das Prinzip ist klar)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2013 eine m\u00e4chtige IDE f\u00fcr die Arbeit mit APIs\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>was den Pr\u00fcfungsprozess des Projekts erleichtert.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Import aus Postman<\/h2>\n<p><\/p>\n<p>Nachdem Sie alles oben Genannte gelesen haben, werden einige Benutzer wahrscheinlich (nicht wahr?) das neue Produkt ausprobieren oder (wer wei\u00df!) in vollem Umfang in ihrem Projekt einsetzen wollen. Allerdings k\u00f6nnte eine gro\u00dfe Menge an bestehender Arbeit im selben Postman die Migration erschweren. F\u00fcr solche F\u00e4lle unterst\u00fctzt TestMace den Import von Sammlungen aus Postman. Momentan wird der Import ohne Tests unterst\u00fctzt, jedoch schlie\u00dfen wir nicht aus, dass wir diese in Zukunft ebenfalls unterst\u00fctzen werden.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Pl\u00e4ne<\/h1>\n<p><\/p>\n<p>Ich hoffe, vielen von denen, die bis hierher gelesen haben, gef\u00e4llt unser Produkt. Doch das ist noch nicht alles! Die Arbeit an dem Produkt l\u00e4uft auf Hochtouren, und hier sind einige Funktionen, die wir in naher Zukunft hinzuf\u00fcgen m\u00f6chten.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">Cloud-Synchronisation<\/h2>\n<p><\/p>\n<p>Eine der am h\u00e4ufigsten nachgefragten Funktionen. Derzeit bieten wir an, zur Synchronisation Versionskontrollsysteme zu verwenden, weshalb wir das Format benutzerfreundlicher f\u00fcr diese Art der Speicherung gestalten. Da jedoch nicht jeder mit diesem Workflow zurechtkommt, planen wir, einen vielen bekannten Synchronisationsmechanismus \u00fcber unsere Server hinzuzuf\u00fcgen. <\/p>\n<p><\/p>\n<h2 id=\"cli\">CLI<\/h2>\n<p><\/p>\n<p>Wie bereits oben erw\u00e4hnt, kommen Produkte auf IDE-Ebene nicht ohne verschiedene Integrationen bestehender Anwendungen oder Workflows aus. CLI ist geradezu notwendig, um Tests, die in TestMace geschrieben wurden, in den Continuous-Integration-Prozess zu integrieren. Die Arbeit an der CLI l\u00e4uft auf Hochtouren, in den fr\u00fchen Versionen wird es einen Projektstart mit einem einfachen Konsolen-Report geben. Zuk\u00fcnftig planen wir, die Ausgabe des Berichts im JUnit-Format hinzuzuf\u00fcgen.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Plug-in-System<\/h2>\n<p><\/p>\n<p>Trotz der gesamten Leistungsf\u00e4higkeit unseres Werkzeugs ist die Menge an Anforderungen an L\u00f6sungen grenzenlos. Schlie\u00dflich gibt es Aufgaben, die spezifisch f\u00fcr bestimmte Projekte sind. Deshalb planen wir, ein SDK zur Entwicklung von Plug-ins hinzuzuf\u00fcgen, sodass jeder Entwickler Funktionen nach seinem Geschmack hinzuf\u00fcgen kann.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Erweiterung der Auswahl an Knotentypen<\/h2>\n<p><\/p>\n<p>Dieses Set an Knoten deckt nicht alle ben\u00f6tigten F\u00e4lle des Benutzers ab. Knoten, die hinzugef\u00fcgt werden sollen:<\/p>\n<p><\/p>\n<ul>\n<li>Script-Knoten \u2013 transformiert und platziert Daten mithilfe von JavaScript und dem entsprechenden API. Mit diesem Knotentyp k\u00f6nnen Sie Dinge wie Pre-Request- und Post-Request-Skripte in Postman erstellen.<\/li>\n<li>GraphQL-Knoten \u2013 Unterst\u00fctzung f\u00fcr GraphQL<\/li>\n<li>Custom-Assertion-Knoten \u2013 erm\u00f6glicht die Erweiterung des bestehenden Satzes von Assertions im Projekt.<br \/>\nNat\u00fcrlich ist dies keine abschlie\u00dfende Liste, sie wird st\u00e4ndig mit Ihrem Feedback und anderen Erg\u00e4nzungen erweitert.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">FAQ<\/h1>\n<p><\/p>\n<p><strong>Was unterscheidet Sie von Postman?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>Das Konzept der Knoten, das es erm\u00f6glicht, die Funktionalit\u00e4t des Projekts nahezu unbegrenzt zu skalieren.<\/li>\n<li>Menschlich lesbares Format des Projekts mit der Speicherung im Dateisystem, was die Arbeit mit Versionskontrollsystemen vereinfacht.<\/li>\n<li>Die M\u00f6glichkeit, Tests ohne Programmierung zu erstellen, und eine verbesserte Unterst\u00fctzung f\u00fcr JavaScript im Testeditor (Autovervollst\u00e4ndigung, statische Analyse).<\/li>\n<li>Erweiterte Autovervollst\u00e4ndigung und Hervorhebung des aktuellen Wertes von Variablen<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>Ist das Produkt Open Source?<\/strong><\/p>\n<p><\/p>\n<p>Nein, im Moment sind die Quellcodes geschlossen, aber in Zukunft ziehen wir in Betracht, sie zu \u00f6ffnen.<\/p>\n<p><\/p>\n<p><strong>Wovon leben Sie?)<\/strong><\/p>\n<p><\/p>\n<p>Neben der kostenlosen Version planen wir die Ver\u00f6ffentlichung einer kostenpflichtigen Version des Produkts. Diese wird in erster Linie Funktionen enthalten, die einen Serveranteil erfordern, wie z.B. die Synchronisierung.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Fazit<\/h1>\n<p><\/p>\n<p>Unser Projekt schreitet mit riesigen Schritten auf einen stabilen Release zu. Das Produkt kann jedoch bereits jetzt verwendet werden, und die positiven R\u00fcckmeldungen unserer fr\u00fchen Nutzer best\u00e4tigen das. Wir sammeln aktiv Feedback, denn ohne enge Zusammenarbeit mit der Community ist es unm\u00f6glich, ein gutes Werkzeug zu schaffen. Sie finden uns hier:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Offizielle Webseite<\/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>Wir freuen uns auf Ihre W\u00fcnsche und Vorschl\u00e4ge!<\/p>\n<p>Quelle: <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.2 - 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\/de\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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 \u2013 eine leistungsstarke IDE f\u00fcr die Arbeit mit APIs | ProHoster","description":"Hallo zusammen! Heute m\u00f6chten wir der IT-Community unser Produkt vorstellen \u2013 eine IDE zur Arbeit mit der API von TestMace.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/54187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}