TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

Hallo zusammen! Heute möchten wir der IT-Community unser Produkt vorstellen – eine IDE fĂŒr die Arbeit mit APIs TestMace. Möglicherweise haben einige von Ihnen bereits von uns gehört durch vorherigen Artikel. Es gab jedoch keine umfassende Übersicht ĂŒber das Tool, daher beheben wir diesen Ă€rgerlichen Mangel.

TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

Motivation

Ich möchte damit beginnen, wie wir eigentlich zu diesem Punkt gekommen sind und beschlossen haben, unser eigenes Werkzeug fĂŒr die erweiterte Arbeit mit APIs zu entwickeln. Lassen Sie uns mit einer Liste der funktionalen Möglichkeiten beginnen, die das Produkt, von dem wir glauben, dass man sagen kann, es sei eine "IDE fĂŒr die Arbeit mit APIs", haben sollte:

  • Erstellen und AusfĂŒhren von Anfragen und Skripten (Anfragesequenzen)
  • Schreiben verschiedener Testarten
  • Generierung von Tests
  • Arbeiten mit API-Beschreibungen, einschließlich Import aus Formaten wie Swagger, OpenAPI, WADL usw.
  • Mocking von Anfragen
  • Gute UnterstĂŒtzung fĂŒr eine oder mehrere Programmiersprachen zum Schreiben von Skripten, einschließlich Integration mit beliebten Bibliotheken
  • usw.

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-Überwachungsdienst usw. Schließlich diktieren uns die Trends der letzten Jahre, dass nicht nur die leistungsstarken Funktionen der Anwendung wichtig sind, sondern auch ihr angenehmes Interface.

FĂŒr wen ist ein solches Werkzeug nĂŒtzlich? Offensichtlich fĂŒr all diejenigen, die irgendwie mit der Entwicklung und dem Testen von APIs zu tun haben – Entwickler und Tester =). WĂ€hrend fĂŒr die Entwickler oft einfache Anfragen und einfache Szenarien ausreichen, ist es fĂŒr die Tester eines der wichtigsten Werkzeuge, das nebenbei auch einen leistungsstarken Mechanismus zum Schreiben von Tests mit der Möglichkeit ihrer AusfĂŒhrung in CI enthalten sollte.

Also, gemĂ€ĂŸ diesen Vorgaben haben wir begonnen, unser Produkt zu entwickeln. Lassen Sie uns sehen, was wir in diesem Stadium erreicht haben.

Schnellstart

Beginnen wir mit dem ersten Kontakt mit der Anwendung. Sie können sie herunterladen auf unserer Website. Derzeit werden alle drei Hauptplattformen – Windows, Linux, MacOS – unterstĂŒtzt. Herunterladen, installieren, starten. Beim ersten Start können Sie folgendes Fenster sehen:

TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

Klicken Sie auf das Pluszeichen oben im Inhaltsbereich, um die erste Anfrage zu erstellen. Der Tab fĂŒr die Anfrage sieht wie folgt aus:

TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

Lassen Sie uns nĂ€her darauf eingehen. Die Anfrage-OberflĂ€che Ă€hnelt stark der OberflĂ€che bekannter REST-Clients, was den Umstieg von Ă€hnlichen Tools erleichtert. Lassen Sie uns die erste Anfrage an die URL ausfĂŒhren. https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

Auf den ersten Blick bringt das Response-Panel auch keine unerwarteten Überraschungen. Ich möchte jedoch auf einige Punkte hinweisen:

  1. Der Antwortinhalt hat die Darstellung eines Baumes, was erstens informativ ist und zweitens einige interessante Funktionen ermöglicht, ĂŒber die ich spĂ€ter sprechen werde.
  2. Es gibt einen Tab 'Assertions', in dem die Liste der Tests fĂŒr diese Anfrage angezeigt wird.

Wie Sie sehen können, lÀsst sich unser Tool als praktischer REST-Client verwenden. Wir wÀren jedoch nicht hier, wenn seine Möglichkeiten nur auf das Senden von Anfragen beschrÀnkt wÀren. Im Folgenden beschreibe ich die grundlegenden Konzepte und FunktionalitÀten von TestMace.

