Was macht TestMace besser als Postman?

Was macht TestMace besser als Postman?

Hallo zusammen, hier ist TestMace! Viele von Ihnen kennen uns vielleicht aus unseren vorherigen Artikel. Für diejenigen, die gerade dazugestoßen sind: Wir entwickeln eine IDE für die Arbeit mit APIs, TestMace. Die häufigste Frage, die beim Vergleich von TestMace mit Wettbewerbsprodukten aufkommt, ist: „Was unterscheidet Sie von Postman?“. Wir haben beschlossen, eine ausführliche Antwort auf diese Frage zu geben. Im Folgenden haben wir unsere Vorteile im Vergleich zu Postman.

Die Aufteilung in Knoten

Wenn Sie mit Postman arbeiten, wissen Sie, dass die Benutzeroberfläche für Anfragen über alle erforderlichen Funktionen verfügt. Hier gibt es Skripte, Tests und die Anfragen selbst. Dies erleichtert Anfängern die Arbeit, ist jedoch bei umfangreichen Szenarien nicht flexibel. Was ist, wenn Sie mehrere Anfragen erstellen und diese aggregieren möchten? Was ist, wenn Sie ein Skript ohne Anfrage oder mehrere logisch getrennte Skripte hintereinander ausführen möchten? Schließlich wäre es gut, Tests von normalen utilitaristischen Skripten zu trennen. Darüber hinaus ist der Ansatz „alle Funktionen in einem Knoten hinzufügen“ nicht skalierbar – die Benutzeroberfläche wird schnell überlastet.

TestMace teilt die gesamte Funktionalität zunächst in verschiedene Knotentypen auf. Möchten Sie eine Anfrage stellen? Hier ist sie: Anfrage Schritt Knoten. Möchten Sie ein Skript schreiben? Hier ist es: script Knoten. Brauchen Sie Tests? Bitte — Assertion Knoten. Ach ja, Sie können all das auch in einen Ordner Knoten. Und all das lässt sich leicht miteinander kombinieren. Dieser Ansatz ist nicht nur sehr flexibel, sondern ermöglicht es auch, gemäß dem Prinzip der einzigen Verantwortlichkeit nur das zu verwenden, was Sie gerade wirklich brauchen. Warum sollte ich Skripte und Tests benötigen, wenn ich einfach nur eine Anfrage stellen möchte?

Menschenlesbares Projektformat

Zwischen TestMace und Postman gibt es ein konzeptionelles Unterschied in der Art der Speicherung. In Postman werden alle Anfragen irgendwo im lokalen Speicher aufbewahrt. Wenn es notwendig ist, Anfragen zwischen mehreren Benutzern zu teilen, muss die integrierte Synchronisierung genutzt werden. Tatsächlich ist dies ein gängiger Ansatz, der jedoch einige Nachteile hat. Wie steht es um die Datensicherheit? Schließlich kann die Politik einiger Unternehmen das Speichern von Daten bei Dritten verbieten. Wir sind jedoch der Meinung, dass TestMace etwas Besseres anbieten kann! Und der Name dieser Verbesserung ist "lesbarer Projektformat".

Lass uns damit anfangen, dass TestMace grundsätzlich eine Entität „Projekt“ hat. Und die Anwendung wurde ursprünglich mit dem Ziel entwickelt, Projekte in Versionskontrollsystemen zu speichern: Der Projektbaum spiegelt sich nahezu eins zu eins in der Dateistruktur wider, das Speicherformat verwendet YAML (ohne unnötige Klammern und Kommas), und die Datei-Darstellung jedes Knotens ist in der Dokumentation ausführlich mit Kommentaren beschrieben. In den meisten Fällen wirst du jedoch nicht hineinsehen müssen – alle Feldnamen haben logische Bezeichnungen.

