TestMace – eine leistungsstarke 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. TestMaceVielleicht wissen einige von Ihnen bereits von uns aus frĂŒheren Artikeln.Allerdings gab es noch keinen umfassenden Überblick ĂŒber das Tool, weshalb wir dieses Ă€rgerliche Manko beheben möchten.

TestMace – eine leistungsstarke IDE fĂŒr die Arbeit mit APIs

Motivation

Gerne beginnen wir damit, wie wir ĂŒberhaupt dazu gekommen sind, unser eigenes Tool fĂŒr die fortgeschrittene Arbeit mit APIs zu entwickeln. Lassen Sie uns mit einer Liste von Funktionen anfangen, die ein Produkt auszeichnen, das man als „IDE fĂŒr die Arbeit mit APIs“ bezeichnen kann:

  • Erstellung und AusfĂŒhrung von Anfragen und Skripten (Anfragenfolgen)
  • 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 gĂ€ngigen Bibliotheken.
  • usw.

Die Liste kann nach Belieben ergĂ€nzt werden. Es ist wichtig, nicht nur die IDE selbst zu erstellen, sondern auch eine bestimmte Infrastruktur, wie z.B. Cloud-Synchronisation, Kommandozeilen-Tools, einen Online-Überwachungsdienst usw. Schließlich diktieren uns die Trends der letzten Jahre nicht nur leistungsstarke Funktionen der Anwendungen, sondern auch eine benutzerfreundliche OberflĂ€che.

FĂŒr wen ist ein solches Tool gedacht? Offensichtlich fĂŒr alle, die in irgendeiner Weise mit der Entwicklung und dem Testen von APIs zu tun haben – Entwickler und Tester =). WĂ€hrend es fĂŒr Erstere oft ausreichend ist, einfache Anfragen und Szenarien auszufĂŒhren, ist es fĂŒr Tester eines der wichtigsten Werkzeuge, das zusĂ€tzlich ĂŒber einen leistungsstarken Mechanismus zur Erstellung von Tests verfĂŒgen sollte, der die AusfĂŒhrung in CI ermöglicht.

Unter BerĂŒcksichtigung dieser Richtlinien haben wir begonnen, unser Produkt zu entwickeln. Lassen Sie uns sehen, was wir bisher erreicht haben.

Schnellstart

Lassen Sie uns mit dem ersten Eindruck der Anwendung beginnen. Sie können sie herunterladen auf unserer Website.. Sie unterstĂŒtzt derzeit alle drei Hauptplattformen – Windows, Linux, MacOS. Herunterladen, installieren und starten. Beim ersten Start sehen Sie das folgende Fenster:

TestMace – eine leistungsstarke 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 folgendermaßen aus:

TestMace – eine leistungsstarke IDE fĂŒr die Arbeit mit APIs

Lassen Sie uns darauf etwas detaillierter eingehen. Die BenutzeroberflĂ€che der Anfrage Ă€hnelt stark der BenutzeroberflĂ€che beliebter REST-Clients, was den Umstieg von solchen Werkzeugen erleichtert. Lassen Sie uns die erste Anfrage an die URL durchfĂŒhren: https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace – eine leistungsstarke IDE fĂŒr die Arbeit mit APIs

Auf den ersten Blick scheint auch das Antwort-Panel keine Überraschungen zu bieten. Ich möchte jedoch auf einige Punkte hinweisen:

  1. Der Antwortkörper wird in einer Baumstruktur dargestellt, was erstens die Informationsvielfalt erhöht und zweitens einige interessante Funktionen ermöglicht, ĂŒber die ich weiter unten 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, kann unser Werkzeug als praktischer REST-Client verwendet werden. Aber wir sind hier nicht, wenn seine Funktionen nur auf das Senden von Anfragen beschrÀnkt wÀren. Im Folgenden werde ich die grundlegenden Konzepte und FunktionalitÀten von TestMace darlegen.

Grundlegende Konzepte und Möglichkeiten

Knoten

Die FunktionalitĂ€t von TestMace ist in verschiedene Knotentypen unterteilt. Im obigen Beispiel haben wir die Arbeitsweise des RequestStep-Knotens demonstriert. Derzeit sind jedoch auch die folgenden Knotentypen in der Anwendung verfĂŒgbar:

  • RequestStep. Dies ist der Knoten, mit dem eine Anfrage erstellt werden kann. Als untergeordnetes Element kann er nur einen Assertion-Knoten haben.
  • Assertion. Der Knoten wird zum Schreiben von Tests verwendet. Er kann nur ein untergeordneter Knoten des RequestStep-Knotens sein.
  • Folder. Ermöglicht das Gruppieren von Folder- und RequestStep-Knoten innerhalb seiner Struktur.
  • 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. Ermöglicht die Wiederverwendung von Anfragen und Szenarien.
  • usw.

Die Knoten befinden sich in den Scratchpads (Panel links unten, das fĂŒr die schnelle Erstellung von „Einmal“-Anfragen dient) und im Projekt (Panel links oben), dem wir etwas detaillierter Aufmerksamkeit schenken werden.

Projekt

Beim Start der Anwendung haben Sie möglicherweise die einsame Zeile „Projekt“ in der oberen linken Ecke bemerkt. Dies ist die Wurzel des Projektbaums. Bei der Erstellung eines Projekts wird ein temporĂ€res Projekt angelegt, dessen Pfad von Ihrem Betriebssystem abhĂ€ngt. Zu jedem Zeitpunkt können Sie das Projekt an einen fĂŒr Sie passenden Ort verschieben.

Der Hauptzweck des Projekts besteht darin, Ihre Entwicklungen im Dateisystem zu speichern und spĂ€ter mit Versionskontrollsystemen zu synchronisieren, Skripte in CI durchzufĂŒhren, Änderungen zu ĂŒberprĂŒfen usw.

Variablen

Variablen sind eines der SchlĂŒsselmechanismen der Anwendung. Diejenigen unter Ihnen, die mit Tools wie TestMace arbeiten, haben möglicherweise bereits eine Vorstellung davon, worum es geht. Variablen sind eine Möglichkeit, gemeinsame Daten zu speichern und die Kommunikation zwischen Knoten zu ermöglichen. Ein Beispiel hierfĂŒr sind Umgebungsvariablen in Postman oder Insomnia. Wir sind jedoch weiter gegangen und haben das Konzept weiterentwickelt. In TestMace können Variablen auf Knotenebene festgelegt werden – auf beliebige. Zudem gibt es einen Mechanismus zur Vererbung von Variablen von Vorfahren und zur Überschreibung von Variablen in Nachkommen. DarĂŒber hinaus gibt es eine Reihe integrierter Variablen, deren Namen mit beginnen $. Hier sind einige davon:

  • $prevStep — Link zu den Variablen des vorherigen Knotens
  • $nextStep — Link zu den Variablen des nĂ€chsten Knotens
  • $parent — das Gleiche, jedoch fĂŒr den VorgĂ€nger
  • $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 gewöhnliche Projektvariablen des Knotens, aber die Menge an Umgebungsvariablen variiert je nach gewĂ€hlter Umgebung.

Zugriff auf die Variable erfolgt ĂŒber ${variable_name}
Als Wert der Variablen kann eine andere Variable oder sogar ein ganzes Ausdruck verwendet werden. Zum Beispiel kann der Wert der Variable url einen Ausdruck wie
http://${host}:${port}/${endpoint} haben..

Besonders hervorzuheben ist die Möglichkeit, Variablen zur Laufzeit eines Skripts zuzuweisen. Oft besteht die Notwendigkeit, Authentifizierungsdaten (Token oder den gesamten Header) zu speichern, die vom Server nach einem erfolgreichen Login zurĂŒckgegeben werden. TestMace ermöglicht das Speichern solcher Daten in dynamischen Variablen eines der ĂŒbergeordneten Objekte. Um Kollisionen mit bereits existierenden "statischen" Variablen zu vermeiden, wurden die dynamischen Variablen in ein separates Objekt ausgegliedert. $dynamicVar.

Szenarien

Mit den oben genannten Funktionen können Sie komplette Anfrage-Szenarien ausfĂŒhren. Zum Beispiel: EntitĂ€t erstellen → EntitĂ€t anfragen → EntitĂ€t löschen. In diesem Fall können Sie beispielsweise den Folder-Knoten zur Gruppierung mehrerer RequestStep-Knoten verwenden.

Automatische VervollstÀndigung und Hervorhebung des Ausdruckswerts

FĂŒr eine einfache Arbeit mit Variablen (und mehr) ist eine automatische VervollstĂ€ndigung unerlĂ€sslich. Und natĂŒrlich die Hervorhebung des Ausdruckswerts, um es einfacher und angenehmer zu machen zu klĂ€ren, was eine bestimmte Variable bedeutet. Hier ist es tatsĂ€chlich besser, einmal zu sehen, als hundert Mal zuzuhören:

TestMace – eine leistungsstarke IDE fĂŒr die Arbeit mit APIs

Es ist wichtig zu beachten, dass die AutovervollstĂ€ndigung nicht nur fĂŒr Variablen, sondern auch beispielsweise fĂŒr Überschriften, Werte bestimmter Header (wie die AutovervollstĂ€ndigung fĂŒr den Content-Type-Header), Protokolle und vieles mehr implementiert ist. Die Liste wird kontinuierlich erweitert, wĂ€hrend die Anwendung wĂ€chst.

