Übersetzung von Shashi Kumar Raja
Angenommen, Sie möchten API-Automatisierung durchführen, aber jedes Mal, wenn Sie das beste API-Automatisierungstool in die Google-Suchleiste eingeben, werden so viele Links zu den Top-10-Tools angezeigt, dass Sie verwirrt sind und entscheiden, dass Sie dies morgen definitiv tun werden

Beginnen wir damit, zu verstehen, was wir brauchen, um (hoffentlich morgen) eine API-Automatisierungsplattform einzurichten. Halten Sie diesen Gedanken für eine Sekunde ... Ich sagte, hören Sie auf zu denken ... Ich weiß, dass Ihr Chef keinen Cent für bezahlte Werkzeuge festlegt . Schau, ich habe deine Gedanken gelesen, denk nicht laut nach

Bezahlte Werkzeuge sollten aufgehängt, nicht ausgeführt werden :)
1. Wo zum Teufel soll ich anfangen, Tests zu schreiben?
Sie benötigen etwas, das Ihnen Regeln und Richtlinien für das Schreiben von Tests bietet und Ihnen dies ermöglicht, indem Sie Zugriff auf verschiedene Tools und Techniken erhalten. Ich höre eine Glocke läuten, nein !!! Nun, ich weiß, was eine Glocke machen wird.
Haben Sie jemals von TESTNG , JUNIT , MOCHA , PYTEST , ROBOT gehört ? Ja, das sind alles Testautomatisierungsumgebungen.
Sie müssen die richtige Testumgebung finden, die Ihren Anforderungen entspricht: Welchen vorhandenen Technologie-Stack verwendet Ihr Unternehmen? Welche Automatisierung möchten Sie durchführen? Welche Sprache passt besser zu Ihnen usw. In den gängigsten Sprachen finden Sie eine Automatisierungsumgebung, mit der Sie Unit- , Funktions- und andere Arten von API-Tests schreiben können.
Weitere Informationen zur Testumgebung finden Sie in Teil 2 der Serie, in dem ich Mocha und Pytest ausführlich vorgestellt habe .
2. Wie mache ich API-Aufrufe in einer Testumgebung?
Die meisten dieser Plattformen unterstützen API-Aufrufe, einschließlich der HTTP-Anforderungsbibliothek , da die REST-APIs das HTTP-Protokoll für die Kommunikation verwenden.
Einige Frameworks wie Mokka bieten Ihnen die Freiheit, die HTTP-Anforderungsbibliothek Ihrer Wahl zu verwenden, z. B. Superagent .
<code class = "lang-JS"> Anfrage
.post ('/ api / pet')
.send ({name: 'Manny', species: 'cat'}) // sendet einen JSON-Post-Body
.set ('X-API-Key', 'foobar')
.set ('accept', 'json')
.end ((err, res) => {
// Durch Aufrufen der Endfunktion wird die Anforderung gesendet
});
</ code>
Sie bieten einfache Unterstützung für GET, PUT, POST, DELETE und alle anderen Methoden. Sie können Header, Cache und Anforderungsparameter übergeben, Sie haben es aufgerufen - Sie haben es
3. Cool, aber einige meiner APIs geben JSON und andere XML als Antwort. Wie kann ich damit umgehen?
Mit den meisten dieser HTTP-Anforderungsbibliotheken können Sie Daten in den Formaten JSON, XML, CSV, Text, Bild, Formulardaten und codierte Daten mit mehreren unterstützten Autorisierungsstandards senden und empfangen.
Sie können auch den HTTP-Antwortstatuscode verarbeiten und prüfen, ob wir den erforderlichen Antwortstatuscode erhalten haben oder nicht.
- Informationsantwortcodes (1xx)
100 - Weiter
101 - Vermittlungsprotokolle
102 - Verarbeitung
- Erfolgsantwortcodes (2xx)
200 - OK 206 - Teilinhalt
201 - Erstellt 207 - Multi-Status
202 - Akzeptiert 208 - Bereits gemeldet
203 - Nicht autorisierende Informationen 226 - IM verwendet
204 - Kein Inhalt 250 - Geringer Speicherplatz
205 - Inhalt zurücksetzen
- Umleitungsantwortcodes (3xx)
300 - Mehrfachauswahl 304 - Nicht geändert
301 - Permanent verschoben 305 - Proxy verwenden
302 - Gefunden 307 - Temporäre Weiterleitung
303 - Siehe andere 308 - Permanente Weiterleitung
- Client-Fehlerantwortcodes (4xx)
400 - Mehrfachauswahl 410 - Nicht geändert
401 - Permanent verschoben 411 - Proxy verwenden
402 - Gefunden 412 - Temporäre Weiterleitung
403 - Siehe andere 413 - Permanente Weiterleitung
404 - Mehrfachauswahl 414 - Nicht geändert
405 - Permanent verschoben 415 - Proxy verwenden
406 - Gefunden 416 - Temporäre Weiterleitung
407 - Siehe andere 417 - Permanente Weiterleitung
408 - Gefunden 418 - Temporäre Weiterleitung
409 - Siehe Andere
- Serverfehler-Antwortcodes (5xx)
500 - Interner Serverfehler 508 - Schleife erkannt
501 - Nicht implementiert 509 - Bandbreite begrenzt
502 - Bad Gateway 510 - Nicht erweitert
503 - Dienst nicht verfügbar 511 - Netzwerkauthentifizierung erforderlich
504 - Gateway Timeout 550 - Berechtigung verweigert
505 - HTTP-Ver nicht unterstützt 551 - Option nicht unterstützt
506 - Variante verhandelt auch 598 - Nework Read Timeout Error
507 - Unzureichender Speicher 599 - Timeout-Fehler bei Netzwerkverbindung
4. Gut, aber wie verarbeite ich die Testdaten?
Hängt davon ab, woher Sie die Testdaten beziehen. Mit diesen Test-Frameworks können Sie alle Funktionen der Sprache verwenden, in der sie basieren.
a. Datenbank: Sie können problemlos Datenbankverbindungen zum Lesen von Daten erstellen.
b. Externe Datei: Sie können externen Text, JSON, CSV oder andere Dateien lesen.
c. Zufällige Daten: Sie können Bibliotheken wie faker verwenden , um zufällige Testdaten im laufenden Betrieb zu generieren.
<code> var faker = require ('faker');
var randomName = faker.name.findName (); // Rowan Nikolaus
var randomEmail = faker.internet.email (); // Kassandra.Haley@erich.biz
var randomCard = faker.helpers.createCard (); // zufällige Kontaktkarte mit vielen Eigenschaften
</ code>
d. Daten aus der API-Antwort: Während des Tests müssen Sie häufig die Antwort einer API als Anforderungsdaten an eine andere übergeben. Sie können dies mit Hooks tun. Sie erhalten Funktionen wie Vorher, Vorher, Nachher, Nachher , die, wie der Name schon sagt, vor / nach einem oder allen Tests ausgeführt werden. Rufen Sie API1 vor API2 auf und übergeben Sie die Antwort an API2. Genau richtig !!! ️
5. Die Verarbeitung von Testdaten und das Ausführen von API-Aufrufen scheint einfach zu sein. Wie kann ich jedoch die API-Antworten überprüfen?
Um die Antworten zu überprüfen, benötigen Sie eine Bibliothek namens Assertion Library . Viele Testumgebungen werden mit Assertion-Bibliotheken gebündelt, sodass Sie Assert-s in einfachem Englisch schreiben können, z. B. in Syntax. Mit ihnen können Sie auch das JSON-Schema Ihrer Antwort überprüfen.
In Mokka können Sie eine beliebige Assertionsbibliothek verwenden, z. B. Chai .
<code> response.status.should.equal (200)
foo.should.be.a ('string');
foo.should.have.lengthOf (3);
tea.should.have.property ('Aromen')
.mit.Länge von (3);
</ code>
6. Erstaunlich !!! Nach all diesen Tests war noch eine Kleinigkeit übrig, um meinem Chef irgendwie zu zeigen, was ich getan habe und wo ich Probleme gefunden habe?
Die meisten dieser Frameworks bieten Ihnen einen grundlegenden HTML- Testlaufbericht, den Sie herunterladen und freigeben können. Wenn Sie schönere Berichte mit Grafiken und Diagrammen benötigen, können Sie verschiedene Open-Source-Berichterstellungstools wie Allure oder Mochawesome verwenden .

7. Nur wenn ich eine Vorlage mit diesen Dingen bekommen könnte, um jetzt die API-Automatisierung zu starten
Was habe ich dir gesagt, du hast es genannt, du hast
Dies ist die Vorlage, die ich erstellt habe, um die API mithilfe von Mokka in node.js zu automatisieren.
Es beinhaltet-
- Test-Framework (Mokka),
- HTTP-Anforderungsbibliothek (Supertest),
- Assertionsbibliothek (Chai),
- Reporter (Allure),
- Logger (Winston),
- Zufallsdatengenerator (Fälscher),
- Eslint Unterstützung und
- freche String-Validierung integriert . Alles was Sie tun müssen, ist es zu klonen / herunterzuladen und Sie können loslegen.
Wenn Sie eine Vorlage in einer anderen Sprache benötigen, kann ich sie für morgen vorbereiten.
Wenn Ihnen dieser Artikel gefallen hat, können Sie in die Hände klatschen , ich werde wahrscheinlich mehr schreiben