Was bietet das für den Benutzer? Es ermöglicht eine sehr flexible Anpassung des Workflow-Teams unter Verwendung vertrauter Ansätze. Zum Beispiel können Entwickler das Projekt im selben Repository wie das Backend speichern. In den Branches kann der Entwickler nicht nur die Codebasis ändern, sondern auch bestehende Abfrage-Szenarien und Tests anpassen. Nach dem Festschreiben der Änderungen im Repository (git, svn, mercurial – was Ihnen am besten gefällt) startet CI (Ihre bevorzugte, selbstgewählte) unser Konsolen-Tool. testmace-cli, und der nach der Ausführung erhaltene Bericht (zum Beispiel im junit-Format, das auch von testmace-cli unterstützt wird) wird an das entsprechende System gesendet. Das zuvor genannte Sicherheitsproblem ist somit ebenfalls gelöst.

Wie Sie sehen, zwingt TestMace nicht seine eigene Ökosystem und Paradigmen auf. Stattdessen fügt es sich nahtlos in bereits etablierte Prozesse ein.

Dynamische Variablen

TestMace folgt dem No-Code-Konzept: Wenn ein Problem ohne Verwendung von Code gelöst werden kann, bemühen wir uns, diese Möglichkeit bereitzustellen. Der Umgang mit Variablen ist genau die Art von Funktionalität, bei der man in den meisten Fällen ohne Programmierung auskommt.

Beispiel: Wir haben eine Antwort vom Server erhalten und möchten einen Teil der Antwort in einer Variable speichern. In Postman würden wir im Test-Skript (was schon seltsam ist) etwas in dieser Art schreiben:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

Aber unserer Meinung nach ist das Schreiben eines Skripts für ein so einfaches und häufig verwendetes Szenario überflüssig. Daher bietet TestMace die Möglichkeit, einen Teil der Antwort über die grafische Benutzeroberfläche einer Variablen zuzuweisen. Sehen Sie, wie einfach das ist:

Was macht TestMace besser als Postman?

Und jetzt wird diese dynamische Variable bei jeder Anfrage aktualisiert. Sie könnten jedoch argumentieren, dass der Postman-Ansatz flexibler ist und nicht nur eine Zuweisung ermöglicht, sondern auch eine gewisse Vorverarbeitung. So könnte das vorherige Beispiel modifiziert werden:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

Nun, dafür gibt es in TestMace einen script Node, der dieses Szenario abdeckt. Um den vorherigen Fall in TestMace nachzustellen, ist es notwendig, nach der Anfrage einen Script-Node zu erstellen und den folgenden Code als Skript zu verwenden:

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

Wie Sie sehen, hat die Struktur der Knoten auch hier gute Dienste geleistet. Und für einen so einfachen Fall, wie der oben beschriebene, können Sie das Ausdruck einfach direkt einer ${crypto.MD5($response.data)} Variablen zuweisen, die über die grafische Benutzeroberfläche erstellt wird!

Tests über die GUI erstellen

Postman ermöglicht das Erstellen von Tests durch das Schreiben von Skripten (im Fall von Postman ist dies JavaScript). Dieser Ansatz hat viele Vorteile — fast unbegrenzte Flexibilität, vorhandene Lösungen usw.

Die Realität sieht jedoch oft so aus (wir sind nicht so, das Leben ist so), dass der Tester keine Programmierkenntnisse hat, aber dem Team bereits jetzt helfen möchte. Für solche Fälle, gemäß dem no-code Ansatz, ermöglicht TestMace das Erstellen einfacher Tests über die grafische Benutzeroberfläche, ohne Skripte schreiben zu müssen. Hier ist zum Beispiel, wie der Prozess des Erstellens eines Tests aussieht, der Werte auf Gleichheit vergleicht:

Was macht TestMace besser als Postman?

Die Erstellung von Tests im grafischen Editor schließt jedoch die Möglichkeit nicht aus Tests im Code zu schreiben. Hier gelten die gleichen Bibliotheken wie im Skriptknoten, und chai für das Schreiben von Tests.

Es gibt oft Situationen, in denen eine bestimmte Anfrage oder sogar ein ganzes Skript in verschiedenen Teilen eines Projekts mehrfach ausgeführt werden muss. Ein Beispiel für solche Anfragen könnte eine benutzerdefinierte mehrstufige Authentifizierung, das Einstellen der Umgebung in den gewünschten Zustand usw. sein. Kurz gesagt, in Programmiersprachen ausgedrückt, wünscht man sich Funktionen, die in verschiedenen Teilen der Anwendung wiederverwendet werden können. In TestMace wird diese Funktion durch link Knoten bereitgestellt. Die Verwendung ist ganz einfach:
1) Erstellen Sie eine Anfrage oder ein Skript
2) Erstellen Sie einen Link-Knoten
3) Geben Sie in den Parametern den Link zum Skript an, das Sie im ersten Schritt erstellt haben.

In einer fortgeschritteneren Variante können Sie angeben, welche dynamischen Variablen aus dem Skript in die höhere Ebene relativ zum Link übergeben werden sollen. Klingt kompliziert? Angenommen, wir haben einen Ordner mit dem Namen create-post, in dem eine dynamische Variable postIddiesem Knoten zugewiesen wird. Jetzt können Sie im Link-Knoten create-post-link deutlich angeben, dass die Variable postId dem Vorgänger zugewiesen wird. create-post-link. Diese Mechanik (um es in der Sprache der Programmierer auszudrücken) kann verwendet werden, um Ergebnisse aus einer "Funktion" zurückzugeben. Im Großen und Ganzen ist das großartig, DRY in vollem Umfang und wieder einmal ist keine einzige Zeile Code betroffen.

Was macht TestMace besser als Postman?

Was Postman betrifft, so steht die Feature-Anfrage zur Wiederverwendbarkeit von Anfragen seit 2015 aus, und es gibt anscheinend sogar einige Hinweise, dass an diesem Problem gearbeitet wird. In der aktuellen Version hat Postman natürlich die Möglichkeit, den Ausführungsfluss zu ändern, was theoretisch möglicherweise ein entsprechendes Verhalten ermöglicht, aber das ist eher ein schmutziger Hack als ein wirklich funktionierender Ansatz.

Andere Unterschiede

  • Größere Kontrolle über den Sichtbarkeitsbereich von Variablen. Der kleinste Scope, in dem man eine Variable in Postman definieren kann, ist die Collection. TestMace ermöglicht es, Variablen für jede Anfrage oder jeden Ordner zu definieren. In Postman erlaubt das Teilen von Collections nur den Export von Collections, während das Teilen in TestMace für jeden Knoten funktioniert.
  • TestMace unterstützt vererbbare Header, die standardmäßig in untergeordnete Anfragen eingefügt werden können. In Postman gibt es dazu eine Aufgabe, die sogar abgeschlossen ist, aber als Lösung wird vorgeschlagen… Skripte zu verwenden.. Bei TestMace wird alles über die Benutzeroberfläche konfiguriert, und es besteht die Möglichkeit, die geerbten Header in bestimmten Nachfolgern optional abzuschalten.
  • Rückgängig/Wiederherstellen. Funktioniert nicht nur beim Bearbeiten von Knoten, sondern auch beim Verschieben, Löschen, Umbenennen und anderen Operationen, die die Projektstruktur ändern.
  • Dateien, die an Anfragen angehängt sind, werden Teil des Projekts und zusammen mit diesem gespeichert, wobei sie perfekt synchronisiert werden, im Gegensatz zu Postman. (Ja, kein manuelles Auswählen von Dateien bei jedem Start und kein Übertragen an Kollegen in Archiven mehr.)

Funktionen, die bereits in den Startlöchern stehen.

Wir konnten der Versuchung nicht widerstehen, einen Blick auf die kommenden Releases zu werfen, insbesondere da die Funktionalität sehr ansprechend ist und sich bereits in der Vorab-Feinabstimmung befindet. Also, here we go.

Funktionen

Wie bekannt, werden zur Generierung von Werten in Postman sogenannte dynamische Variablen verwendet. Ihre Liste ist beeindruckend. Die überwiegende Mehrheit der Funktionen dient der Generierung von gefälschten Werten. Zum Beispiel, um eine zufällige E-Mail zu generieren, muss man schreiben:

{{$randomEmail}}

Allerdings können diese Variablen (auch wenn sie dynamisch sind) nicht als Funktionen verwendet werden: Sie sind nicht parameterisierbar, daher kann kein Hash von der Zeichenkette erstellt werden.