Grundlegende Konzepte und Möglichkeiten

Knoten

Die FunktionalitĂ€t 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ĂŒgbar:

  • RequestStep. Dies ist ein Knoten, mit dem eine Anfrage erstellt werden kann. Als untergeordnetes Element kann er nur einen Assertion-Knoten haben.
  • Assertion. Dieser Knoten wird verwendet, um Tests zu schreiben. Er kann nur ein untergeordneter Knoten fĂŒr den RequestStep-Knoten sein.
  • Folder. Dieser Knoten ermöglicht das Gruppieren von Folder- und RequestStep-Knoten innerhalb seiner selbst.
  • Project. Dies ist der Wurzelknoten, der automatisch bei der Erstellung eines Projekts erstellt wird. Ansonsten wiederholt er die FunktionalitĂ€ten des Folder-Knotens.
  • Link. Ein Verweis auf einen Folder- oder RequestStep-Knoten. Er ermöglicht die Wiederverwendbarkeit von Anfragen und Szenarien.
  • usw.

Die Knoten befinden sich in Scratches (Panel links unten, dient der schnellen Erstellung von 'Einmal'-Anfragen) und im Project (Panel links oben), auf das wir nÀher eingehen werden.

Projekt

Beim Starten der Anwendung haben Sie möglicherweise die einzige Zeile 'Project' oben links bemerkt. Dies ist die Wurzel des Projektbaums. Bei der Erstellung eines Projekts wird ein temporĂ€res Projekt erstellt, wobei der Pfad von Ihrem Betriebssystem abhĂ€ngt. Zu jedem Zeitpunkt können Sie das Projekt an einen fĂŒr Sie praktischen Ort verschieben.

Der Hauptzweck des Projekts ist die Möglichkeit, die Entwicklungen im Dateisystem zu speichern und eine spĂ€tere Synchronisierung ĂŒber Versionskontrollsysteme, das AusfĂŒhren von Szenarien in CI, das ÜberprĂŒfen von Änderungen usw. zu ermöglichen.

Variablen

Variablen sind einer der SchlĂŒsselmechanismen der Anwendung. Diejenigen unter Ihnen, die mit Werkzeugen wie TestMace arbeiten, haben möglicherweise bereits verstanden, worum es geht. Also, Variablen sind eine Möglichkeit, gemeinsame Daten zu speichern und die Kommunikation zwischen Knoten zu ermöglichen. Ein Beispiel dafĂŒr sind Umgebungsvariablen in Postman oder Insomnia. Doch wir sind weiter gegangen und haben das Thema weiterentwickelt. In TestMace können Variablen auf Knotenebene gesetzt werden. Jede. Es gibt auch einen Mechanismus zum Erben von Variablen von Vorfahren und zum Überschreiben von Variablen in Nachkommen. DarĂŒber hinaus gibt es eine Reihe von integrierten Variablen, deren Namen mit $. Hier sind einige von ihnen:

  • $prevStep — verweist auf die Variablen des vorherigen Knotens
  • $nextStep — verweist auf die Variablen des nĂ€chsten Knotens
  • $parent — dasselbe, aber fĂŒr den Vorfahren
  • $response — Antwort vom Server
  • $env — aktuelle Umgebungsvariablen
  • $dynamicVar — dynamische Variablen, die wĂ€hrend der AusfĂŒhrung des Skripts oder der Anfrage erstellt werden,

$env — dies sind im Grunde normale Variablen auf Projektebene, jedoch Ă€ndert sich die Menge der Umgebungsvariablen je nach gewĂ€hlter Umgebung.

Der Zugriff auf eine Variable erfolgt ĂŒber ${variable_name}
Als Wert einer Variablen kann eine andere Variable oder sogar ein ganzes Ausdruck verwendet werden. Zum Beispiel könnte fĂŒr die Variable url ein Ausdruck vom Typ
http://${host}:${port}/${endpoint}.