RĂŒckgĂ€ngig/Wiederholen

Das RĂŒckgĂ€ngig/Wiederholen von Änderungen ist eine sehr nĂŒtzliche Funktion, die jedoch aus irgendeinem Grund nicht ĂŒberall implementiert ist (und die Tools zur Arbeit mit APIs sind da keine Ausnahme). Aber wir gehören nicht dazu!) Das RĂŒckgĂ€ngig/Wiederholen ist in unserem 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. Kritische Operationen erfordern eine BestĂ€tigung.

Test erstellen

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

Der Assertion-Knoten besteht aus einer Reihe von Assertions. Jede Assertion hat ihren eigenen Typ, und derzeit 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. EnthĂ€lt Wert – prĂŒft, ob eine Teilzeichenfolge in einer Zeichenfolge vorhanden ist.

  3. XPath – prĂŒft, ob ein bestimmter Wert im XML durch den Selektor existiert.

  4. JavaScript-Aussage – ein beliebiges Skript in JavaScript, das true im Erfolgsfall und false im Falle eines Misserfolgs zurĂŒckgibt.

Ich möchte anmerken, dass nur die letzte vom Benutzer Programmierkenntnisse erfordert; die anderen drei Assertionen werden ĂŒber die grafische BenutzeroberflĂ€che erstellt. So sieht beispielsweise der Dialog zum Erstellen einer Vergleichswert-Assertion aus:

TestMace – eine leistungsstarke 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 leistungsstarke IDE fĂŒr die Arbeit mit APIs

Solche Assertions haben jedoch offensichtliche EinschrÀnkungen, bei deren Auftreten Sie JavaScript-Assertions verwenden können. Auch hier bietet TestMace eine komfortable Umgebung mit AutovervollstÀndigung, Syntaxhervorhebung und sogar einem statischen Analysator.

API-Beschreibung

TestMace ermöglicht nicht nur die Nutzung der API, sondern auch deren Dokumentation. Dabei hat die Beschreibung eine hierarchische Struktur und fĂŒgt sich harmonisch in das Gesamtprojekt ein. Aktuell besteht zudem die Möglichkeit, API-Beschreibungen aus den Formaten Swagger 2.0 / OpenAPI 3.0 zu importieren. Die Beschreibung liegt nicht nur als toter Ballast da, sondern integriert sich eng mit dem Rest des Projekts. So steht beispielsweise die AutovervollstĂ€ndigung fĂŒr URLs, HTTP-Header, Query-Parameter und mehr zur VerfĂŒgung. In Zukunft planen wir, Tests zur Übereinstimmung der Antworten mit der API-Beschreibung hinzuzufĂŒgen.

Node-Sharing

Anwendungsfall: Sie möchten eine problematische Anfrage oder sogar ein ganzes 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 TeilbĂ€ume in eine URL zu serialisieren. Kopieren und einfĂŒgen, und schon haben Sie die Anfrage problemlos auf einen anderen Computer oder in ein anderes Projekt ĂŒbertragen.

Benutzerfreundliches Format zur Speicherung des Projekts

Derzeit wird jeder Knoten in einer separaten Datei mit der Erweiterung yml gespeichert (wie im Fall der Assertion-Node) oder in einem Ordner mit dem Namen des Knotens und einer index.yml-Datei darin.
So sieht zum Beispiel die Datei mit der Anfrage aus, die wir im obigen Überblick 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 können, ist alles klar und deutlich. Bei Bedarf lÀsst sich dieses Format auch komfortabel manuell bearbeiten.

Die Ordnerhierarchie im Dateisystem spiegelt vollstĂ€ndig die Knotenhierarchie im Projekt wider. Zum Beispiel sieht ein Szenario folgendermaßen aus:

TestMace – eine leistungsstarke IDE fĂŒr die Arbeit mit APIs

Es wird im Dateisystem auf die folgende Struktur abgebildet (hier wird nur die Ordnerhierarchie dargestellt, aber der Kern ist klar)

TestMace – eine leistungsstarke IDE fĂŒr die Arbeit mit APIs

Was den ÜberprĂŒfungsprozess des Projekts erleichtert.

Import aus Postman

Nach dem Lesen des Vorstehenden möchten einige Benutzer möglicherweise (darf ich sagen?) das neue Produkt ausprobieren oder (wer weiß?) es vollstĂ€ndig in ihrem Projekt nutzen. Allerdings könnte eine Vielzahl an bereits erstellten Arbeiten im gleichen Postman die Migration stoppen. FĂŒr solche FĂ€lle unterstĂŒtzt TestMace den Import von Sammlungen aus Postman. Derzeit ist der Import ohne Tests unterstĂŒtzt, jedoch schließen wir zukĂŒnftige UnterstĂŒtzung nicht aus.

