Was ist eine API?

Inhalt



Das Wort "API" flackert in offenen Stellen, auch für Anfänger-Tester. Entweder REST-API, dann SOAP-API, dann nur eine API. Was für ein Tier ist das? Lass es uns herausfinden!

"Warum brauche ich das?" Ich teste gerade das Web! Wenn ich jetzt in die Automatisierung gehe, dann ja ... Nun, sie testen es auch in Unternehmen, wie ich gehört habe ...

Und nein! Es ist gut für jeden Tester, etwas über die API zu wissen. Denn darauf interagieren Systeme miteinander. Und Sie sehen diese Interaktion jeden Tag, selbst auf den einfachsten und schäbigsten Websites.
Jede Zahlung erfolgt über die Zahlungssystem-API. Kinokarte gekauft? Ein T-Shirt in einem Online-Shop? Ein Buch? Sobald Sie auf "Bezahlen" klicken, verbindet Sie die Site mit dem Zahlungssystem.

Aber auch wenn Sie nicht in andere Systeme integriert sind, haben Sie immer noch eine API! Weil das System in sich selbst auch über API kommuniziert. Und während der Frontentwickler die grafische Benutzeroberfläche (grafische Oberfläche) stark durchforstet, können Sie:

  • sich beim Warten langweilen;
  • Überprüfen Sie die API-Arbeitslogik

Natürlich bin ich für die zweite Option! Lassen Sie uns also verstehen, was die API ist. Sie können das Video auf Youtube ansehen oder als Artikel weiterlesen.

Was ist eine API?


Bild

API (Application Programming Interface) ist ein Vertrag, den ein Programm bereitstellt. "Ich kann auf diese und jene Weise kontaktiert werden, ich verpflichte mich, dies und das zu tun."

Wenn es ins Russische übersetzt würde, wäre es das Wort „Vertrag“. Eine Vereinbarung zwischen zwei Parteien als Vereinbarung zum Kauf eines Autos:

  • Meine Aufgabe ist es, einen solchen Betrag zu verdienen
  • Der Verkäufer ist verpflichtet, das Auto zu geben.

Sie können ja übersetzen. Aber niemand tut das ¯ \ _ (ツ) _ / ¯

Jeder benutzt das Wort "Vertrag". Also akzeptiert. Darüber hinaus ist dieses Wort im Namen des Entwicklungsstils enthalten:

  • Code zuerst - zuerst schreiben wir den Code, dann generieren wir einen Vertrag darüber
  • Vertrag zuerst - zuerst erstellen wir einen Vertrag, dann schreiben oder generieren wir Code darauf (in diesem Artikel werde ich über diesen Stil sprechen)

Wir sagen nicht "ein Vertrag über den Verkauf eines Autos"? Die Entwickler sagen also nicht "Vertrag". Stillschweigende Vereinbarung.

API - Funktionsumfang


Wenn Sie ein Auto kaufen, erstellen Sie einen Vertrag, in dem Sie alle für Sie wichtigen Punkte vorschreiben. Ebenso sollten Verträge zwischen Programmen erstellt werden. Sie geben an, wie auf das eine oder andere Programm zugegriffen werden kann.

Dementsprechend beantwortet die API die Frage „Wie kann ich mein System kontaktieren?“ Und umfasst:

  • die Operation selbst, die wir durchführen können
  • Eingabedaten
  • Ausgabedaten (Dateninhalt oder Fehlermeldung).

Bild

Hier kannst du mir sagen:

- Hmm, warte. Die Operation, die Eingabedaten, die Ausgabedaten - irgendwie ähnelt das alles einer Funktionsbeschreibung!

Wenn Sie jemals auf Entwicklung gestoßen sind oder gerade eine Programmiersprache gelernt haben, wissen Sie wahrscheinlich, was eine Funktion ist. Tatsächlich haben wir Eingabedaten, es gibt Ausgabedaten und etwas Magie, die sich ineinander umwandelt.

Und ja! Sie werden Recht haben, dass die Definitionen ähnlich sind. Warum? Ja, da die API aus einer Reihe von Funktionen besteht. Dies kann eine Funktion sein oder viele.

Bild

Wie wird der Funktionsumfang kompiliert?


Ja, egal wie. Wie der Entwickler möchte, wird es gruppiert. Sie können die API beispielsweise nach Funktionen gruppieren. Also:

  • Separate API für den Zugang zum System, wo Registrierung und Autorisierung erfolgen;
  • separate API für die Berichterstellung - Bericht 1, Bericht 2, Bericht 3 ... Bericht N. Für verschiedene Berichte haben wir unterschiedliche Formeln = unterschiedliche Funktionen. Und wir alle sammeln sie in einem Satz, API für die Berichterstattung.
  • Separate Zahlungssystem-API - Es gibt eine Funktion für die Arbeit mit jeder Bank.
  • ...

Bild

Sie können überhaupt nicht gruppieren, sondern eine gemeinsame API erstellen.

Eine gemeinsame API kann erstellt werden, und der Rest kann auf Bestellung erstellt werden. Wenn Sie ein Produkt in einer Box haben, enthält es normalerweise eine Reihe von Standardfunktionen. Und alle Wunschliste-Kunden werden separat erstellt.

Bild

Es stellt sich heraus, dass es in unserem System mehrere verschiedene APIs gibt, für die wir jeweils einen Vertrag geschrieben haben. In jedem Vertrag ist klar festgelegt, welche Vorgänge ausgeführt werden können und welche Funktionen vorhanden sein werden

Bild

Und natürlich können Funktionen wiederverwendet werden. Das heißt, dieselbe Funktion kann in verschiedenen Sätzen und in verschiedenen APIs enthalten sein. Niemand verbietet das.

Bild

Es stellt sich heraus, dass der Entwickler sich überlegt, welche Art von API er haben wird. Es führt entweder das Allgemeine aus oder verteilt es entsprechend der Funktionalität oder einigen seiner eigenen Kriterien und fügt jeder API die Funktionen hinzu, die es benötigt.

Was bedeutet das Wort "Schnittstelle"


- Warte eine Minute, Olya! Sie selbst haben oben geschrieben, dass die API eine Anwendungsprogrammierschnittstelle ist. Warum redest du dann über den Vertrag, obwohl es die Wortschnittstelle gibt?

Ja, denn bei der Programmierung ist ein Vertrag die Schnittstelle. In der klassischen Beschreibung von OOP (Object Oriented Programming) gibt es 3 Wale:

  1. Kapselung
  2. Vererbung
  3. Polymorphismus

Kapselung ist, wenn wir die Implementierung verstecken. Für den Benutzer ist alles einfach und klar. Ich habe auf den Button geklickt - ich habe einen Bericht bekommen. Und wie es von innen funktioniert - es ist ihm egal. Welche Datenbank ist unter der Haube versteckt? Oracle? MySQL? In welcher Programmiersprache ist das Programm geschrieben? Wie genau ist der Code organisiert? Nicht der Punkt. Das Programm bietet eine Schnittstelle und verwendet diese.

Nicht immer bietet das Programm eine grafische Oberfläche. Dies kann eine SOAP, eine REST-Schnittstelle oder eine andere API sein. Um diese Schnittstelle verwenden zu können, müssen Sie Folgendes verstehen:

  • was zu betreten;
  • was kommt heraus;
  • Welche Ausnahmen müssen behandelt werden?

Benutzer arbeiten mit der grafischen Benutzeroberfläche . Programme arbeiten mit API - Application Programming Interface . Sie brauchen keine Grafiken, nur einen Vertrag.

Wie die API aufgerufen wird


Sie können API entweder direkt oder indirekt aufrufen.

Direkt:

  1. Das System ruft Funktionen in sich auf.
  2. Das System ruft die Methode eines anderen Systems auf
  3. Der Mensch nennt eine Methode
  4. Autotests ziehen Methoden

Indirekt:

  1. Benutzer arbeitet mit GUI

API-Aufruf direkt


1. Das System ruft Funktionen in sich auf


Verschiedene Teile des Programms kommunizieren irgendwie miteinander. Sie tun dies auf Programmebene, dh auf API-Ebene!

Dies ist der einfachste Weg, da der Entwickler der aufgerufenen API der Entwickler ist. Und er ist sein Verbraucher! Es gibt also keine Probleme mit irrelevanter Dokumentation =)

Nur ein Scherz, es gibt immer Probleme mit der Dokumentation. Nur in diesem Fall enthält der Code als Dokumentation Kommentare. Aber sie sind leider auch irrelevant. Entweder sind die Entwickler unterschiedlich oder einer, aber ich habe bereits vergessen, wie ich die ursprüngliche API erstellt habe und wie sie funktionieren sollte ...


2. Das System ruft die Methode eines anderen Systems auf


Dies ist jedoch ein typischer Fall, den Tester in Integratoren testen. Oder Tester, die die Integration ihres Systems mit dem eines anderen testen.

Ein System durchläuft eine Methode eines anderen Systems. Sie versucht möglicherweise, Daten von einem anderen System abzurufen. Oder umgekehrt, senden Sie Daten an dieses System.

Angenommen, ich habe beschlossen, die Eingabeaufforderungen von Dadata mit meinem Online-Shop zu verbinden, damit der Benutzer die Lieferadresse einfach eingeben kann.

Ich verbinde API-Hinweise. Und jetzt, wenn der Benutzer beginnt, die Adresse auf meiner Website einzugeben , sieht er die Eingabeaufforderungen von Dadata . Wie sich herausstellt:

  • Er gibt einen Brief auf meiner Seite ein
  • Meine Site sendet eine Anfrage an API Dadat Hinweise
  • Dadata gibt die Antwort zurück
  • Meine Site verarbeitet es und zeigt dem Benutzer das Ergebnis an.

Es gibt so viele Schritte! Und so für jedes eingegebene Zeichen. Der Benutzer sieht diese Interaktion nicht, ist es aber.

Und vergessen Sie natürlich nicht den Fall, wenn wir die API-Methode entwickeln. Was nur über SOAP aufgerufen werden kann, ist nirgends in der Schnittstelle zu finden. Was der Kunde bestellt hat, haben wir ¯ \ _ (ツ) _ / ¯ gemacht

Ein Beispiel finden Sie unter Benutzer. Die MagicSearch- Methode basiert auf realen Ereignissen. Obwohl ich zugeben muss, dass die ursprüngliche Logik noch ausgefeilter war, habe ich sie an meine Site angepasst.

Der Trick dabei ist jedoch, dass im System selbst in der Benutzeroberfläche nur eine reguläre Suche stattfindet, nur eine Eingabezeile. Na ja, vielleicht ein paar Filter. Die Integration erforderte jedoch eine ganze Reihe zusätzlicher Funktionen, die über die SOAP-Methode durchgeführt wurden.

Die Supersuchfunktion ist nur über die API verfügbar, der Benutzer in der Benutzeroberfläche spürt dies nicht.

In diesem Fall haben Sie normalerweise TK, nach dem die API-Methode funktioniert. Ihre Aufgabe ist es, es zu überprüfen. Eine typische Aufgabe eines Testers. Fügen Sie einfach die Funktionen des API-Testens zu den Standard-Testdesign-Tests hinzu, und alles dreht sich um den Hut!

(Was genau in der API getestet werden muss - werde ich etwas später in einem separaten Artikel erläutern)


3. Die Person ruft die Methode auf


Die Gründe sind unterschiedlich:

  1. Um die Arbeit zu beschleunigen
  2. So lokalisieren Sie den Fehler (wo liegt das Problem? Auf dem Server oder Client?)
  3. Zum Testen der Logik ohne Edge-Spins

Wenn das System eine API bereitstellt, ist es normalerweise einfacher, sie zu ziehen, als dasselbe über eine grafische Oberfläche zu tun. Darüber hinaus kann der API-Aufruf im Tool gespeichert werden. Einmal gespeichert - Sie können es an jeder Basis anwenden, auch wenn es 10 Mal am Tag gereinigt wird.

Als Beispiel gehen wir noch einmal zu Benutzer . Wenn wir einen Benutzer erstellen möchten, müssen wir viele Felder ausfüllen!

Bild

Dies kann natürlich mit speziellen Plugins wie Form Filler erfolgen . Was aber, wenn Sie ausreichende Testdaten für Ihr System benötigen? Und auf Russisch?

Das manuelle Ausfüllen der Felder ist traurig und deprimierend! Und wenn Sie dies jede Woche oder jeden Tag auf einer sauberen Testbasis wiederholen müssen - im Allgemeinen ein Albtraum. Dies ist sofort die erste Priorität bei der Automatisierung von Routinemaßnahmen.

Und in diesem Fall spielt die Rolle der Automatisierung ... Postbote. Ein Benutzer kann über eine CreateUser- REST-Anforderung erstellt werden. Einmal registrierte normale "wie echte" Daten, jedes Mal, wenn wir sie verwenden. Gewinn!

Anstatt das Formular manuell auszufüllen (1 Minute gedankenloses Ausfüllen der Felder mit den Werten „lprulpk“), erhalten wir 1 Sekunde nach Drücken der Schaltfläche „Senden“. In diesem Fall sind die Werte viel angemessener.

Und in Postman können Sie einen separaten Ordner für die Vorbereitung der Testbasis erstellen und dort ein Dutzend Anfragen stopfen. Und jetzt erhalten Sie an jeder Basis in wenigen Sekunden so viele Daten, wie Sie stundenlang manuell fahren würden!

Wenn Sie einen Fehler finden und nicht verstehen, an wen Sie ihn hängen sollen - Front-End- oder Back-End-Entwickler, entfernen Sie alle unnötigen Fehler. Rufen Sie die Methode ohne grafische Oberfläche auf. Und Sie können die Programmlogik testen, bis die Schnittstelle bereit oder defekt ist.

4. Autotests ziehen Methoden


Es gibt eine typische Automatisierungspyramide:

  • GUI-Tests sind ein ehrlicher Test, "wie der Benutzer es tun würde".
  • API-Tests - Wir steigen auf die darunter liegende Ebene ab und werfen überflüssig aus.
  • Unit Tests - Tests für eine einzelne Funktion

Bild

Das Wort API gibt an, was in den Tests verwendet wird ツ

Nehmen wir an, wir haben:

  • Betrieb : Bericht herunterladen;
  • am Eingang : Daten von manuellen oder automatischen Anpassungen oder von anderen Stellen;
  • Ausgabe : Ein Bericht, der nach bestimmten Regeln erstellt wurde

Berichtserstellungsregeln:

  • Zelle 1 : X - Y.
  • Zelle 2 : Z * 6
  • ...

Bild

GUI-Tests sind ein ehrlicher Test, der Roboter macht alles, was der Benutzer tun würde. Es öffnet den Browser, drückt auf die Schaltflächen ... Aber wenn etwas fällt, werden Sie lange Zeit herausfinden, wo genau.

API-Tests sind dieselben, nur ohne Browser. Wir senden einfach Daten an die Eingabe und überprüfen die Daten an der Ausgabe. Sie können beispielsweise die endgültige Antwort in Excel eingeben und vom Roboter abgleichen lassen. Sind die Daten korrekt ausgefüllt? Das Auffinden des Problems wird einfacher.

Unit-Tests sind, wenn wir jede Funktion einzeln testen. Wir betrachten die Berechnung für Zelle 1 separat, separat für Zelle 2 und so weiter. Solche Tests werden am schnellsten verfolgt und Fehler können leicht lokalisiert werden.


Indirekter API-Aufruf


Wenn der Benutzer mit der GUI arbeitet, arbeitet er tatsächlich auch mit der API. Er weiß es einfach nicht, er braucht es einfach nicht.

Das heißt, wenn der Benutzer das System öffnet und versucht, den Bericht herunterzuladen, spielt es keine Rolle, wie das System funktioniert und welche Art von Magie sich darin befindet. Er hat eine Schaltfläche "Bericht herunterladen", auf die er klickt. Der Benutzer arbeitet über die GUI (grafische Benutzeroberfläche).

Bild

Tatsächlich gibt es unter dieser grafischen Benutzeroberfläche eine API. Wenn der Benutzer auf die Schaltfläche klickt, ruft die Schaltfläche die Berichtserstellungsfunktion auf.

Bild

Und die Berichtserstellungsfunktion kann bei Bedarf bereits 10 verschiedene andere Funktionen aufrufen.

Und jetzt sieht der Benutzer einen vorgefertigten Bericht vor sich. Er hat die komplexe API aufgerufen, ohne es zu wissen!

Was bedeutet API-Test?


Zunächst meinen wir das Testen der VIA-API. "API-Test" ist ein häufig verwendeter Begriff, das sagen sie wirklich, aber technisch gesehen ist der Begriff falsch. Wir testen die API nicht, wir testen nicht die GUI (grafische Oberfläche). Wir testen eine Art von Funktionalität über eine grafische oder Software-Oberfläche.

Dies ist jedoch ein etablierter Ausdruck. Sie können es verwenden und "API-Test" sagen. Und wenn wir darüber reden, meinen wir:

  • Selbsttests auf API-Ebene
  • oder Integration zwischen zwei verschiedenen Systemen.

Integration - wenn ein System über ein Datenübertragungsprotokoll mit einem anderen kommuniziert. Dies wird als Remote-API bezeichnet, dh Kommunikation über das Netzwerk, über ein bestimmtes Protokoll (HTTP, JMS usw.). Im Gegensatz dazu gibt es auch eine lokale API (auch als "Shared Memory API" bezeichnet) - dies ist die API, über die das Programm mit sich selbst oder mit einem anderen Programm innerhalb desselben virtuellen Speichers kommuniziert.

Bild

Wenn wir über das Testen von APIs sprechen, meinen wir meistens das Testen von Remote-APIs. Wenn sich zwei Systeme auf verschiedenen Computern befinden, die irgendwie miteinander kommunizieren.

Wenn in der Stelle „API-Tests“ angezeigt werden, bedeutet dies höchstwahrscheinlich die Möglichkeit, einen SOAP- oder REST-Service aufzurufen und zu testen. Obwohl es sich immer zu klären lohnt!

Zusammenfassung


API (Application Programming Interface) ist ein Vertrag, den ein Programm bereitstellt. "Ich kann auf diese und jene Weise kontaktiert werden, ich verpflichte mich, dies und das zu tun."

Der Vertrag beinhaltet:

  • die Operation selbst, die wir durchführen können
  • Eingabedaten
  • Ausgabedaten (Dateninhalt oder Fehlermeldung). ".

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


All Articles