Holen Sie sich den automatisierten Postman-Schnittstellentest in einem Artikel (die vollständigste Version im gesamten Netzwerk)

0 Vorwort

Dieser Artikel eignet sich für Leser, die die grundlegende Verwendung beherrschen Postman, also ein gewisses Verständnis für schnittstellenbezogene Konzepte haben und in der Lage sind, Postmangrundlegende Vorgänge wie simulierte Anforderungen zu verwenden.

Arbeitsumgebung und Version:

  • Windows 7 (64-Bit)
  • Postbote (Chrome App v5.5.3)

PS: Verschiedene Versionen der Seiten-Benutzeroberfläche und die Position einiger Funktionen unterscheiden sich geringfügig, die Auswirkungen sind jedoch nicht erheblich.

Lassen Sie uns zunächst darüber nachdenken: Wenn wir den Effekt eines automatisierten Schnittstellentests erzielen möchten, was müssen wir dann noch bei der grundlegenden Simulationsanforderung tun?

Ich fasse es grob in 3 Fragen zusammen ( weitere ergänzende Vorschläge können gerne im Kommentarbereich hinterlassen werden ):

1. Wie kann beurteilt werden, ob die Schnittstellenanforderung erfolgreich ist?
2. Wie führt man Batch- und regelmäßige Schnittstellentests durch?
3. Wie gehe ich mit abhängigen Schnittstellenproblemen um (z. B. muss für die Schnittstelle zum Aufgeben einer Bestellung zuerst eine Anmeldung erforderlich sein)?

Daher ist das Folgende hauptsächlich in drei Teile unterteilt, in denen vorgestellt wird, wie diese drei Probleme gelöst werden können.

Hier finden Sie Tutorial-Materialien für 200G-Softwaretests, darunter Anwendungsfallvorlagen, Planvorlagen, Berichtsvorlagen, Leistungsoptimierung, Automatisierungs-Tutorials, Testvorlagen, Lebenslaufvorlagen, Interviewfähigkeiten, echte Testfragen aus Dachang usw.! Klicken Sie unten, um es selbst zu erhalten:

1 Beurteilung des Schnittstellenergebnisses

Da es sich um einen automatisierten Test handelt, benötigen wir zunächst unbedingt Tools Postmanoder Codes, die uns helfen, direkt zu beurteilen, ob die Ergebnisse den Erwartungen entsprechen. In Bezug auf Schnittstellentests gibt es dann im Allgemeinen zwei Ideen:

1. Stellen Sie fest, ob die von der Anfrage zurückgegebenen Informationen codeden Erwartungen entsprechen

2. Bestimmen Sie, ob der von der Anfrage zurückgegebene Inhalt den erwarteten Inhalt (Schlüsselwörter) enthält.

Sehen wir uns als Nächstes an, wie Sie Postmandie oben genannten Probleme lösen können:

1.1 Funktionsbereich

Die relevanten Funktionen in Postmansind sehr auffällig. TestsDie Verwendung von Funktionen erfordert eine bestimmte Programmiersprachengrundlage, und die derzeit unterstützte Skriptsprache ist JavaScript. Der bessere Punkt ist jedoch, dass wir den Kontext und die Betriebsumgebung nicht berücksichtigen müssen, das heißt, wir müssen hier nur den Codeblock der Ergebnislogikbeurteilung vervollständigen.

Außerdem stellt es uns im Menüband auf der rechten Seite des Panels Postmaneinige häufig verwendete Codevorlagen zur Verfügung , sodass es kein großes Problem darstellt, wenn Sie nicht viel darüber wissen. Das Schreiben von Code wird im Folgenden ausführlich vorgestellt.TestsSNIPPETSJavaScript

1.2 Skriptbezogen

Schauen Sie sich zunächst den Codeteil der obigen Abbildung an. Wir finden drei Variablen responseCodeund (können direkt verwendet werden):responseBodytests

  • responseCode: Enthält die von der Anfrage zurückgegebenen Statusinformationen (z. B. Code).
  • responseBody: Der von der Schnittstellenanforderung zurückgegebene Dateninhalt (der Typ ist eine Zeichenfolge).
  • tests: In Form eines Schlüssel-Wert-Paares wird es verwendet, um anzuzeigen, ob unser Testergebnis erfolgreich ist oder nicht, und wird schließlich in angezeigt Test Results.
  • Schlüssel: (z. B. Code 200) Wir können ihn als Beschreibung des Ergebnisses verwenden.
  • Wert: Sein Wert ist ein boolescher Wert, tureder angibt, dass der Test bestanden wurde, falseund angibt, dass der Test fehlgeschlagen ist.

Daher sollte der obige Code nicht schwer zu verstehen sein. Mit den zurückgegebenen Ergebnisdaten und der Möglichkeit, anzuzeigen, ob das Ergebnis erfolgreich ist oder nicht, ist unser Problem der „Beurteilung des Schnittstellenergebnisses“ grundsätzlich gelöst.

Es gibt auch einige, die häufiger verwendet werden:

  • responseTime: Wie lange hat die Anfrage gedauert?
  • postman: Sie können mehr tun, z
    • Rufen Sie die Header-Informationen der zurückgegebenen Daten ab:
      „postman.getResponseHeader("")`
    • Globale Variablen festlegen:
      `postman.setGlobalVariable("variable_key", "variable_value");`

Weitere Funktionen können in der offiziellen Dokumentation eingesehen werden.

Wenn Sie ein Testarbeiter sind, habe ich eine interne Beförderungsgruppe für die Testeröffnung berühmter Unternehmen und großer Fabriken im Jahr 2022 eingerichtet. Letztes Jahr wurde intern mehr als 200 Studenten empfohlen, die große Fabrik zu betreten, und das höchste Jahresgehalt hat 70 W+ erreicht. Klicken Sie unten, um den internen Beförderungskanal aufzurufen:

1.3 Code-Vorlagen

PostmanDie für uns im SNIPPETSFunktionsbereich bereitgestellten Codevorlagen können die meisten Situationen bereits lösen. Wählen wir zunächst einige aus, die sich auf die Ergebnisbeurteilung beziehen, um sie zu erläutern:

Statuscode: Code ist 200

//根据返回的 Code 判断请求情况 
tests["Status code is 200"] = responseCode.code === 200;  

Antworttext: Enthält eine Zeichenfolge

//判断返回的内容中是否存在“关键字”。(tests 的 key 可修改,将不再强调)  
tests["Body matches string"] = responseBody.has("这里可以改为你要判断的关键字内容");    
//如上文提到的:
//判断结果中是否存在 access_token 关键字
tests["has access_token"] = responseBody.has("access_token");

Antworttext: ist gleich einer Zeichenfolge

//判断返回内容是否跟预期完全相等。
tests["Body is correct"] = responseBody === "这里可以改为你的预期内容";

Antworttext: JSON-Wertprüfung

//上文提到,responseBody 为字符串类型,支持转为 Json 格式
var jsonData = JSON.parse(responseBody);
tests["Your test name"] = jsonData.value === 100;

Die Reaktionszeit beträgt weniger als 200 ms

//判断请求时长是否小于200ms ,具体时长按情况自定义
tests["Response time is less than 200ms"] = responseTime < 200;

Die oben beschriebenen Grundlagen reichen aus, um den Test einer einzelnen Schnittstelle abzuschließen. Wir wissen jedoch, dass diese bedeutungslos sind, wenn keine Batch- und geplanten Aufgaben vorhanden sind. Fahren Sie also fort ...

2 Sammlungs-(Chargen-)Tests

Wenn Sie Batch-Tests und Schnittstellenverwaltung durchführen möchten, müssen wir alle zu testenden Schnittstellen in derselben Sammlung speichern (Collections), was Sie sich so vorstellen können, als würden Sie sie im selben Ordner speichern. Schauen Sie sich zunächst Postmandie Arbeitsschritte an:

Durch die obigen Schritte erhalten wir eine Reihe von zu testenden Schnittstellen. Um die Situation zu vereinfachen, wird die Erfolgsbedingung jeder Schnittstelle auf meiner Seite danach beurteilt, codeob sie 200 ist:

tests["Status code is 200"] = responseCode.code === 200;

2.1 Stapelausführung

Nachdem das oben Gesagte fertig ist, können wir mit der stapelweisen Ausführung der Schnittstelle zum Testen beginnen:

Nach dem Klicken auf Runwird eine neue Seite geöffnet:

  • Environment: Es wird verwendet, um die Umgebung zu wechseln, in der die Schnittstelle ausgeführt wird. Es interessiert mich hier nicht und ich werde später darüber sprechen.
  • Iteration: Wird verwendet, um die Gesamtanzahl der Ausführungen der Schnittstelle festzulegen.
  • Delay: Legen Sie das Zeitintervall zwischen den einzelnen Ausführungen der Schnittstelle in Millisekunden fest.
  • Data File: Laden Sie die Testdatendatei hoch (separat unten)

2.2 Parameterdaten ändern

Wir haben bereits herausgefunden, wie man mehrere Schnittstellen wiederholt ausführen kann, aber jetzt gibt es ein Problem: Gemäß dem aktuellen Schritt sind die Parameter der Schnittstelle bei jeder Ausführung gleich, sodass es selbst dann nicht viel Sinn macht, wenn wir sie 100 Mal oder 1000 Mal ausführen.

Werfen wir einen Blick auf die Schnittstelle einer von uns geschriebenen Anmeldefunktion:

Verwenden Sie Variablen

Jetzt sind die Parameter für das Anmeldekonto und das Kennwort fest codiert. Unabhängig davon, wie oft wir es ausführen, verwenden wir dieses Konto zum Testen. Was also, wenn Sie testen möchten, ob bei der Verwendung anderer Werte für den Kontokennwortparameter eine Anomalie vorliegt? (Wenn Sie es jedes Mal manuell ändern möchten, können Sie diesen Teil überspringen/manuell lustig) Hier sprechen wir kurz über die PostmanVerwendung von „Variablen“ in , wie in der folgenden Abbildung gezeigt:

Die Syntax zum Referenzieren einer Variablen: { {Variablenname}}, wie Sie in der Abbildung sehen können, legen wir die Parameterwerte der Konto- und Passwortfelder als Variablen fest: { {username}} 、{ {password}}. (Send)Es ist natürlich nicht möglich, nach der Änderung direkt auf „Ausführen“ zu klicken , da diese beiden Variablen noch nicht zugewiesen wurden, aber wir können Pre-request ScriptZuweisungsvorgänge im Bedienfeld ausführen:

Skript vorab anfordern

Pre-request ScriptÄhnlich wie Tests, außer dass Pre-request ScriptSkripts in ausgeführt werden, bevor die Anforderung ausgeführt wird, während TestsSkripts in ausgeführt werden, nachdem die Anforderung abgeschlossen ist. Daher können wir Pre-request Scriptdas Skript verwenden, um den beiden oben genannten Variablen im Funktionsbereich Werte zuzuweisen, wie zum Beispiel:

//设置全局变量
postman.setGlobalVariable("username", "test1");
postman.setGlobalVariable("password", "123456");

Die Verwendung Pre-request Scriptder Zuweisungsoperation kann unser Problem jedoch immer noch nicht lösen, da gemäß dieser Schreibmethode unabhängig davon, wie oft sie ausgeführt wird, immer noch feste (hartcodierte) Daten zum Testen verwendet werden. Da es sich um eine Skriptsprache handelt, wird die Verwendung natürlich flexibler sein, daher werde ich hier nicht darauf eingehen.

Testdatensatz

Als nächstes werden wir darüber sprechen, Data Filedass diese Option vor dem Ausführen der Sammlung zum Hochladen von Testdaten (Dateien) verwendet wird, um sie den entsprechenden Variablen zuzuweisen. Nehmen wir CSVals Beispiel die Testdaten im Format:

    username,password
    test1,123456
    test2,222222
    test3,123456
    test4,444444

Das Datenformat ähnelt einer Tabelle. Die erste Zeile stellt den entsprechenden Variablennamen dar, und die folgenden 4 Zeilen stellen 4 Sätze von Kontokennwortdaten dar (zwei davon sind korrekte Daten). Nachdem wir eine Datei mit dem Inhalt der obigen Beispieldaten und dem Suffixnamen gespeichert haben, beginnen wir erneut mit dem Testen, um den Effekt zu sehen. Wir wählen die Anzahl der Durchläufe auf 4 (entsprechend 4 Sätzen von Testdaten) und nachdem wir die entsprechende Datei zur Ausführung ausgewählt haben, können wir sehen, dass unsere Ergebnisse tatsächlich unseren Erwartungen .csventsprechen CSV. Das Ergebnis der Ausführung der Schnittstelle Requestsind zwei Erfolge und zwei Fehler, d. h. jedem Lauf werden die Testdaten verschiedener Kontokennwörter zugewiesen (in der neuesten Desktop-Client-Version können Sie den spezifischen Anforderungsstatus jeder Anforderung sehen, daher werde ich hier nicht auf Details eingehen).

Bei Verwendung Jsoneiner Datei lautet das Format wie folgt:

    [
      {
        "username": "test1",
        "password": "123456"
      },
      {
        "username": "test2",
        "password": "222222"
      },
      {
        "username": "test3",
        "password": "123456"
      },
      {
        "username": "test4",
        "password": "444444"
      }
    ]

2.3 Regelmäßige Aufgaben

PostmanBietet eine Monitors(Überwachungs-)Funktion, mit der wir eine Testaufgabe senden und gemäß dem eingestellten Timer ausführen können, z. B. einmal pro Stunde testen. Die spezifischen Vorgänge sind wie folgt:

3 Probleme mit der Anforderungsabhängigkeit

Nachdem wir über die Ergebnisbeurteilung der Schnittstelle und den Batch-Sammeltest gesprochen haben, schauen wir uns die kompliziertere Situation an, nämlich das Problem der abhängigen Anforderung. Beispielsweise erfordert unsere Einkaufsbestellungsschnittstelle eine Anmeldung, bevor darauf zugegriffen werden kann. Die meisten Abhängigkeitsprobleme sind jedoch tatsächlich ein Problem der Datenübertragung zwischen Schnittstellen. Beispielsweise wird nach dem Aufruf der Anmeldeschnittstelle eine Kennung zurückgegeben. Wenn dies der Fall ist, müssen wir bei der Anforderung der Bestellschnittstelle nur den Parameter zusammen mit der Anforderung tokenmitführen token. Das Problem wird also:

  • Garantierte Schnittstellenaufrufsequenz
  • Übergeben Sie die von Schnittstelle A zurückgegebenen Daten an die nachfolgenden Schnittstellen B, C und D

3.1 Schnittstellenausführungssequenz

Lassen Sie mich zunächst erklären, dass die als nächstes genannten Schnittstellen standardmäßig zur selben Sammlung gehören (Collections).

Nehmen Sie dennoch die oben erstellte Schnittstellensammlung als Beispiel. Wenn Sie auf die Ergebnisse unserer Stapeltests achten, werden Sie feststellen, dass die Ausführungsreihenfolge der Schnittstellen tatsächlich mit der Reihenfolge im Verzeichnis hier übereinstimmt (von oben nach unten), nämlich: Request1 -> Request2 -> Request3.

Der Schnittstellenname hier ist möglicherweise etwas irreführend, daher möchte ich ihn noch einmal betonen: In der Reihenfolge von oben nach unten im Verzeichnis ausführen (nicht im Zusammenhang mit der Wörterbuchsortierung).

Mit dieser Standardausführungsreihenfolge können wir also die Schnittstelle, die ausgeführt werden muss, zuerst platzieren, beispielsweise die „Anmeldeschnittstelle“ an die erste Stelle setzen.

3.1.2 Benutzerdefinierte Ausführungsreihenfolge

Wenn es natürlich nur eine Standardausführungssequenz gibt, kann diese normalerweise unsere komplexen Geschäftsanforderungen nicht erfüllen und Postmanstellt uns daher eine Funktion zur Verfügung: postman.setNextRequest("填写你要跳转的接口名"), die uns dabei unterstützt, zur angegebenen Schnittstelle zu springen, um die Ausführung fortzusetzen, zum Beispiel:

Nachdem wir die Schnittstelle erfolgreich ausgeführt haben Request1, müssen wir sie nicht erneut ausführen Request2, sondern direkt dorthin springen Request3. Anschließend kann ich den Sprungcode im Funktionsbereich Request1der Schnittstelle ausführen, z. B.:Tests

Hier sind einige Punkte zu beachten:

1. postman.setNextRequest()Es wird nur wirksam, wenn ein Sammlungstest ausgeführt wird. Wenn wir also nur (Send)die Schnittstelle ausführen Request1, funktioniert die Funktion nicht.

2. Nachdem wir den Sammlungstest erfolgreich ausgeführt haben Request1 -> Request3, Request3werden die nachfolgenden Schnittstellen weiterhin in der Standardreihenfolge ausgeführt, wenn danach eine Schnittstelle vorhanden ist, d. h. die Schnittstelle in der Abbildung Request4wird weiterhin ausgeführt.

3. Die angegebene Sprungschnittstelle muss zum selben Satz gehören.

4. setNextRequest()Unabhängig davon, wo die Funktion Testsim Skript aufgerufen wird, wird sie erst am Ende des aktuellen Skripts tatsächlich ausgeführt. Wenn wir beispielsweise die zweite Zeile mit der ersten Zeile in der Abbildung intermodulieren, wird die zweite Codezeile nach dem Ausführen der Sprungfunktion weiterhin ausgeführt.

Mit der Funktion können wir also setNextRequest()je nach Bedingung unnötige Schnittstellen überspringen oder einen eigenen Logiktest erstellen.

3.2 Datenübertragung

Bevor wir über die Datenübertragung sprechen, sprechen wir über Postmandie Verwendung globaler Variablen und den Umgebungswechsel in .

3.2.1 Globale Variablen

Das Konzept globaler Variablen wurde oben Pre-request Scripttatsächlich kurz erwähnt . Das heißt, wir können globale Variablen über den Skriptcode festlegen und den Effekt sehen, nachdem wir das obige Skript ausgeführt haben:

Wir können sehen, dass nach dem Ausführen die beiden Variablen von usernameund erfolgreich gespeichert wurden. Anschließend können wir sie passwordüber die Syntax von Variablenreferenzen wie: in jeder Schnittstelle { {username}}verwenden .

Darüber hinaus Postmanunterstützt es nicht nur das Festlegen globaler Variablen im Code, sondern auch visuelle Operationen:

Nach Eingabe der entsprechenden Schnittstelle können Sie Folgendes direkt verwalten:

3.2.2 Unterscheidung und Wechsel zwischen mehreren Umgebungen

Normalerweise sind unsere Schnittstellen in Testversionen und Online-Versionen (oder mehr) unterteilt, und ihre Unterschiede können nur ULRunterschiedlich sein, sodass globale Variablen nicht zur Lösung dieses Problems geeignet sind.

Erstellung von Parametern

Möglicherweise ist Ihnen aufgefallen, dass ich in der Abbildung oben mehrere Parameter-„Sammlungen“ für verschiedene Umgebungen erstellt habe. Schauen wir uns das noch einmal an:

Ich habe in jeder Umgebung einen Parameter erstellt hostwie:

Natürlich können unsere Umgebungsparameter auch über Skripte festgelegt werden. Die Funktion lautet:

//注意,该参数只添加到你当前选择的环境的“参数集”中
postman.setEnvironmentVariable("variable_key", "variable_value");

Benutzen und wechseln

Die Verwendung von Parametern in der Umgebung „Parametersatz“ stimmt mit den globalen Variablen überein, wie in der Abbildung gezeigt { {host}}. Der Wechsel zwischen verschiedenen Umgebungen ist in der folgenden Abbildung dargestellt:

3.3 Abhängigkeitsprobleme lösen

Nachdem wir die oben genannten Vorkenntnisse beherrschen, beginnen wir damit, zu sehen, wie wir damit Postmanden Schnittstellentest mit Abhängigkeiten lösen können.

hypothetisches Szenario

Unsere Schnittstelle Request1ist die Anmeldeschnittstelle, und bei einer erfolgreichen Anmeldung wird ein access_tokenFeld als Kennung zurückgegeben (implementiert). Nehmen Sie dann an, dass es sich bei der Schnittstelle Request3um eine Schnittstelle zum Aufgeben einer Bestellung handelt, die mit dem Login zurückgegeben werden muss, access_tokenum normal darauf zugreifen zu können.

Gedankengang

1. Garantierte Ausführung vor Request12. Fügen Sie den von zurückgegebenen Wert zur Umgebungsvariablen „Parametersatz“ hinzu. 3. Geben Sie bei der Anfrage den Wert anRequest3
Request1access_token
Request3access_token

Speichern Sie den Rückgabewert in der „globalen Variablen“ oder „Umgebungsvariablen“. Abhängig von der spezifischen Geschäftssituation bezieht sich der access_token Wert in diesem Beispiel auf die Umgebung. Daher verwenden wir hier die zum Speichern festgelegte Umgebungsvariable.

Operationen im Postman

1. Der Code in 2. wurde in unserem Katalog garantiert Request1zuerst ausgeführt :
Request1Tests

if(responseCode.code === 200 && responseBody.has("access_token")){
    //如果 code 为 200, 并且返回的数据中存在 access_token 关键字,则认为登录成功
    tests["login"] = true;

    //将返回的内容转为 json 格式,并且取到 access_token 内容,添加到环境变量中
    var jsonData = JSON.parse(responseBody);
    //access_token的取值方式视具体的 json 数据结构而定
    postman.setEnvironmentVariable("token",jsonData.result.access_token);  

    //跳转到 Request3 接口
    postman.setNextRequest("Request3")

}else{
    tests["login"] = false;

    //登录失败,可以选择跳转到对应失败后的处理接口进行测试
    //postman.setNextRequest("Other Request")
}

3. Request3Verwenden Sie Variablen in der Schnittstelle token:

> 我这边是将 `token` 放在头部信息中, 具体使用方式时接口参数规则而定。

Führen Sie es aus und sehen Sie sich das Ergebnis an

Wenn wir die Sammlungstests durchführen, können wir sehen, dass unsere Ergebnisse unseren Erwartungen entsprechen Request1und Request3die Tests bestanden, Request2übersprungen und Request4trotzdem ausgeführt wurden. Erledigt…

Acho que você gosta

Origin blog.csdn.net/a448335587/article/details/131773243
Recomendado
Clasificación