
Hallo zusammen, hier ist ! Vielleicht wissen viele von uns aus . Für diejenigen, die neu sind: Wir entwickeln eine IDE zur Arbeit mit der API von TestMace. Die am häufigsten gestellte Frage beim Vergleich von TestMace mit Wettbewerbsprodukten lautet: „Was unterscheidet euch von Postman?“. Wir haben beschlossen, dass es an der Zeit ist, eine ausführliche Antwort auf diese Frage zu geben. Nachfolgend haben wir unsere Vorteile gegenüber .
Knotenaufteilung
Wenn Sie mit Postman arbeiten, wissen Sie, dass die Anforderungsoberfläche alle erforderlichen Funktionen enthält. Hier gibt es Skripte, Tests und die Anfragen selbst. Das erleichtert die Arbeit für Neueinsteiger, ist jedoch bei großen Szenarien nicht flexibel. Was ist, wenn man mehrere Anfragen erstellen und diese aggregieren möchte? Was ist, wenn man ein Skript ohne Anfrage oder mehrere logisch getrennte Skripte hintereinander ausführen möchte? Letztendlich wäre es gut, Tests von normalen Hilfsskripten zu trennen. Darüber hinaus ist der Ansatz „alle Funktionen in einem Knoten hinzufügen“ nicht skalierbar — die Benutzeroberfläche wird schnell überladen.
TestMace unterteilt die gesamte Funktionalität von Anfang an in verschiedene Knotentypen. Möchtest du eine Anfrage machen? Hier ist dein Knoten. Möchtest du ein Skript schreiben? Hier ist dein Knoten. benötigst du Tests? Bitte — Knoten. Ach ja, du kannst das Ganze auch in einen Knoten packen. Und all das lässt sich einfach miteinander kombinieren. Dieser Ansatz ist nicht nur sehr flexibel, sondern ermöglicht es auch, gemäß dem Prinzip der Einzelverantwortung nur das zu verwenden, was du in diesem Moment wirklich brauchst. Warum brauche ich Skripte und Tests, wenn ich einfach nur eine Anfrage stellen möchte?
Menschlich lesbares Projektformat
Zwischen TestMace und Postman gibt es einen konzeptionellen Unterschied in der Art der Speicherung. In Postman werden alle Anfragen irgendwo im lokalen Speicher gespeichert. Wenn es notwendig ist, Anfragen zwischen mehreren Benutzern zu teilen, muss die eingebaute Synchronisation verwendet werden. Tatsächlich ist dies ein gängiger Ansatz, der nicht ohne Nachteile ist. Wie steht es um die Datensicherheit? Schließlich kann die Politik mancher Unternehmen die Speicherung von Daten bei Dritten nicht zulassen. Wir sind jedoch der Meinung, dass TestMace etwas Besseres bieten kann! Und der Name dieser Verbesserung ist "menschlich lesbares Projektformat".
Lassen Sie uns zunächst klären, dass es in TestMace im Grunde genommen eine Entität "Projekt" gibt. Die Anwendung wurde ursprünglich mit dem Ziel entwickelt, Projekte in Versionskontrollsystemen zu speichern: Der Projektbaum wird nahezu eins zu eins auf die Dateistruktur projiziert, das Speicherformat verwendet yaml (ohne überflüssige Klammern und Kommas), und die dateibezogene Darstellung jedes Knotens ist in der Dokumentation detailliert beschrieben, einschließlich Kommentaren. In den meisten Fällen werden Sie jedoch nicht nachsehen müssen – alle Feldnamen sind logisch benannt.
Was bringt das dem Benutzer? Es ermöglicht eine sehr flexible Anpassung des Workflows des Teams, unter Verwendung gewohnter Ansätze. Beispielsweise können Entwickler das Projekt im selben Repository wie das Backend speichern. In den Branches kann der Entwickler neben Änderungen an der Codebasis auch bestehende Anfrage-Szenarien und Tests korrigieren. Nach dem Festschreiben der Änderungen im Repository (git, svn, mercurial – was Ihnen auch immer lieber ist) startet CI (Ihr Lieblings-Tool, das niemand Ihnen aufgezwungen hat) unser Konsolendienstprogramm , und der nach der Ausführung generierte Bericht (zum Beispiel im junit-Format, das ebenfalls von testmace-cli unterstützt wird) wird an das entsprechende System gesendet. Das oben genannte Sicherheitsproblem ist somit auch kein Thema mehr.
Wie Sie sehen, zwingt TestMace nicht seine eigene Ecosystem oder Paradigm auf. Stattdessen fügt es sich leicht in bereits etablierte Prozesse ein.
Dynamische Variablen
TestMace folgt dem Konzept des No-Code: Wenn ein Problem ohne Code gelöst werden kann, versuchen wir, diese Möglichkeit zu bieten. Die Arbeit mit Variablen ist genau die Funktionalität, bei der in den meisten Fällen kein Programmieren erforderlich ist.
Beispiel: Wir haben eine Antwort vom Server erhalten und möchten einen Teil der Antwort in einer Variablen speichern. In Postman würden wir in einem Testskript (was an sich schon seltsam ist) etwas in der Art schreiben:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);Aber unserer Meinung nach sieht das Schreiben eines Skripts für ein so einfaches und häufig verwendetes Szenario überflüssig aus. Daher bietet TestMace die Möglichkeit, einem Variablen einen Teil der Antwort über die grafische Benutzeroberfläche zuzuweisen. Sehen Sie, wie einfach das ist:

Und jetzt wird diese dynamische Variable bei jeder Anfrage aktualisiert. Aber Sie könnten einwenden, dass der Ansatz von Postman flexibler ist und nicht nur eine Zuweisung ermöglicht, sondern auch eine gewisse Vorverarbeitung durchführen kann. So könnte man das vorherige Beispiel modifizieren:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));Nun, dafür gibt es in TestMace einen Knoten, der dieses Szenario abdeckt. Um den vorherigen Fall zu reproduzieren, müssen Sie direkt nach der Anfrage einen Script-Knoten erstellen und als Skript den folgenden Code verwenden:
const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));Wie Sie sehen, hat die Kombination von Knoten hier ebenfalls gute Dienste geleistet. Und für einen so einfachen Fall, wie oben beschrieben, können Sie sogar einfach den Ausdruck ${crypto.MD5($response.data)} einer über die grafische Benutzeroberfläche erstellten Variablen zuweisen!
Tests über GUI erstellen
Postman ermöglicht das Erstellen von Tests durch das Schreiben von Skripten (im Fall von Postman ist das JavaScript). Dieser Ansatz hat zahlreiche Vorteile – fast unbegrenzte Flexibilität, vorhandene Lösungen usw.
Die Realität sieht jedoch oft so aus (nicht wir sind so, das Leben ist so), dass der Tester keine Programmierkenntnisse hat, aber das Team bereits jetzt einen Mehrwert bieten möchte. Für solche Fälle erlaubt TestMace, einfache Tests über die grafische Benutzeroberfläche zu erstellen, ohne Skripte schreiben zu müssen. Hier ist beispielsweise, wie der Prozess aussieht, um einen Test zu erstellen, der Werte auf Gleichheit vergleicht:

Das Erstellen von Tests im grafischen Editor schließt jedoch nicht die Möglichkeit aus . Hier gelten dieselben Bibliotheken wie im Script-Knoten, und zum Schreiben von Tests.
Die Möglichkeit, ein bereits vorhandenes Szenario über einen Link (Link-Knoten) auszuführen
Entsteht häufig die Situation, dass eine bestimmte Anfrage oder sogar ein ganzes Szenario mehrmals an verschiedenen Stellen im Projekt ausgeführt werden muss. Beispiele für solche Anfragen können eine benutzerdefinierte mehrstufige Authentifizierung, das Anpassen der Umgebung an den gewünschten Zustand usw. sein. Kurz gesagt, wenn man es in den Begriffen der Programmiersprachen ausdrückt, möchte man Funktionen haben, die an verschiedenen Stellen der Anwendung wiederverwendet werden können. In TestMace übernehmen diese Funktion Knoten. Es ist sehr einfach zu verwenden:
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 im ersten Schritt erstellt wurde
In einer erweiterten Variante können Sie angeben, welche dynamischen Variablen aus dem Skript auf die höhere Ebene in Bezug auf den Link weitergegeben werden sollen. Klingt verwirrend? Angenommen, wir haben einen Ordner mit dem Namen create-post, in dem diesem Knoten eine dynamische Variable zugewiesen wird. postId. Jetzt können Sie im Link-Knoten create-post-link explizit angeben, dass die Variable postId dem übergeordneten Element zugewiesen wird. create-post-linkDieser Mechanismus (um es wieder in der Sprache von Programmierern zu sagen) kann verwendet werden, um das Ergebnis aus einer „Funktion“ zurückzugeben. Insgesamt großartig, DRY in vollem Umfang und wieder wird kein einziger Codezeile beschädigt.

Was Postman betrifft, so steht der Feature Request zur Wiederverwendung von Anfragen , und es scheint sogar , dass an diesem Problem gearbeitet wird. In der aktuellen Version ermöglicht Postman zwar den Wechsel des Ausführungsflusses, was theoretisch wahrscheinlich ein ähnliches Verhalten ermöglichen würde, aber es ist eher ein schmutziger Hack als ein wirklich funktionierender Ansatz.
Weitere Unterschiede
- Größere Kontrolle über den Geltungsbereich von Variablen. Der kleinste Scope, innerhalb dessen Sie eine Variable in Postman definieren können, ist die Sammlung. TestMace ermöglicht es Ihnen, Variablen für jede Anfrage oder jeden Ordner festzulegen. In Postman erlaubt das Teilen der Sammlung nur das Exportieren von Sammlungen, während das Teilen in TestMace für jeden Knoten funktioniert.
- TestMace unterstützt , die standardmäßig in untergeordnete Anfragen übernommen werden können. In Postman gibt es dazu , und es wurde sogar geschlossen, aber als Lösung wird angeboten... . In TestMace wird alles über die GUI konfiguriert, und es gibt die Möglichkeit, vererbte Headers für bestimmte Nachfahren optional zu deaktivieren.
- 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 werden zusammen mit ihm gespeichert, während sie problemlos synchronisiert werden, im Gegensatz zu Postman. (Ja, Sie müssen nicht mehr jedes Mal manuell Dateien bei jedem Start auswählen und sie Ihren Kollegen in Archiven übergeben.)
Features, die bereits in Aussicht sind
Wir konnten der Versuchung nicht widerstehen, einen Blick hinter den Vorhang der kommenden Releases zu werfen, zumal die Funktionalität äußerst verlockend ist und bereits die Vorab-Feinarbeit durchläuft. Also, treffen wir sie.
Funktionen
Wie bekannt ist, werden zur Generierung von Werten in Postman sogenannte dynamische Variablen verwendet. und die überwältigende Mehrheit der Funktionen dient zur Generierung von Fake-Werten. Um eine zufällige E-Mail zu generieren, muss man Folgendes schreiben:
{{$randomEmail}}Da es sich jedoch um Variablen handelt (auch wenn sie dynamisch sind), können sie nicht wie Funktionen verwendet werden: Sie sind nicht parametrisiert, daher kann man keinen Hash von einer Zeichenkette nehmen.
In TestMace planen wir, "ehrliche" Funktionen hinzuzufügen. Direkt innerhalb von ${} kann man nicht nur auf eine Variable zugreifen, sondern auch eine Funktion aufrufen. Das heißt, wenn wir die berüchtigte Fake-E-Mail generieren müssen, schreiben wir einfach
${faker.internet.email()}Abgesehen davon, dass dies eine Funktion ist, kann man erkennen, dass es möglich ist, Methoden von Objekten aufzurufen. Anstelle einer großen flachen Liste dynamischer Variablen haben wir ein Set logisch gruppierter Objekte.
Was ist, wenn wir den Hash einer Zeichenkette berechnen möchten? Kein Problem!
${crypto.MD5($dynamicVar.data)}Man kann erkennen, dass auch Variablen als Parameter übergeben werden können! An dieser Stelle kann der neugierige Leser Verdacht schöpfen...
Die 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 man in Ausdrücken gültiges JavaScript schreiben sollte. Daher sind Sie nun frei, Ausdrücke in der Art zu schreiben:
${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 rudimentären Ausdruck zu schreiben, beschwert sich der Validator und weigerte sich, ihn zu berechnen.
![]()
Fortgeschrittene Autovervollständigung
Aktuell hat TestMace eine Standard-Autovervollständigung, die folgendermaßen aussieht:

Hier wird neben der autovervollständigten Zeichenkette angegeben, zu was diese Zeichenkette gehört. Dieser Mechanismus funktioniert nur in Ausdrücken, die in Klammern ${} eingerahmt sind.
Wie man sehen kann, wurden visuelle Marker hinzugefügt, die auf den Typ der Variablen hinweisen (zum Beispiel: Zeichenfolge, Zahl, Array usw.). Auch die Autovervollständigungsmodi können geändert werden (zum Beispiel kann die Autovervollständigung mit Variablen oder Überschriften ausgewählt werden). Aber das ist noch nicht das Wichtigste!
Erstens funktioniert die Autovervollständigung sogar in Ausdrücken (wo es möglich ist). So sieht das aus:

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

Es macht keinen Sinn, diese Funktionalität mit Postman zu vergleichen – dort beschränkt sich die Autovervollständigung nur auf statische Listen von Variablen, Überschriften und deren Werten (korrigieren Sie mich, wenn ich etwas vergessen habe). Skripte werden nicht autovervollständigt 🙁
Fazit
Im Oktober jährt sich die Entwicklung unseres Produkts zum ersten Mal. In dieser Zeit haben wir viel erreicht und in einigen Aspekten unsere Konkurrenz eingeholt. Aber wie dem auch sei, unser Ziel ist es, ein wirklich benutzerfreundliches Werkzeug für die Arbeit mit APIs zu schaffen. Vor uns liegt noch viel Arbeit, hier ist der grobe Entwicklungsplan für unser Projekt für das kommende Jahr: .
Ihr Feedback wird uns helfen, im Überfluss an Funktionen besser zu navigieren, und Ihre Unterstützung gibt uns Kraft und Vertrauen, dass wir das Richtige tun. Heute ist ein wichtiger Tag für unser Projekt – der Veröffentlichungstag von TestMace auf . Bitte unterstützen Sie unser Projekt, das ist für uns sehr wichtig. Umso mehr, als dass es heute auf unserer PH-Seite ein verlockendes Angebot gibt, das zeitlich begrenzt ist.
Quelle: habr.com
