TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Hallo zusammen! Heute möchten wir der IT-Öffentlichkeit unser Produkt vorstellen – eine IDE für die Arbeit mit APIs TestMace. Vielleicht kennen einige von Ihnen uns bereits aus unserer Zeit vorherige Artikel. Da es jedoch keine umfassende Überprüfung des Tools gab, beheben wir dieses bedauerliche Manko.

TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Motivation

Ich möchte damit beginnen, wie wir tatsächlich in dieses Leben gekommen sind und beschlossen haben, ein eigenes Tool für die fortgeschrittene Arbeit mit der API zu entwickeln. Beginnen wir mit einer Liste der Funktionen, die ein Produkt haben sollte, von denen wir unserer Meinung nach sagen können, dass es sich um eine „IDE für die Arbeit mit APIs“ handelt:

  • Erstellen und Ausführen von Abfragen und Skripten (Anfragesequenzen)
  • Schreiben verschiedener Arten von Tests
  • Testgenerierung
  • Arbeiten mit API-Beschreibungen, einschließlich Import aus Formaten wie Swagger, OpenAPI, WADL usw.
  • Spottwünsche
  • Gute Unterstützung für eine oder mehrere Sprachen zum Schreiben von Skripten, einschließlich der Integration in gängige Bibliotheken
  • usw.

Die Liste kann je nach Geschmack erweitert werden. Darüber hinaus ist es wichtig, nicht nur die IDE selbst, sondern auch eine bestimmte Infrastruktur wie Cloud-Synchronisierung, Befehlszeilentools, Online-Überwachungsdienst usw. zu erstellen. Letztendlich diktieren uns die Trends der letzten Jahre nicht nur die leistungsstarke Funktionalität der Anwendung, sondern auch ihre angenehme Benutzeroberfläche.

Wer braucht so ein Werkzeug? Offensichtlich sind alle Entwickler und Tester, die zumindest irgendwie mit der Entwicklung und dem Testen von APIs zu tun haben =). Während es für erstere oft ausreicht, einzelne Abfragen und einfache Skripte auszuführen, ist dies für Tester eines der Hauptwerkzeuge, das unter anderem einen leistungsstarken Mechanismus zum Schreiben von Tests mit der Möglichkeit, diese auszuführen, enthalten sollte CI.

Basierend auf diesen Richtlinien begannen wir mit der Entwicklung unseres Produkts. Mal sehen, was wir in dieser Phase erreicht haben.

Schnellstart

Beginnen wir mit einer ersten Bekanntschaft mit der Anwendung. Sie können es herunterladen auf unserer Website. Derzeit werden alle drei großen Plattformen unterstützt – Windows, Linux, MacOS. Herunterladen, installieren, starten. Wenn Sie es zum ersten Mal starten, wird möglicherweise das folgende Fenster angezeigt:

TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Klicken Sie oben im Inhaltsbereich auf das Pluszeichen, um Ihre erste Anfrage zu erstellen. Die Registerkarte „Abfrage“ sieht folgendermaßen aus:

TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Schauen wir es uns genauer an. Die Anforderungsschnittstelle ist der Schnittstelle beliebter Rest-Clients sehr ähnlich, was die Migration von ähnlichen Tools erleichtert. Lassen Sie uns die erste Anfrage an die URL stellen https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Generell hält auch das Antwortpanel auf den ersten Blick keine Überraschungen bereit. Ich möchte Sie jedoch auf einige Punkte aufmerksam machen:

  1. Der Hauptteil der Antwort wird in Form eines Baums dargestellt, der erstens Informationsinhalte hinzufügt und es Ihnen zweitens ermöglicht, einige interessante Funktionen hinzuzufügen, über die unten aufgeführt ist
  2. Es gibt eine Registerkarte „Behauptungen“, die eine Liste von Tests für eine bestimmte Anfrage anzeigt

Wie Sie sehen, kann unser Tool als praktischer Rest-Client verwendet werden. Wir wären jedoch nicht hier, wenn seine Möglichkeiten nur auf das Senden von Anfragen beschränkt wären. Als Nächstes werde ich die grundlegenden Konzepte und Funktionen von TestMace skizzieren.

Grundlegende Konzepte und Funktionen

Knoten

Die TestMace-Funktionalität ist in verschiedene Knotentypen unterteilt. Im obigen Beispiel haben wir die Funktionsweise des RequestStep-Knotens demonstriert. Allerdings sind nun auch folgende Knotentypen in der Anwendung verfügbar:

  • RequestStep. Dies ist der Knoten, über den Sie eine Anfrage erstellen können. Es kann nur einen Assertion-Knoten als untergeordnetes Element haben.
  • Behauptung. Der Knoten wird zum Schreiben von Tests verwendet. Kann nur ein untergeordneter Knoten des RequestStep-Knotens sein.
  • Ordner. Ermöglicht Ihnen, Ordner- und RequestStep-Knoten in sich selbst zu gruppieren.
  • Projekt. Dies ist der Stammknoten, der automatisch erstellt wird, wenn das Projekt erstellt wird. Andernfalls wird die Funktionalität des Ordnerknotens wiederholt.
  • Verknüpfung. Link zum Ordner- oder RequestStep-Knoten. Ermöglicht die Wiederverwendung von Abfragen und Skripten.
  • usw.

Die Knoten befinden sich in Scratches (das Panel unten links, das zum schnellen Erstellen „einmaliger“ Abfragen verwendet wird) und in Projekten (das Panel oben links), auf die wir näher eingehen werden.

Projekt

Wenn Sie die Anwendung starten, bemerken Sie möglicherweise eine einzelne Projektzeile in der oberen linken Ecke. Dies ist die Wurzel des Projektbaums. Wenn Sie ein Projekt starten, wird ein temporäres Projekt erstellt, dessen Pfad von Ihrem Betriebssystem abhängt. Sie können das Projekt jederzeit an einen für Sie geeigneten Ort verschieben.

Der Hauptzweck des Projekts ist die Möglichkeit, Entwicklungen im Dateisystem zu speichern und sie über Versionskontrollsysteme weiter zu synchronisieren, Skripte in CI auszuführen, Änderungen zu überprüfen usw.

Variablen

Variablen sind einer der Schlüsselmechanismen einer Anwendung. Wer mit Tools wie TestMace arbeitet, hat vielleicht schon eine Vorstellung davon, wovon wir reden. Variablen sind also eine Möglichkeit, gemeinsame Daten zu speichern und zwischen Knoten zu kommunizieren. Ein Analogon sind beispielsweise Umgebungsvariablen in Postman oder Insomnia. Wir gingen jedoch noch einen Schritt weiter und entwickelten das Thema weiter. In TestMace können Variablen auf Knotenebene festgelegt werden. Beliebig. Es gibt auch einen Mechanismus zum Erben von Variablen von Vorfahren und zum Überlappen von Variablen in Nachkommen. Darüber hinaus gibt es eine Reihe integrierter Variablen. Die Namen der integrierten Variablen beginnen mit $. Hier sind einige von ihnen:

  • $prevStep — Link zu Variablen des vorherigen Knotens
  • $nextStep — Link zu Variablen des nächsten Knotens
  • $parent - das Gleiche, aber nur für den Vorfahren
  • $response - Antwort vom Server
  • $env - aktuelle Umgebungsvariablen
  • $dynamicVar – dynamische Variablen, die während der Skript- oder Abfrageausführung erstellt werden

$env - Hierbei handelt es sich im Wesentlichen um gewöhnliche Variablen auf Projektknotenebene. Der Satz der Umgebungsvariablen ändert sich jedoch je nach ausgewählter Umgebung.

Der Zugriff auf die Variable erfolgt über ${variable_name}
Der Wert einer Variablen kann eine andere Variable oder sogar ein ganzer Ausdruck sein. Beispielsweise kann die URL-Variable ein Ausdruck wie „
http://${host}:${port}/${endpoint}.

Unabhängig davon ist die Möglichkeit zu erwähnen, Variablen während der Skriptausführung zuzuweisen. Beispielsweise besteht häufig die Notwendigkeit, Autorisierungsdaten (ein Token oder den gesamten Header) zu speichern, die nach einer erfolgreichen Anmeldung vom Server stammen. Mit TestMace können Sie solche Daten in dynamischen Variablen eines der Vorfahren speichern. Um Kollisionen mit bereits vorhandenen „statischen“ Variablen zu vermeiden, werden dynamische Variablen in einem separaten Objekt platziert $dynamicVar.

Szenarien

Mit allen oben genannten Funktionen können Sie ganze Abfrageskripte ausführen. Zum Beispiel eine Entität erstellen -> eine Entität abfragen -> eine Entität löschen. In diesem Fall können Sie beispielsweise über den Folder-Knoten mehrere RequestStep-Knoten gruppieren.

Autovervollständigung und Ausdruckshervorhebung

Für eine komfortable Arbeit mit Variablen (und nicht nur) ist eine automatische Vervollständigung erforderlich. Und natürlich das Hervorheben des Werts eines Ausdrucks, um einfacher und bequemer zu klären, was eine bestimmte Variable bedeutet. Das ist genau dann der Fall, wenn es besser ist, einmal zu sehen, als hundertmal zu hören:

TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Es ist erwähnenswert, dass die automatische Vervollständigung nicht nur für Variablen implementiert ist, sondern beispielsweise auch für Header, Werte bestimmter Header (z. B. Autovervollständigung für den Content-Type-Header), Protokolle und vieles mehr. Die Liste wird ständig aktualisiert, wenn die Anwendung wächst.

Rückgängig wiederholen

Das Rückgängigmachen/Wiederholen von Änderungen ist eine sehr praktische Sache, wird aber aus irgendeinem Grund nicht überall implementiert (und Tools für die Arbeit mit APIs bilden da keine Ausnahme). Aber wir gehören nicht dazu!) Wir haben das Rückgängigmachen/Wiederherstellen im gesamten Projekt implementiert, sodass Sie nicht nur die Bearbeitung eines bestimmten Knotens, sondern auch dessen Erstellung, Löschung, Verschiebung usw. rückgängig machen können. Die kritischsten Vorgänge erfordern eine Bestätigung.

Tests erstellen

Der Assertion-Knoten ist für die Erstellung von Tests verantwortlich. Eine der Hauptfunktionen ist die Möglichkeit, mithilfe integrierter Editoren Tests ohne Programmierung zu erstellen.

Ein Assertion-Knoten besteht aus einer Reihe von Assertionen. Jede Behauptung hat ihren eigenen Typ; derzeit gibt es mehrere Arten von Behauptungen

  1. Werte vergleichen – vergleicht einfach 2 Werte. Es gibt mehrere Vergleichsoperatoren: gleich, ungleich, größer als, größer oder gleich, kleiner als, kleiner als oder gleich.

  2. Enthält Wert – prüft das Vorkommen eines Teilstrings in einem String.

  3. XPath – prüft, ob der Selektor in XML einen bestimmten Wert enthält.

  4. Bei der JavaScript-Assertion handelt es sich um ein beliebiges Javascript-Skript, das bei Erfolg „true“ und bei einem Fehler „false“ zurückgibt.

Ich stelle fest, dass nur die letzte Behauptung vom Benutzer Programmierkenntnisse erfordert, die anderen drei Behauptungen werden über eine grafische Oberfläche erstellt. So sieht beispielsweise der Dialog zum Erstellen einer Vergleichswertbehauptung aus:

TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Das Tüpfelchen auf dem i ist die schnelle Erstellung von Behauptungen aus Antworten, schauen Sie sich das an!

TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Allerdings weisen solche Behauptungen offensichtliche Einschränkungen auf, die Sie möglicherweise mithilfe einer Javascript-Behauptung überwinden möchten. Und auch hier bietet TestMace eine komfortable Umgebung mit Autovervollständigung, Syntaxhervorhebung und sogar einem statischen Analysator.

API-Beschreibung

Mit TestMace können Sie die API nicht nur nutzen, sondern auch dokumentieren. Darüber hinaus ist auch die Beschreibung selbst hierarchisch aufgebaut und fügt sich organisch in den Rest des Projekts ein. Darüber hinaus ist es derzeit möglich, API-Beschreibungen aus den Formaten Swagger 2.0 / OpenAPI 3.0 zu importieren. Die Beschreibung selbst ist nicht nur ein Eigengewicht, sondern ist eng mit dem Rest des Projekts integriert, insbesondere ist die automatische Vervollständigung von URLs, HTTP-Headern, Abfrageparametern usw. verfügbar, und in Zukunft planen wir, Tests hinzuzufügen auf Übereinstimmung der Antwort mit der API-Beschreibung.

Freigabeknoten

Fall: Sie möchten eine problematische Anfrage oder sogar ein ganzes Skript mit einem Kollegen teilen oder es einfach an einen Fehler anhängen. Auch diesen Fall deckt TestMace ab: Mit der Anwendung können Sie jeden Knoten und sogar einen Teilbaum in einer URL serialisieren. Durch Kopieren und Einfügen können Sie die Anfrage ganz einfach auf eine andere Maschine oder ein anderes Projekt übertragen.

Für Menschen lesbares Projektspeicherformat

Derzeit wird jeder Knoten in einer separaten Datei mit der Erweiterung yml (wie beim Assertion-Knoten) oder in einem Ordner mit dem Namen des Knotens und der Datei index.yml darin gespeichert.
So sieht beispielsweise die Anforderungsdatei aus, die wir in der obigen Überprüfung erstellt 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 sehr klar. Auf Wunsch kann dieses Format einfach manuell bearbeitet werden.

Die Hierarchie der Ordner im Dateisystem wiederholt vollständig die Hierarchie der Knoten im Projekt. Zum Beispiel ein Skript wie:

TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Ordnet das Dateisystem der folgenden Struktur zu (nur die Ordnerhierarchie wird angezeigt, aber das Wesentliche ist klar)

TestMace – eine leistungsstarke IDE für die Arbeit mit APIs

Dies erleichtert den Projektprüfungsprozess.

Import von Postman

Nachdem sie alle oben genannten Punkte gelesen haben, möchten einige Benutzer (oder?) ein neues Produkt ausprobieren oder es (was zum Teufel ist kein Scherz!) vollständig in ihrem Projekt verwenden. Allerdings kann die Migration durch eine Vielzahl von Entwicklungen im selben Postman gestoppt werden. In solchen Fällen unterstützt TestMace den Import von Sammlungen aus Postman. Derzeit werden Importe ohne Tests unterstützt, wir schließen jedoch nicht aus, diese in Zukunft zu unterstützen.

Pläne

Ich hoffe, dass unser Produkt vielen, die bis hierhin gelesen haben, gefallen hat. Das ist jedoch noch nicht alles! Die Arbeit am Produkt ist in vollem Gange und hier sind einige Funktionen, die wir bald hinzufügen möchten.

Cloud-Synchronisierung

Eine der am häufigsten nachgefragten Funktionen. Derzeit schlagen wir die Verwendung von Versionskontrollsystemen für die Synchronisierung vor, wodurch wir das Format für diese Art von Speicherung benutzerfreundlicher gestalten. Da dieser Workflow jedoch nicht für jeden geeignet ist, planen wir, über unsere Server einen Synchronisierungsmechanismus hinzuzufügen, der vielen bekannt ist.

CLI

Wie oben erwähnt, kommen Produkte auf IDE-Ebene nicht ohne jegliche Integration in bestehende Anwendungen oder Arbeitsabläufe aus. Die CLI ist genau das, was benötigt wird, um in TestMace geschriebene Tests in den kontinuierlichen Integrationsprozess zu integrieren. Die Arbeit an der CLI ist in vollem Gange; frühe Versionen werden das Projekt mit einem einfachen Konsolenbericht starten. In Zukunft planen wir, die Berichtsausgabe im JUnit-Format hinzuzufügen.

Plugin-System

Trotz der Leistungsfähigkeit unseres Tools ist die Anzahl der Fälle, die Lösungen erfordern, grenzenlos. Schließlich gibt es Aufgaben, die spezifisch für ein bestimmtes Projekt sind. Aus diesem Grund planen wir, in Zukunft ein SDK für die Entwicklung von Plugins hinzuzufügen, und jeder Entwickler kann Funktionen nach seinen Wünschen hinzufügen.

Erweiterung des Spektrums an Knotentypen

Dieser Knotensatz deckt nicht alle vom Benutzer benötigten Fälle ab. Knoten, deren Hinzufügung geplant ist:

  • Skriptknoten – konvertiert und platziert Daten mithilfe von js und der entsprechenden API. Mit diesem Knotentyp können Sie in Postman Dinge wie Pre-Request- und Post-Request-Skripte ausführen.
  • GraphQL-Knoten – Graphql-Unterstützung
  • Benutzerdefinierter Assertionsknoten – ermöglicht es Ihnen, den Satz vorhandener Assertionen im Projekt zu erweitern
    Selbstverständlich handelt es sich hierbei nicht um eine endgültige Liste; sie wird unter anderem aufgrund Ihres Feedbacks ständig aktualisiert.

FAQ

Wie unterscheiden Sie sich von Postman?

  1. Das Konzept der Knoten, mit dem Sie die Funktionalität des Projekts nahezu unbegrenzt skalieren können
  2. Für Menschen lesbares Projektformat mit Speicherung in einem Dateisystem, was die Arbeit mit Versionskontrollsystemen vereinfacht
  3. Möglichkeit, Tests ohne Programmierung zu erstellen und erweiterte JS-Unterstützung im Testeditor (Autovervollständigung, statischer Analysator)
  4. Erweiterte automatische Vervollständigung und Hervorhebung des aktuellen Werts von Variablen

Ist das ein Open-Source-Produkt?

Nein, im Moment sind die Quellen geschlossen, aber in Zukunft erwägen wir die Möglichkeit, die Quellen zu öffnen

Wovon lebst du?)

Neben der kostenlosen Version planen wir die Veröffentlichung einer kostenpflichtigen Version des Produkts. Dazu gehören vor allem Dinge, die eine Serverseite erfordern, zum Beispiel die Synchronisierung.

Abschluss

Unser Projekt bewegt sich sprunghaft auf eine stabile Veröffentlichung zu. Das Produkt kann jedoch bereits verwendet werden, und das positive Feedback unserer ersten Anwender ist ein Beweis dafür. Wir sammeln aktiv Feedback, denn ohne eine enge Zusammenarbeit mit der Community ist es unmöglich, ein gutes Tool zu entwickeln. Hier finden Sie uns:

Offiziellen Website

Telegram

Slack

Facebook

Issues-Tracker

Wir freuen uns auf Ihre Wünsche und Anregungen!

Source: habr.com

Kommentar hinzufügen