PlÀne

Wir hoffen, dass unser Produkt vielen von Ihnen, die bis zu diesem Punkt gelesen haben, gefallen hat. Doch das ist noch nicht alles! Die Entwicklung des Produkts lĂ€uft auf Hochtouren, und hier sind einige Funktionen, die wir bald hinzufĂŒgen möchten.

Cloud-Synchronisierung

Eine der meist nachgefragten Funktionen. Momentan bieten wir zur Synchronisierung Versionskontrollsysteme an, weshalb wir das Format benutzerfreundlicher fĂŒr diese Art der Speicherung gestalten. Da jedoch nicht jeder mit diesem Workflow umgehen kann, planen wir die EinfĂŒhrung einer fĂŒr viele gewohnten Synchronisationsmechanismus ĂŒber unsere Server.

CLI

Wie bereits erwĂ€hnt, verzichten IDE-Produkte nicht auf verschiedene Integrationen mit bereits bestehenden Anwendungen oder Workflows. Ein CLI ist notwendig, um Tests, die in TestMace geschrieben wurden, in den Continuous-Integration-Prozess zu integrieren. Die Arbeit am CLI lĂ€uft auf Hochtouren, in den ersten Versionen wird das Projekt mit einfachen Konsolenberichten gestartet. ZukĂŒnftig planen wir, die Ausgabe des Berichts im JUnit-Format hinzuzufĂŒgen.

Plug-in-System

Trotz der LeistungsfĂ€higkeit unseres Tools gibt es eine unendliche Anzahl von AnwendungsfĂ€llen, die gelöst werden mĂŒssen. Schließlich gibt es spezifische Aufgaben fĂŒr jedes Projekt. Daher planen wir, in Zukunft ein SDK zur Entwicklung von Plugins hinzuzufĂŒgen, sodass jeder Entwickler die FunktionalitĂ€t nach seinen Vorstellungen erweitern kann.

Erweiterung des Sortiments an Knotentypen

Dieses Set an Knoten deckt nicht alle erforderlichen AnwendungsfĂ€lle fĂŒr den Benutzer ab. Die Knoten, die hinzugefĂŒgt werden sollen:

  • Script-Knoten – wandelt Daten um und platziert sie unter Verwendung von JavaScript und dem entsprechenden API. Mit diesem Knotentyp können Sie beispielsweise 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 Sets an Assertions im Projekt
    NatĂŒrlich ist dies nicht die endgĂŒltige Liste; sie wird stĂ€ndig durch Ihr Feedback und andere BeitrĂ€ge ergĂ€nzt.

FAQ

Wie unterscheiden Sie sich von Postman?

  1. Das Konzept von Knoten, das es ermöglicht, die FunktionalitÀt des Projekts nahezu unbegrenzt zu skalieren.
  2. Ein menschenlesbares Format des Projekts, das in der Dateinstruktur gespeichert wird, was die Arbeit mit Versionskontrollsystemen erleichtert.
  3. Die Möglichkeit, Tests ohne Programmierung zu erstellen, sowie eine erweiterte UnterstĂŒtzung fĂŒr JavaScript im Testeditor (Auto-VervollstĂ€ndigung, statische Analyse).
  4. Erweiterte Auto-VervollstÀndigung und Hervorhebung des aktuellen Wertes von Variablen.

Ist dies ein Open-Source-Produkt?

Nein, die Quellcodes sind derzeit nicht öffentlich, aber wir ziehen in Betracht, sie in Zukunft zu öffnen.

Wie finanzieren Sie sich?

Neben der kostenlosen Version planen wir, eine kostenpflichtige Version des Produkts herauszubringen. Diese wird in erster Linie Funktionen enthalten, die eine Serverkomponente benötigen, z. B. Synchronisation.

Fazit

Unser Projekt schreitet rasant auf eine stabile Veröffentlichung zu. Das Produkt kann jedoch bereits jetzt genutzt werden, und die positiven RĂŒckmeldungen unserer ersten Nutzer bestĂ€tigen dies. Wir sammeln aktiv Feedback, denn ohne enge Zusammenarbeit mit der Community ist es nicht möglich, ein gutes Werkzeug zu schaffen. Sie finden uns hier:

Offizielle Website

Telegram

Slack

Facebook

Issues-Tracker

Wir freuen uns auf Ihre WĂŒnsche und Anregungen!

Quelle: habr.com

Erwerben Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster