
Hallo an alle, in Kontakt mit TestMace ! Vielleicht kennen uns viele aus unseren vorherigen Artikeln . Für diejenigen, die gerade eine Verbindung hergestellt haben: Wir entwickeln eine IDE für die TestMace-API. Die am häufigsten gestellte Frage beim Vergleich von TestMace mit Konkurrenzprodukten lautet: "Wie unterscheiden Sie sich von Postman?" Wir beschlossen, dass es Zeit war, eine detaillierte Antwort auf diese Frage zu geben. Nachfolgend haben wir unsere Vorteile gegenüber Postman aufgeführt .
Unterteilung
Wenn Sie mit Postman arbeiten, wissen Sie, dass die Anforderungsschnittstelle alle erforderlichen Funktionen enthält. Es gibt Skripte, Tests und tatsächlich die Anforderungen selbst. Dies vereinfacht die Arbeit für Anfänger, aber für große Szenarien ist dieser Ansatz nicht flexibel. Was ist, wenn Sie mehrere Abfragen erstellen und zusammenfassen möchten? Was ist, wenn Sie ein Skript ohne Anforderung oder mehrere logisch getrennte Skripte hintereinander ausführen möchten? Am Ende wäre es schön, die Tests von gewöhnlichen Gebrauchsskripten zu trennen. Darüber hinaus ist der Ansatz „Alle Funktionen zu einem Knoten hinzufügen“ nicht skalierbar - die Schnittstelle wird schnell überlastet.
TestMace unterteilt die gesamte Funktionalität zunächst in verschiedene Knotentypen. Möchten Sie eine Anfrage stellen? Hier ist ein Anforderungsschrittknoten . Möchten Sie ein Skript schreiben? Hier ist ein Skriptknoten für Sie. Benötigen Sie Tests? Bitte - Assertionsknoten . Oh ja, Sie können das Ganze immer noch in einen Ordnerknoten packen. Und das alles ist leicht miteinander zu kombinieren. Dieser Ansatz ist nicht nur sehr flexibel, sondern ermöglicht es Ihnen auch, gemäß dem Grundsatz der Eindeutigkeit der Verantwortung nur das zu verwenden, was Sie im Moment wirklich benötigen. Warum benötige ich Skripte und Tests, wenn ich nur eine Anfrage stellen möchte?
Es gibt einen konzeptionellen Unterschied in der Art und Weise, wie TestMace und Postman gespeichert werden. In Postman werden alle Anforderungen irgendwo im lokalen Speicher gespeichert. Wenn mehrere Benutzer Anforderungen gemeinsam nutzen müssen, müssen Sie die integrierte Synchronisierung verwenden. In der Tat ist dies ein allgemein akzeptierter Ansatz, nicht ohne Mängel. Wie wäre es mit Datensicherheit? In der Tat kann die Politik einiger Unternehmen die Speicherung von Daten von Dritten nicht zulassen. Wir glauben jedoch, dass TestMace etwas Besseres zu bieten hat! Und der Name dieser Verbesserung ist "menschenlesbares Projektformat".
Zunächst hat TestMace im Grunde eine Projektentität. Und die Anwendung wurde ursprünglich mit Blick auf das Speichern von Projekten in Versionskontrollsystemen entwickelt: Der Projektbaum wird fast eins zu eins auf die Dateistruktur projiziert, yaml wird als Speicherformat verwendet (ohne zusätzliche Klammern und Kommas), und die Dateidarstellung jedes Knotens wird in der Dokumentation mit Kommentaren ausführlich beschrieben . In den meisten Fällen werden Sie dort jedoch nicht nachsehen - alle Feldnamen haben logische Namen.
Was gibt dies dem Benutzer? Auf diese Weise können Sie das Workflow-Team mit den üblichen Methoden sehr flexibel ändern. Beispielsweise können Entwickler ein Projekt im selben Repository wie das Backend speichern. In Verzweigungen kann der Entwickler nicht nur die Codebasis direkt ändern, sondern auch vorhandene Abfrageskripte und -tests reparieren. Nach dem Festschreiben von Änderungen am Repository (git, svn, mercurial - was Ihnen am besten gefällt) startet CI (Ihr Favorit, niemandem auferlegt) unser Konsolendienstprogramm testmace-cli , und der Bericht wird nach der Ausführung empfangen (z. B. im junit-Format, das auch in unterstützt wird) testmace-cli) wird an das entsprechende System gesendet. Und das oben erwähnte Sicherheitsproblem ist kein Problem mehr.
Wie Sie sehen, setzt TestMace sein Ökosystem und sein Paradigma nicht durch. Stattdessen lässt es sich leicht in bereits etablierte Prozesse integrieren.
Dynamische Variablen
TestMace folgt dem No-Code-Konzept: Wenn das Problem ohne Code gelöst werden kann, versuchen wir, diese Gelegenheit zu geben. Das Arbeiten mit Variablen ist genau diese Funktionalität, bei der in den meisten Fällen auf die Programmierung verzichtet werden kann.
Beispiel: Wir haben eine Antwort vom Server erhalten und möchten einen Teil der Antwort in einer Variablen speichern. In Postman würden wir so etwas in ein Testskript schreiben (was an sich seltsam ist):
var jsonData = JSON.parse(responseBody); postman.setEnvironmentVariable("data", jsonData.data);
Unserer Meinung nach erscheint es jedoch überflüssig, ein Skript für ein so einfaches und häufig verwendetes Skript zu schreiben. Daher ist es in TestMace möglich, einer Variablen über eine grafische Oberfläche eine Antwort zuzuweisen. Schauen Sie sich an, wie einfach es ist:

Und jetzt wird diese dynamische Variable bei jeder Anforderung aktualisiert. Sie können jedoch argumentieren, dass der Postbotenansatz flexibler ist und es Ihnen ermöglicht, nicht nur einen Auftrag zu erteilen, sondern auch eine Vorverarbeitung durchzuführen. So ändern Sie das vorherige Beispiel:
var jsonData = JSON.parse(responseBody); postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));
Nun, dafür hat TestMace einen Skriptknoten, der dieses Skript abdeckt. Um den vorherigen, aber bereits in TestMace ausgeführten Fall zu reproduzieren, müssen Sie nach der Anforderung einen Skriptknoten erstellen und den folgenden Code als Skript verwenden:
const data = tm.currentNode.prev.response.body.data; tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));
Wie Sie sehen, hat die Zusammensetzung der Knoten auch hier gute Dienste geleistet. Und für einen so einfachen Fall wie oben beschrieben können Sie einfach den Ausdruck ${crypto.MD5($response.data)}
über die grafische Oberfläche erstellten Variablen zuweisen!
Erstellen von Tests über die GUI
Mit Postman können Sie Tests durch Schreiben von Skripten erstellen (im Fall von Postman ist dies JavaScript). Dieser Ansatz hat solide Vorteile - nahezu unbegrenzte Flexibilität, Verfügbarkeit vorgefertigter Lösungen usw.
Die Realitäten sind jedoch oft so (wir sind es nicht, das Leben ist so), dass der Tester keine Programmierkenntnisse besitzt, und ich möchte dem Team jetzt Vorteile bringen. In solchen Fällen können Sie mit TestMace nach dem No-Code-Konzept einfache Tests über eine grafische Oberfläche erstellen, ohne Skripte schreiben zu müssen. Hier sieht es beispielsweise so aus, als würde ein Test erstellt, der Werte auf Gleichheit vergleicht:

Das Erstellen von Tests in einem grafischen Editor schließt jedoch das Schreiben von Tests in Code nicht aus. Hier alle die gleichen Bibliotheken wie im Skriptknoten und Chai zum Schreiben von Tests.
Möglichkeit, ein vorhandenes Skript nach Referenz auszuführen (Link-Knoten)
Solche Situationen treten häufig auf, wenn eine bestimmte Anforderung oder sogar ein ganzes Skript mehrmals in verschiedenen Teilen eines Projekts ausgeführt werden muss. Ein Beispiel für solche Anforderungen ist die benutzerdefinierte mehrstufige Autorisierung, die die Umgebung in den gewünschten Zustand versetzt usw. Im Allgemeinen würde ich gerne Funktionen in Programmiersprachen verwenden, die in verschiedenen Teilen der Anwendung wiederverwendet werden können. In TestMace wird diese Funktion vom Verbindungsknoten ausgeführt . Die Benutzung ist sehr einfach:
1) Erstellen Sie eine Abfrage oder ein Skript
2) Erstellen Sie einen Knoten vom Typ Link
3) Geben Sie in den Parametern die Verknüpfung zu dem im ersten Schritt erstellten Skript an
In einer fortgeschritteneren Version können Sie angeben, welche dynamischen Variablen aus dem Skript relativ zum Link auf eine höhere Ebene verschoben werden sollen. Hört sich das verwirrend an? Angenommen, wir haben einen Ordner namens create-post erstellt , in dem diesem Knoten eine dynamische Variable postId
zugewiesen ist. In der Verknüpfung des Knotens create-post-link können Sie postId
explizit angeben, dass die Variable postId
dem postId
create-post-link postId
werden postId
. Dieser Mechanismus (wieder ausgedrückt in der Programmiersprache) kann verwendet werden, um das Ergebnis von der "Funktion" zurückzugeben. Im Allgemeinen war cool, DRY im vollen Wachstum und wieder keine einzige Codezeile geschädigt.

Was Postman betrifft, hängt die Feature-Anfrage zur Wiederverwendung von Anfragen seit 2015 , und es scheint einige Hinweise zu geben, dass sie an diesem Problem arbeiten. In seiner jetzigen Form hat Postman natürlich die Möglichkeit, den Ausführungsfluss zu ändern, wodurch Sie dieses Verhalten theoretisch wahrscheinlich implementieren können, aber dies ist eher ein schmutziger Hack als ein wirklich funktionierender Ansatz.
Andere Unterschiede
- Größere Kontrolle über den Umfang der Variablen. Der kleinste Bereich, in dem Sie eine Variable in Postman definieren können, ist die Sammlung. Mit TestMace können Sie Variablen für jede Abfrage oder jeden Ordner definieren. In Postman können Sie mit der Freigabe-Sammlung nur Sammlungen exportieren, während die Freigabe in TestMace für jeden Knoten funktioniert.
- TestMace unterstützt geerbte Header , die standardmäßig in untergeordnete Abfragen ersetzt werden können. In Postman gibt es diesbezüglich eine Aufgabe , die sogar abgeschlossen ist, aber als Lösung wird vorgeschlagen, ... Skripte zu verwenden . In TestMace wird dies alles über die GUI konfiguriert und es besteht die Möglichkeit, geerbte Header in bestimmten Nachkommen optional zu deaktivieren
- Rückgängig / Wiederherstellen. Dies funktioniert nicht nur beim Bearbeiten von Knoten, sondern auch beim Verschieben, Löschen, Umbenennen und anderen Vorgängen, die die Struktur des Projekts ändern
- An Anfragen angehängte Dateien werden Teil des Projekts und werden mit diesem gespeichert, während sie im Gegensatz zu Postman perfekt synchronisiert sind. (Ja, Sie müssen Dateien nicht mehr bei jedem Start manuell auswählen und an Kollegen im Archiv übertragen.)
Features, die auf dem Weg sind
Wir konnten der Versuchung nicht widerstehen, den Schleier der Geheimhaltung für die nächsten Veröffentlichungen zu öffnen, insbesondere wenn die Funktionalität sehr lecker ist und bereits vor der Veröffentlichung gemahlen wird. Also treffen wir uns.
Funktionen
Wie Sie wissen, verwendet Postman die sogenannten dynamischen Variablen, um Werte zu generieren. Die Liste von ihnen ist beeindruckend und die überwiegende Mehrheit der Funktionen dient dazu, falsche Werte zu generieren. Um beispielsweise eine zufällige E-Mail zu generieren, müssen Sie Folgendes schreiben:
{{$randomEmail}}
Da es sich jedoch um Variablen handelt (wenn auch dynamische), können sie nicht als Funktionen verwendet werden. Sie sind nicht parametrierbar. Daher funktioniert es nicht, einen Hash aus einem String zu nehmen.
Bei TestMace möchten wir ehrliche Funktionen hinzufügen. Direkt in $ {} können Sie nicht nur auf die Variable zugreifen, sondern auch die Funktion aufrufen. Das heißt Wenn Sie die berüchtigte gefälschte E-Mail generieren müssen, schreiben wir einfach
${faker.internet.email()}
Neben der Tatsache, dass dies eine Funktion ist, können Sie feststellen, dass die Möglichkeit besteht, eine Objektmethode aufzurufen. Und anstatt einer großen, flachen Liste dynamischer Variablen haben wir eine Reihe von logisch gruppierten Objekten.
Aber was ist, wenn wir den Hash aus dem String berechnen wollen? Einfach!
${crypto.MD5($dynamicVar.data)}
Möglicherweise stellen Sie fest, dass Sie sogar Variablen als Parameter übergeben können! An dieser Stelle kann ein neugieriger Leser den Verdacht haben, dass etwas nicht stimmt ...
JavaScript in Ausdrücken verwenden
... und nicht umsonst! Als die Anforderungen für die Funktionen gebildet wurden, kamen wir plötzlich zu dem Schluss, dass in den Ausdrücken gültiges Javascript geschrieben werden muss. Sie können nun also Ausdrücke im Geiste schreiben:
${1 + '' + crypto.MD5('asdf')}
Und das alles ohne Skripte direkt in den Eingabefeldern!
Was Postman betrifft, können nur Variablen verwendet werden, und wenn versucht wird, einen kleinen Ausdruck zu schreiben, schwört der Validator und weigert sich, ihn zu berechnen.

Erweiterte automatische Vervollständigung
Momentan verfügt TestMace über die standardmäßige automatische Vervollständigung, die folgendermaßen aussieht:

Hier wird neben der Zeile für die automatische Vervollständigung angegeben, zu welcher Zeile diese gehört. Dieser Mechanismus funktioniert nur in Ausdrücken in Klammern $ {}.
Wie Sie sehen, wurden visuelle Markierungen hinzugefügt, die den Typ der Variablen angeben (z. B. Zeichenfolge, Nummer, Array usw.). Sie können auch den Modus für die automatische Vervollständigung ändern (z. B. können Sie die automatische Vervollständigung mit Variablen oder Überschriften auswählen). Aber auch das ist nicht das Wichtigste!
Erstens funktioniert die automatische Vervollständigung auch in Ausdrücken (sofern möglich). So sieht es aus:

Zum anderen ist die automatische Vervollständigung jetzt auch in Skripten verfügbar. Schauen Sie sich an, wie es funktioniert!

Es macht keinen Sinn, diese Funktionalität mit Postman zu vergleichen - dort ist die automatische Vervollständigung nur auf statische Listen von Variablen, Überschriften und ihren Werten beschränkt (korrigieren Sie mich, wenn ich das vergessen habe). Skripte werden nicht automatisch vervollständigt :(
Fazit
Im Oktober ist ein Jahr vergangen, seit wir mit der Entwicklung unseres Produkts begonnen haben. In dieser Zeit ist es uns gelungen, viele Dinge zu tun und in gewisser Weise mit unseren Mitbewerbern mitzuhalten. Wie auch immer, unser Ziel ist es, ein wirklich praktisches Werkzeug für die Arbeit mit der API zu entwickeln. Wir haben noch viel zu tun. Hier ist ein ungefährer Entwicklungsplan für unser Projekt für das kommende Jahr: https://testmace.com/roadmap .
Ihr Feedback ermöglicht es uns, die Fülle an Funktionen besser zu nutzen, und Ihre Unterstützung gibt uns die Kraft und das Vertrauen, dass wir das Richtige tun. Zufällig ist heute ein wichtiger Tag für unser Projekt - der Tag der Veröffentlichung von TestMace auf ProductHunt . Bitte unterstützen Sie unser Projekt, es ist sehr wichtig für uns. Darüber hinaus ist unsere PH-Seite heute ein verlockendes Angebot, und es ist begrenzt