Amarengo

Articles and news

Humble Bits

API-Tests mit Postman, Newman und Jenkins

API-Tests sind Softwaretests, bei denen ein Ingenieur nicht nur die Funktionalität, sondern auch die Leistung, Zuverlässigkeit und Sicherheit einer Anwendung testet. APIs werden getestet, um zu prüfen, ob die Anwendung so funktioniert, wie es erwartet wird, da APIs den Kern der Funktionalitäten einer Anwendung bilden.

API-Tests während der Entwicklung können Probleme mit API, Server, anderen Diensten, Netzwerk und mehr aufdecken, die nach der Bereitstellung möglicherweise nicht einfach erkannt oder gelöst werden können.

Das Testen von APIs ist jedoch schwierig. Anstatt nur die Antwort eines Endpunkts zu überprüfen, können Integrationstests mit Postman durchgeführt werden, um die Antworten zu untersuchen und zu validieren. Teams möchten heutzutage möglicherweise auch die Ausführung dieser Tests automatisieren, sobald eine Bereitstellung abgeschlossen ist. Ein Ansatz, den wir verfolgen können, besteht darin, unsere Integrationstests jedes Mal ausführen zu lassen, wenn ein Entwickler Code in das Repo eincheckt.

Das Hinzufügen dieser Ebene der Qualitätsprüfung kann sicherstellen, dass die vorhandenen Funktionalitäten weiterhin so funktionieren, wie sie erwartet wurden, mit einem zusätzlichen Vorteil für die Entwickler, um zu überprüfen, ob ihr Code genau das tut, was er sollte.

Tools zur API-Testautomatisierung in CI

CI steht für Continuous Integration. Integration von Testskripten und eines Testtools in das Continuous Build-System, bei dem die Testskripte bei jeder neuen Bereitstellung oder regelmäßig (täglich, wöchentlich oder vierzehntägig) ausgeführt werden können)

  1. Postbote: Integrationstests mit Postman.
  2. Newman: Erstellen Sie eine PowerShell-Datei, die diese Integrationstests über die Befehlszeile ausführt.
  3. Jenkins: Fügen Sie einen Post-Build-Schritt in Jenkins hinzu, um das PowerShell-Skript auszuführen, wenn ein Build initiiert wird.

API-Auswahl

Ich habe dieses Verfahren in unserem Projekt mithilfe der GPS-APIs implementiert, aber um hier zu instanziieren, nehmen wir die folgenden APIs auf:

Open Weather Map: Kostenlose öffentliche APIs.

Ich habe dies gewählt, da es sich um eine kostenlose Sammlung von APIs handelt, die jeder abonnieren und mit denen er seine eigenen API-Schlüssel verwenden kann.

Integrationstests erstellen

Nehmen wir für den ersten Test eine einfache GET-Anforderung auf, um Wetter nach ID abzurufen. Stellen Sie zur Interaktion über die APIs sicher, dass Sie den API-Schlüssel verwenden, den Sie beim Abonnieren der OWM-Dienste erhalten haben.

Schritte zum ersten Integrationstest

Erstellen Sie eine Umgebung auf Postman, z. B. ‚Wetterkarte‘, und definieren Sie die darin enthaltenen Umgebungsvariablen. .

Fügen Sie die Voraussetzungen auf der Registerkarte Pre-Req hinzu, um den Test einzurichten.

 var cityIds = ;// Erhalte eine Zufallszahl zwischen 0-9var randomCityId = Math.boden((Math.random() * 9) + 1);// Setzen Sie eine Umgebungsvariable auf den Wert von therandom city id von arraypostman.setEnvironmentVariable("CITYID", cityIds)

Fügen Sie nun auf der Registerkarte Test das Testskript wie folgt hinzu:

 var jsonData = JSON.parse(ResponseBody); //Speichern theresponse "name" Wert in eine Umgebung variablepostman.setEnvironmentVariable("CITYNAME",jsonData.name );pm.test("Statuscode ist 200", Funktion () {pm.response.to.have.status(200); });

Das obige Testskript ruft die Antwort ab und unser Skript umschließt die Antwort in eine Variable namens ‚jsonData‘. Nun wird der Wert der Eigenschaft name in einer Umgebungsvariablen gespeichert.

Somit wird der erste Test erstellt, der fehlschlägt, wenn der HTTP-Statuscode etwas anderes als 200 ist.

Sammlungen

Wie die obigen API-Tests kann man mehrere Testskripte für mehrere Endpunkte haben. Und diese mehreren Testskripte können nacheinander ausgeführt werden, um eine End-to-End-Testsuite zu erhalten. Die Möglichkeit, eine Testsuite zu haben, besteht darin, mehrere Testskripte in einem Platzhalter zu speichern, der in Postman als Sammlung bezeichnet wird.

Diese Sammlungen können dann weiter über den Sammlungsläufer im Werkzeug ausgeführt werden.

Collection Runner

Ein Collection Runner kann verwendet werden, um eine Sammlung von API-Endpunkten mit ihren Testskripten an einem Ort zu haben und sie daher nacheinander nacheinander auszuführen. Der Benutzer muss die Sammlung nur einmal mit allen erforderlichen Testdaten, Testskripten und für beliebig viele Iterationen ausführen. Das Ergebnis des Sammlungslaufs ist ein Testbericht, der umfassend genug ist, um die Leistung der APIs zu überwachen und die fehlgeschlagenen Testskripte erneut auszuführen.

Für ausführliche Studie über Sammlung Läufer, siehe Link.

Obwohl die Benutzeroberfläche von Postman’s Collection Runner gut genug ist, müssen wir unsere Sammlungen über die Befehlszeile ausführen, um das System in Jenkins zu integrieren. Eine Möglichkeit, Sammlungen über die Befehlszeile auszuführen, ist Newman.

Newman

Newman ist ein NPM-Paket (Node Package Manager), mit dem wir Sammlungen direkt über die Befehlszeile ausführen und testen können.

Voraussetzungen:

  • NodeJS und
  • NPM bereits installiert.

Befehle, die unter Windows Powershell ausgeführt werden sollen

  • node -v
  • npm -v
  • $npm install -g newman

Sobald die erforderlichen Installationen abgeschlossen sind, müssen seine Sammlungen und seine Umgebung in JSON-Dateien im lokalen System exportiert werden. Diese Dateien können dann als Argumente an Newman übergeben werden.

Schritte zum Abrufen der Umgebung und der Sammlungen auf dem lokalen System:

  • Klicken Sie in Postman auf die Schaltfläche Herunterladen und exportieren.
  • Laden Sie die Sammlung herunter
  • Laden Sie die Umgebung herunter
  • Öffnen Sie die Eingabeaufforderung und erhöhen Sie Ihre Berechtigungen. Dies ist wichtig, damit Sie das Skript ausführen können. Führen Sie den folgenden Befehl aus:
 Set-ExecutionPolicy -Scope CurrentUserExecution-Richtlinie: Uneingeschränktbestätigen Sie diese Änderung: Y

Öffnen Sie nun eine andere Eingabeaufforderung und führen Sie den folgenden Befehl aus:

 newman run -e 

Hinzufügen von Postman-Tests zu Jenkins

Wir müssen zuerst unsere Postman-Dateien (Umgebung und Sammlungen) exportieren und sie zusammen mit unserem Powershell-Skript zu GIT hinzufügen, um die Tests über Jenkins build auszuführen.

„Fügen Sie die Postman-Dateien zum Stammverzeichnis des Projekts hinzu.“

Jenkins anweisen, Newman auszuführen

Dazu schreiben wir ein Skript, das Newman aufruft und ihm die Umgebungs- und Sammlungs-JSON-Dateien übergibt.

# in:powershell.exe -executionpolicy bypass -command "&'%WORKSPACE%\Jenkins_PostmanDemo.ps1'"echo "Im Powershell-Skript"$SourceFilePath = $env:WORKSPACE$FilenamePostfix = "*.in: postman_collection.json"$EnvironmentFile = "Demo-OpenWeatherMap.in: postman_environment.json"# Holen Sie sich alle Postman-Testdateien$ JsonFiles = Get-ChildItem -Path $SourceFilePath -name -Filter $FilenamePostfix |Sort-Object -Property CreationTime -Descending# Wechseln Sie in das Verzeichnis, in dem NodeJS installiert ist. Andernfalls wird der Befehl 'newman' nicht erkannt.# Sie können NPM und Newman als Benutzer installieren und das Verzeichnis ~ Roaming\npm in das Laufwerk C: \ kopieren.#cd C:\Users\\AppData\Roaming\npm\node_modules\newman\bincd C:\npm\node_modules\newman\bin # Durchlaufen Sie die JSON-Dateien und führen Sie newman aus, um den Postman testsforeach ($File in $JsonFiles) {$collectionfilepath = "$SourceFilePath\$File"$environmentfilepath = "$SourceFilePath\$EnvironmentFile"node newman run $collectionfilepath -e $environmentfilepath --disable-unicode}exit $LASTEXITCODE

– ‚ beenden Sie $LASTEXITCODE‘: Wenn Sie diesen Befehl eingeben, sehen Sie das Ergebnis des letzten Befehls. Wir tun dies, um sicherzustellen, dass der Newman-Befehl in jeder Schleife erfolgreich ist. Wenn einer der Tests fehlschlägt, müssen wir das Skript stoppen und 1 beenden. Dies führt zu einem fehlgeschlagenen Build auf Jenkins.

Skript zu Jenkins hinzufügen

Schritte:

  • Melden Sie sich bei Jenkins an und erstellen Sie ein Freestyle-Projekt.
  • Konfigurieren Sie zunächst dieses Projekt, um Ihren Repo-Code aus Git abzurufen.
  • Gehen Sie auf der Registerkarte Allgemein zum Abschnitt Erstellen und fügen Sie den folgenden Befehl hinzu:
 in:powershell.exe -executionpolicy bypass -Befehl "& '%WORKSPACE%\Jenkins_PostmanDemo.ps1'

** Sie können den Abschnitt E-Mail-Benachrichtigung konfigurieren, um auch eine E-Mail-Benachrichtigung bei Buildfehlern zu konfigurieren.

Ausführen des Builds und Überwachen der Ergebnisse

Versuchen Sie, das Projekt auszuführen, und überprüfen Sie die Ergebnisse.

Man kann den erfolgreichen Einstieg in das Powershell-Skript mit der Anweisung ‚Inside Powershell script‘ in der Jenkins-Ausgabe erkennen.

Fazit

Die Verbesserung der kontinuierlichen Integration mit Postman, Newman und Jenkins fügt unserem Entwicklungslebenszyklus eine weitere Ebene der Qualitätssicherung hinzu. Dies ist zwar ein großer Schritt in der Automatisierung, aber wir müssen betonen, dass unsere Testabdeckung von der Qualität unserer Testskripte abhängt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.