Besonders hervorzuheben ist die Möglichkeit, Variablen wĂ€hrend der AusfĂŒhrung eines Skripts zuzuweisen. Zum Beispiel besteht oft die Notwendigkeit, Anmeldedaten (Token oder den gesamten Header) zu speichern, die nach einem erfolgreichen Login vom Server kommen. TestMace ermöglicht es, solche Daten in dynamischen Variablen eines der Vorfahren zu speichern. Um Kollisionen mit bereits bestehenden "statischen" Variablen zu vermeiden, wurden dynamische Variablen in ein separates Objekt ausgegliedert. $dynamicVar.

Szenarien

Mit all den oben genannten Möglichkeiten können Sie ganze Anfrageszenarien durchfĂŒhren. Zum Beispiel, EntitĂ€t erstellen -> EntitĂ€t anfragen -> EntitĂ€t löschen. In diesem Fall können Sie zum Beispiel den Folder-Knoten verwenden, um mehrere RequestStep-Knoten zu gruppieren.

AutovervollstÀndigung und Hervorhebung des Ausdruckswerts

FĂŒr eine bequeme Arbeit mit Variablen (und nicht nur) ist Auto-VervollstĂ€ndigung notwendig. Und natĂŒrlich die Hervorhebung des Ausdruckswertes, um es einfacher und bequemer zu machen, zu klĂ€ren, was eine bestimmte Variable bedeutet. Dies ist genau der Fall, wo es besser ist, einmal zu sehen, als hundertmal zu hören:

TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

Es ist zu beachten, dass die Auto-VervollstĂ€ndigung nicht nur fĂŒr Variablen implementiert ist, sondern auch zum Beispiel fĂŒr Überschriften, Werte bestimmter Überschriften (zum Beispiel die Auto-VervollstĂ€ndigung fĂŒr den Content-Type-Header), Protokolle und vieles mehr. Die Liste wird stĂ€ndig erweitert, wĂ€hrend die Anwendung wĂ€chst.

RĂŒckgĂ€ngig/Wiederherstellen

Das RĂŒckgĂ€ngig/Wiederherstellen von Änderungen ist eine sehr praktische Sache, wird jedoch aus irgendeinem Grund nicht ĂŒberall implementiert (und Tools zur Arbeit mit APIs sind keine Ausnahme). Aber wir sind nicht so!) RĂŒckgĂ€ngig/Wiederherstellen ist bei uns im gesamten Projekt implementiert, was es ermöglicht, nicht nur die Bearbeitung eines bestimmten Knotens, sondern auch dessen Erstellung, Löschung, Verschiebung usw. rĂŒckgĂ€ngig zu machen. Die kritischsten Operationen erfordern eine BestĂ€tigung.

Test Erstellung

FĂŒr die Erstellung von Tests ist der Assertion-Knoten verantwortlich. Eine der Hauptmerkmale ist die Möglichkeit, Tests ohne Programmierung zu erstellen, unter Verwendung integrierter Editor.

Der Assertion-Knoten besteht aus einer Sammlung von Assertions. Jede Assertion hat ihren eigenen Typ, zurzeit gibt es mehrere Typen von Assertions.

  1. Werte vergleichen – vergleicht einfach zwei Werte. Es gibt mehrere Vergleichsoperatoren: "gleich", "ungleich", "grĂ¶ĂŸer", "grĂ¶ĂŸer oder gleich", "kleiner", "kleiner oder gleich".

  2. Wert enthalten – ĂŒberprĂŒft das Vorkommen eines Teilstrings in einem String.

  3. XPath – ĂŒberprĂŒft, dass in XML ein bestimmter Wert fĂŒr den Selektor vorliegt.

  4. JavaScript-Assertion – ein beliebiges Skript in JavaScript, das im Erfolgsfall true und im Misserfolgsfall false zurĂŒckgibt.

Ich möchte anmerken, dass nur die letzte vom Benutzer Programmierkenntnisse erfordert, die anderen 3 Assertions werden mit einer grafischen BenutzeroberflÀche erstellt. So sieht beispielsweise der Dialog zum Erstellen einer Compare Values-Assertion aus:

TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

Das SahnehÀubchen ist die schnelle Erstellung von Assertions aus der Antwort, schauen Sie sich das einfach mal an!

TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

Allerdings haben solche Assertions offensichtliche EinschrÀnkungen. Wenn Sie damit konfrontiert werden, können Sie JavaScript-Assertions verwenden. Auch hier bietet TestMace eine komfortable Umgebung mit Auto-VervollstÀndigung, Syntax-Hervorhebung und sogar einem statischen Analyzer.

API-Beschreibung

TestMace ermöglicht nicht nur die Nutzung der API, sondern auch deren Dokumentation. Die Beschreibung selbst hat dabei eine hierarchische Struktur und fĂŒgt sich organisch in das restliche Projekt ein. DarĂŒber hinaus besteht momentan die Möglichkeit, 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Ă€ndigung von URLs, HTTP-Headern, Query-Parametern und vielem mehr angeboten. In Zukunft planen wir auch, Tests zur Übereinstimmung der Antworten mit der API-Beschreibung hinzuzufĂŒgen.

Node-Sharing

Anwendungsfall: Sie möchten eine fehlerhafte Anfrage oder sogar ein gesamtes Szenario mit einem Kollegen teilen oder einfach an einen Bug anhĂ€ngen. TestMace deckt auch diesen Fall ab: Die Anwendung ermöglicht es, jede Node und sogar einen Teilbaum in eine URL zu serialisieren. Kopieren und EinfĂŒgen, und Sie haben die Anfrage mĂŒhelos auf ein anderes GerĂ€t oder Projekt ĂŒbertragen.

Menschenlesbares Format zur Speicherung des Projekts

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.
So sieht beispielsweise die Datei mit der Anfrage aus, die wir im obigen Überblick gemacht haben:

index.yml

children: []
variables: {}
type: RequestStep
assignVariables: []
requestData:
  request:
    method: GET
    url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8'
  headers: []
  disabledInheritedHeaders: []
  params: []
  body:
    type: Json
    jsonBody: ''
    xmlBody: ''
    textBody: ''
    formData: []
    file: ''
    formURLEncoded: []
  strictSSL: Inherit
authData:
  type: inherit
name: Scratch 1

Wie Sie sehen, ist alles klar und deutlich. Wenn gewĂŒnscht, lĂ€sst sich dieses Format auch bequem manuell bearbeiten.

Die Hierarchie der Ordner im Dateisystem spiegelt vollstÀndig die Hierarchie der Knoten im Projekt wider. Zum Beispiel wird ein Szenario wie:

TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

im Dateisystem in die folgende Struktur abgebildet (es wird nur die Hierarchie der Ordner gezeigt, aber das Prinzip ist klar)

TestMace – eine mĂ€chtige IDE fĂŒr die Arbeit mit APIs

was den PrĂŒfungsprozess des Projekts erleichtert.

Import aus Postman

Nachdem Sie alles oben Genannte gelesen haben, werden einige Benutzer wahrscheinlich (nicht wahr?) das neue Produkt ausprobieren oder (wer weiß!) in vollem Umfang in ihrem Projekt einsetzen wollen. Allerdings könnte eine große Menge an bestehender Arbeit im selben Postman die Migration erschweren. FĂŒr solche FĂ€lle unterstĂŒtzt TestMace den Import von Sammlungen aus Postman. Momentan wird der Import ohne Tests unterstĂŒtzt, jedoch schließen wir nicht aus, dass wir diese in Zukunft ebenfalls unterstĂŒtzen werden.

PlÀne

Ich hoffe, vielen von denen, die bis hierher gelesen haben, gefĂ€llt unser Produkt. Doch das ist noch nicht alles! Die Arbeit an dem Produkt lĂ€uft auf Hochtouren, und hier sind einige Funktionen, die wir in naher Zukunft hinzufĂŒgen möchten.

Cloud-Synchronisation

Eine der am hĂ€ufigsten nachgefragten Funktionen. Derzeit bieten wir an, zur Synchronisation Versionskontrollsysteme zu verwenden, weshalb wir das Format benutzerfreundlicher fĂŒr diese Art der Speicherung gestalten. Da jedoch nicht jeder mit diesem Workflow zurechtkommt, planen wir, einen vielen bekannten Synchronisationsmechanismus ĂŒber unsere Server hinzuzufĂŒgen.

CLI

Wie bereits oben erwĂ€hnt, 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Ă€uft auf Hochtouren, in den frĂŒhen Versionen wird es einen Projektstart mit einem einfachen Konsolen-Report geben. ZukĂŒnftig planen wir, die Ausgabe des Berichts im JUnit-Format hinzuzufĂŒgen.

Plug-in-System

Trotz der gesamten LeistungsfĂ€higkeit unseres Werkzeugs ist die Menge an Anforderungen an Lösungen grenzenlos. Schließlich gibt es Aufgaben, die spezifisch fĂŒr bestimmte Projekte sind. Deshalb planen wir, ein SDK zur Entwicklung von Plug-ins hinzuzufĂŒgen, sodass jeder Entwickler Funktionen nach seinem Geschmack hinzufĂŒgen kann.

Erweiterung der Auswahl an Knotentypen

Dieses Set an Knoten deckt nicht alle benötigten FĂ€lle des Benutzers ab. Knoten, die hinzugefĂŒgt werden sollen:

  • Script-Knoten – transformiert und platziert Daten mithilfe von JavaScript und dem entsprechenden API. Mit diesem Knotentyp können Sie Dinge wie Pre-Request- und Post-Request-Skripte in Postman erstellen.
  • GraphQL-Knoten – UnterstĂŒtzung fĂŒr GraphQL
  • Custom-Assertion-Knoten – ermöglicht die Erweiterung des bestehenden Satzes von Assertions im Projekt.
    NatĂŒrlich ist dies keine abschließende Liste, sie wird stĂ€ndig mit Ihrem Feedback und anderen ErgĂ€nzungen erweitert.

FAQ

Was unterscheidet Sie von Postman?

  1. Das Konzept der Knoten, das es ermöglicht, die FunktionalitÀt des Projekts nahezu unbegrenzt zu skalieren.
  2. Menschlich lesbares Format des Projekts mit der Speicherung im Dateisystem, was die Arbeit mit Versionskontrollsystemen vereinfacht.
  3. Die Möglichkeit, Tests ohne Programmierung zu erstellen, und eine verbesserte UnterstĂŒtzung fĂŒr JavaScript im Testeditor (AutovervollstĂ€ndigung, statische Analyse).
  4. Erweiterte AutovervollstÀndigung und Hervorhebung des aktuellen Wertes von Variablen

Ist das Produkt Open Source?

Nein, im Moment sind die Quellcodes geschlossen, aber in Zukunft ziehen wir in Betracht, sie zu öffnen.

Wovon leben Sie?)

Neben der kostenlosen Version planen wir die Veröffentlichung einer kostenpflichtigen Version des Produkts. Diese wird in erster Linie Funktionen enthalten, die einen Serveranteil erfordern, wie z.B. die Synchronisierung.

Fazit

Unser Projekt schreitet mit riesigen Schritten auf einen stabilen Release zu. Das Produkt kann jedoch bereits jetzt verwendet werden, und die positiven RĂŒckmeldungen unserer frĂŒhen Nutzer bestĂ€tigen das. Wir sammeln aktiv Feedback, denn ohne enge Zusammenarbeit mit der Community ist es unmöglich, ein gutes Werkzeug zu schaffen. Sie finden uns hier:

Offizielle Webseite

Telegram

Slack

Facebook

Issues-Tracker

Wir freuen uns auf Ihre WĂŒnsche und VorschlĂ€ge!

Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster