Erste Schritte mit der Automatisierungs-API: Teil 1 - Übersicht

Ü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

Source: https://habr.com/ru/post/de433726/


All Articles