Bei TestMace planen wir, "ehrliche" Funktionen hinzuzufügen. Direkt innerhalb von ${} wird es möglich sein, nicht nur auf eine Variable zuzugreifen, sondern auch eine Funktion aufzurufen. Das bedeutet, wenn wir eine berüchtigte Fake-E-Mail generieren müssen, schreiben wir einfach

${faker.internet.email()}

Neben der Tatsache, dass es sich um eine Funktion handelt, ist auch zu beachten, dass es die Möglichkeit gibt, eine Objektmethode aufzurufen. Anstelle einer großen flachen Liste dynamischer Variablen haben wir nun eine Sammlung logisch gruppierter Objekte.

Und was ist, wenn wir einen Hash von einer Zeichenkette berechnen möchten? Ganz einfach!

${crypto.MD5($dynamicVar.data)}

Es ist zu bemerken, dass sogar Variablen als Parameter übergeben werden können! An dieser Stelle könnte ein neugieriger Leser Verdacht schöpfen...

Verwendung von JavaScript in Ausdrücken

... und das zu Recht! Als die Anforderungen an die Funktionen formuliert wurden, kamen wir plötzlich zu dem Schluss, dass wir in den Ausdrücken gültiges JavaScript erlauben sollten. Daher sind Sie jetzt frei, Ausdrücke im Stil von:

${1 + '' + crypto.MD5('asdf')}

Und das alles ohne Skripte direkt in den Eingabefeldern!

Was Postman betrifft, so können hier nur Variablen verwendet werden, und wenn man versucht, einen etwas komplexeren Ausdruck zu schreiben, beschwert sich der Validator und verweigert dessen Berechnung.

Was macht TestMace besser als Postman?

Erweitertes Autocomplete

Im Moment verfügt TestMace über ein standardmäßiges Autocomplete, das wie folgt aussieht:

Was macht TestMace besser als Postman?

Neben der autovervollständigten Zeile wird angegeben, zu welchem Element diese Zeile gehört. Dieses System funktioniert nur in Ausdrücken, die in Klammern ${} eingeschlossen sind.

Wie man sehen kann, wurden visuelle Markierungen hinzugefügt, die den Typ der Variablen anzeigen (zum Beispiel Zeichenfolge, Zahl, Array usw.). Außerdem kann man die Modi des Auto-Vervollständigens ändern (zum Beispiel kann man Variablen oder Header für die Autovervollständigung auswählen). Aber das ist nicht das Wichtigste!

Erstens, die Autovervollständigung funktioniert sogar in Ausdrücken (wo es möglich ist). So sieht es aus:

Was macht TestMace besser als Postman?

Und zweitens, jetzt ist die Autovervollständigung auch in Skripten verfügbar. Schauen Sie sich an, wie das funktioniert!

Was macht TestMace besser als Postman?

Es macht keinen Sinn, diese Funktion mit Postman zu vergleichen – dort beschränkt sich die Autovervollständigung nur auf statische Listen von Variablen, Headern und deren Werten (korrigieren Sie mich, wenn ich etwas vergessen habe). Skripte werden nicht autovervollständigt 🙁

Fazit

Im Oktober feierten wir ein Jahr seit Beginn der Entwicklung unseres Produkts. In dieser Zeit haben wir viel erreicht und haben in einigen Punkten zu unseren Mitbewerbern aufgeholt. Dennoch bleibt unser Ziel, ein wirklich benutzerfreundliches Tool für die Arbeit mit APIs zu schaffen. Es liegt noch viel Arbeit vor uns, hier ist ein grober Entwicklungsplan für unser Projekt im kommenden Jahr: https://testmace.com/roadmap.

Ihr Feedback ermöglicht es uns, uns besser im Überfluss an Funktionen zurechtzufinden, und Ihre Unterstützung gibt uns Kraft und Vertrauen in das, was wir tun. Heute ist ein wichtiger Tag für unser Projekt – der Veröffentlichung von TestMace auf ProductHunt. Bitte unterstützen Sie unser Projekt, das bedeutet uns sehr viel. Zumal es auf unserer PH-Seite heute ein verlockendes Angebot gibt, das limitiert ist.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster