Hallo allerseits! Heute möchten wir unser Produkt, die IDE für die Arbeit mit der TestMace- API, der IT-Community vorstellen . Vielleicht kennen einige von Ihnen uns bereits aus früheren Artikeln . Es gab jedoch keine umfassende Überprüfung des Tools, sodass wir diesen lästigen Nachteil beseitigen.

Motivation
Ich möchte damit beginnen, wie wir tatsächlich zu einem solchen Leben gekommen sind und beschlossen haben, unser Tool für die fortgeschrittene Arbeit mit der API einzureichen. Beginnen wir mit einer Liste von Funktionen, die ein Produkt haben sollte, über die wir unserer Meinung nach sagen können, dass dies eine „IDE für die Arbeit mit APIs“ ist:
- Erstellen und Ausführen von Abfragen und Skripten (Abfragesequenzen)
- Verschiedene Arten von Tests schreiben
- Testgenerierung
- Arbeiten Sie mit API-Beschreibungen, einschließlich Import aus Formaten wie Swagger, OpenAPI, WADL usw.
- Spott anfordern
- Gute Unterstützung für eine oder mehrere Skriptsprachen, einschließlich der Integration in gängige Bibliotheken
- usw.
Die Liste kann nach Geschmack ergänzt werden. Darüber hinaus ist es wichtig, nicht nur die IDE selbst zu erstellen, sondern auch eine bestimmte Infrastruktur wie Cloud-Synchronisation, Befehlszeilentools, einen Online-Überwachungsdienst usw. Letztendlich bestimmen uns die Trends der letzten Jahre nicht nur die leistungsstarke Funktionalität der Anwendung, sondern auch ihre schöne Oberfläche.
Wer braucht ein ähnliches Werkzeug? Offensichtlich sind alle diejenigen, die zumindest irgendwie mit der Entwicklung und dem Testen der API verbunden sind, Entwickler und Tester =). Wenn es für erstere häufig ausreicht, einzelne Abfragen und einfache Skripte zu vervollständigen, ist dies für Tester eines der Hauptwerkzeuge, das unter anderem einen leistungsstarken Mechanismus zum Schreiben von Tests mit der Möglichkeit enthalten sollte, diese in CI auszuführen.
Nach diesen Richtlinien haben wir begonnen, unser eigenes Produkt zu entwickeln. Mal sehen, was wir zu diesem Zeitpunkt bekommen haben.
Schnellstart
Beginnen wir mit der ersten Bekanntschaft mit der Anwendung. Sie können es auf unserer Website herunterladen . Derzeit werden alle drei Hauptplattformen unterstützt - Windows, Linux, MacOS. Herunterladen, installieren, ausführen. Beim ersten Start sehen Sie folgendes Fenster:

Klicken Sie oben im Inhaltsbereich auf das Pluszeichen, um die erste Anfrage zu erstellen. Die Registerkarte "Anforderung" lautet wie folgt:

Lassen Sie uns näher darauf eingehen. Die Anforderungsschnittstelle ist der Schnittstelle beliebter Rest-Clients sehr ähnlich, was die Migration von solchen Tools erleichtert. Lassen Sie uns die erste URL-Anfrage https://next.json-generator.com/api/json/get/NJv-NT-U8 stellen

Generell sorgt das Response Panel auf den ersten Blick auch nicht für Überraschungen. Ich werde Sie jedoch auf einige Punkte aufmerksam machen:
- Der Antworttext verfügt über eine Baumdarstellung, die zum einen die Informativität erhöht und zum anderen einige interessante Funktionen enthält, über die im Folgenden berichtet wird
- Es gibt eine Registerkarte "Zusicherungen", auf der eine Liste der Tests für diese Anforderung angezeigt wird.
Wie Sie sehen, kann unser Tool als praktischer Rest-Client verwendet werden. Wir hätten uns hier jedoch nicht versammelt, wenn sich seine Funktionen nur auf das Senden von Anfragen beschränkt hätten. Als nächstes werde ich die grundlegenden Konzepte und Funktionen von TestMace skizzieren.
Schlüsselkonzepte und -merkmale
Knoten
Funktionalität TestMace ist in verschiedene Knotentypen unterteilt. Im obigen Beispiel haben wir die Funktionsweise des RequestStep-Knotens demonstriert. In der Anwendung sind jetzt jedoch auch die folgenden Knotentypen verfügbar:
- RequestStep. Dies ist der Knoten, mit dem Sie eine Abfrage erstellen können. Als Kind kann es nur einen Assertionsknoten haben.
- Behauptung. Der Knoten wird zum Schreiben von Tests verwendet. Es kann nur ein untergeordneter Knoten für den RequestStep-Knoten sein.
- Ordner Ermöglicht das Gruppieren von Ordner- und RequestStep-Knoten in sich.
- Projekt Dies ist der Stammknoten, der automatisch erstellt wird, wenn das Projekt erstellt wird. Der Rest wiederholt die Funktionalität des Ordnerknotens.
- Link Link zum Ordner- oder RequestStep-Knoten. Ermöglicht die Wiederverwendung von Abfragen und Skripten.
- usw.
Die Knoten befinden sich in Kratzern (das Feld unten links dient zum schnellen Erstellen "einmaliger" Anforderungen) und im Projekt (das Feld oben links), auf das wir näher eingehen werden.
Projekt
Wenn Sie die Anwendung starten, sehen 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 übertragen.
Der Hauptzweck des Projekts ist die Möglichkeit, Betriebszeit im Dateisystem zu sparen und die Synchronisierung durch Versionskontrollsysteme, Skriptausführung in CI, Überprüfung von Änderungen usw. weiter zu synchronisieren.
Variablen
Variablen sind einer der Schlüsselmechanismen der Anwendung. Diejenigen unter Ihnen, die mit Tools wie TestMace arbeiten, haben möglicherweise bereits verstanden, worum es geht. Variablen sind also eine Möglichkeit, gemeinsame Daten und die Kommunikation zwischen Knoten zu erhalten. Beispielsweise sind Umgebungsvariablen in Postman oder Insomnia analog. Wir gingen jedoch weiter und entwickelten das Thema. 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 von integrierten Variablen. Die Namen der integrierten Variablen beginnen mit $
. Hier sind einige davon:
$prevStep
- Verweis auf die Variablen des vorherigen Knotens$nextStep
- Verweis auf die Variablen des nächsten Knotens$parent
ist das gleiche, aber nur für den Vorfahren$response
- Antwort vom Server$env
- aktuelle Umgebungsvariablen$dynamicVar
- dynamische Variablen, die während der Ausführung eines Skripts oder einer Anforderung erstellt wurden
$env
ist im Wesentlichen die gewöhnliche Variable der Projektebene des Knotens. Die Menge der Umgebungsvariablen hängt jedoch von der ausgewählten Umgebung ab.
Auf die Variable wird über ${variable_name}
zugegriffen
Der Wert einer Variablen kann eine andere Variable oder sogar ein ganzzahliger Ausdruck sein. Beispielsweise kann eine URL-Variable ein Ausdruck des Formulars sein
http://${host}:${port}/${endpoint}
.
Unabhängig davon ist die Möglichkeit zu beachten, während der Skriptausführung Variablen zuzuweisen. Beispielsweise müssen häufig die Autorisierungsdaten (Token oder der gesamte Header) gespeichert werden, 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 vorhandenen "statischen" Variablen zu vermeiden, werden dynamische Variablen in ein separates $dynamicVar
Objekt $dynamicVar
.
Szenarien
Mit allen oben genannten Funktionen können Sie ganze Abfrageskripte ausführen. Beispiel: Erstellen einer Entität -> Abfragen einer Entität -> Löschen einer Entität. In diesem Fall können Sie beispielsweise den Ordnerknoten verwenden, um mehrere RequestStep-Knoten zu gruppieren.
Ausdruckswert automatisch vervollständigen und hervorheben
Für eine bequeme Arbeit mit Variablen (und nicht nur) ist eine automatische Vervollständigung erforderlich. Und natürlich den Wert des Ausdrucks hervorheben, damit es einfacher und bequemer ist zu klären, was dieser oder jener Variablen entspricht. Hier ist nur der Fall, wenn es besser ist, einmal zu sehen als hundertmal zu hören:

Es ist anzumerken, dass die automatische Vervollständigung nicht nur für Variablen implementiert wird, sondern beispielsweise auch für Header, die Werte bestimmter Header (z. B. die automatische Vervollständigung für den Header vom Inhaltstyp), Protokolle und vieles mehr. Die Liste wird ständig mit dem Wachstum der Anwendung aktualisiert.
Rückgängig / Wiederherstellen
Das Rückgängigmachen / Wiederherstellen von Änderungen ist eine sehr bequeme Sache, aber aus irgendeinem Grund ist es weit davon entfernt, überall implementiert zu werden (und Tools für die Arbeit mit der API sind keine Ausnahme). Aber wir gehören nicht dazu!) Rückgängig / Wiederherstellen wird im Rahmen des gesamten Projekts implementiert, sodass Sie nicht nur die Bearbeitung eines bestimmten Knotens, sondern auch dessen Erstellung, Löschung, Verschiebung usw. abbrechen können. Die kritischsten Vorgänge müssen bestätigt werden.
Testerstellung
Der Assertion-Knoten ist für die Erstellung der Tests verantwortlich. Eines der Hauptmerkmale ist die Möglichkeit, Tests ohne Programmierung mit integrierten Editoren zu erstellen.
Ein Assertionsknoten besteht aus einer Reihe von Assertions (Anweisungen). Jede Behauptung hat ihren eigenen Typ. Im Moment gibt es verschiedene Arten von Behauptungen
Werte vergleichen - vergleicht nur 2 Werte. Es gibt mehrere Vergleichsoperatoren für gleich, nicht gleich, größer als, größer als oder gleich, kleiner als, kleiner als oder gleich.
Enthält Wert - Überprüft, ob sich eine Teilzeichenfolge in einer Zeichenfolge befindet.
XPath - Überprüft, ob ein bestimmter Wert im Selektor in XML liegt.
Die JavaScript-Zusicherung ist ein beliebiges Javascript-Skript, das bei Erfolg true und bei Fehlschlag false zurückgibt.
Ich stelle fest, dass nur letzteres vom Benutzer Programmierkenntnisse erfordert, die restlichen 3 Zusicherungen werden über die grafische Oberfläche erstellt. Hier sieht es beispielsweise so aus, als würde der Dialog zum Erstellen einer Assertion für Vergleichswerte angezeigt:

Die Kirsche auf dem Kuchen ist die schnelle Erstellung von Aussagen aus der Antwort, werfen Sie einen Blick darauf!

Solche Behauptungen haben jedoch offensichtliche Einschränkungen, mit denen Sie die Javascript-Behauptung verwenden können, um zu kollidieren. Und hier bietet TestMace auch eine komfortable Umgebung mit automatischer Vervollständigung, Syntaxhervorhebung und sogar mit einem statischen Analysator.
API-Beschreibung
Mit TestMace können Sie die API nicht nur verwenden, sondern auch dokumentieren. Darüber hinaus hat die Beschreibung selbst eine hierarchische Struktur und passt organisch in den Rest des Projekts. Darüber hinaus ist es derzeit möglich, API-Beschreibungen aus Swagger 2.0 / OpenAPI 3.0-Formaten zu importieren. Die Beschreibung selbst ist nicht nur ein totes Gewicht, sondern integriert sich eng in den Rest des Projekts. Insbesondere ist die automatische Vervollständigung von URLs, HTTP-Headern, Abfrageparametern und mehr verfügbar. In Zukunft planen wir, Tests hinzuzufügen, um die Antwort mit der API-Beschreibung abzugleichen.
Knoten teilen
Fall: Möchten Sie eine problematische Anfrage oder sogar ein ganzes Skript an einen Kollegen weitergeben oder einfach an einen Fehler anhängen. TestMace deckt auch diesen Fall ab: Mit der Anwendung können Sie jeden Knoten und sogar Teilbaum in der URL serialisieren. Durch Kopieren und Einfügen können Sie die Anforderung problemlos auf einen anderen Computer oder ein anderes Projekt übertragen.
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 darin enthaltenen Datei index.yml gespeichert.
So sieht eine Beispieldatei mit der Anfrage aus, die wir in der obigen Überprüfung gestellt 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 können, ist alles sehr klar. Falls gewünscht, lässt sich ein solches Format bequem manuell bearbeiten.
Die Ordnerhierarchie im Dateisystem wiederholt die Hierarchie der Knoten im Projekt vollständig. Zum Beispiel ein Szenario des Formulars:

Es wird der folgenden Struktur im Dateisystem zugeordnet (nur die Ordnerhierarchie wird angezeigt, aber das Wesentliche ist klar).

Dies erleichtert den Projektüberprüfungsprozess.
Import vom Postboten
Nachdem Sie alle oben genannten Punkte gelesen haben, möchten einige Benutzer (richtig?) Ein neues Produkt ausprobieren oder (was zum Teufel macht das nicht Spaß!), Um sich voll und ganz auf ihr Projekt einzulassen. Die Migration kann jedoch durch eine Vielzahl von Entwicklungen im selben Postboten gestoppt werden. In solchen Fällen unterstützt TestMace das Importieren von Sammlungen aus Postman. Im Moment wird der Import ohne Tests unterstützt, aber in Zukunft schließen wir deren Unterstützung nicht aus.
Pläne
Ich hoffe, dass vielen von denen, die bis zu diesem Punkt gelesen haben, unser Produkt gefallen hat. Dies ist jedoch nicht alles! Die Arbeit an dem Produkt ist in vollem Gange und hier sind einige Funktionen, die wir in Kürze hinzufügen möchten.
Cloud-Synchronisierung
Eine der am häufigsten nachgefragten Funktionen. Derzeit schlagen wir vor, Versionskontrollsysteme als Synchronisation zu verwenden, für die wir das Format für diese Art von Speicher benutzerfreundlicher gestalten. Dieser Workflow ist jedoch nicht für alle geeignet. Daher ist geplant, den Synchronisierungsmechanismus hinzuzufügen, der vielen über unsere Server bekannt ist.
CLI
Wie oben erwähnt, können Produkte auf IDE-Ebene nicht auf alle Arten von Integrationen in vorhandene Anwendungen oder Workflows verzichten. 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. In früheren Versionen wird ein Projekt mit einem einfachen Konsolenbericht gestartet. In Zukunft ist geplant, die Ausgabe des Berichts im JUnit-Format hinzuzufügen.
Plugin-System
Trotz aller Leistungsfähigkeit unseres Tools sind die Fälle, die gelöst werden müssen, unbegrenzt. Am Ende gibt es Aufgaben, die für ein bestimmtes Projekt spezifisch sind. Aus diesem Grund planen wir, in Zukunft ein SDK für die Plug-In-Entwicklung hinzuzufügen, und jeder Entwickler kann Funktionen nach Geschmack hinzufügen.
Erweiterung des Sortiments an Knotentypen
Dieser Knotensatz deckt nicht alle vom Benutzer benötigten Fälle ab. Hinzuzufügende Knoten:
- Skriptknoten - konvertiert und platziert Daten mit js und der entsprechenden API. Mit diesem Knotentyp können Sie in Postman beispielsweise Skripts vor und nach der Anforderung ausführen.
- GraphQL-Knoten - Graphql-Unterstützung
- Benutzerdefinierter Assertionsknoten - Ermöglicht das Erweitern des Satzes verfügbarer Assertions im Projekt
Dies ist natürlich keine endgültige Liste, sie wird unter anderem aufgrund Ihres Feedbacks ständig aktualisiert.
FAQ
Wie unterscheiden Sie sich von Postman?
- Das Konzept der Knoten, mit dem Sie die Projektfunktionalität nahezu unbegrenzt skalieren können
- Vom Menschen lesbares Projektformat mit Speichern im Dateisystem, was die Arbeit mit Versionskontrollsystemen vereinfacht
- Die Möglichkeit, Tests ohne Programmierung und erweiterte JS-Unterstützung im Testeditor zu erstellen (automatische Vervollständigung, statischer Analysator)
- Erweiterte automatische Vervollständigung und Hervorheben 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
Wofür lebst du?)
Zusammen mit der kostenlosen Version planen wir die Veröffentlichung einer kostenpflichtigen Version des Produkts. Es werden hauptsächlich Teile enthalten sein, die die Serverseite erfordern, z. B. die Synchronisierung.
Fazit
Unser Projekt bewegt sich sprunghaft zu einer stabilen Veröffentlichung. Jetzt kann das Produkt jedoch verwendet werden, und das positive Feedback unserer frühen Benutzer ist ein Beweis dafür. Wir sammeln aktiv Feedback, denn ohne enge Zusammenarbeit mit der Community ist es unmöglich, ein gutes Tool zu entwickeln. Sie finden uns hier:
Offiziellen Website
Telegramm
Schlaff
Facebook
Gibt Tracker aus
Wir freuen uns auf Ihre Wünsche und Anregungen!