Gehen Sie einen schnelleren, intelligenteren Weg zur KI-gestützten C/C++-Testautomatisierung. Erfahren Sie mehr >>
API-Tests ist wichtig und zeigt Entwicklern, ob APIs die Erwartungen hinsichtlich Funktionalität, Sicherheit, Leistung und Zuverlässigkeit erfüllen.
API steht für Application Programming Interface (Anwendungsprogrammierschnittstelle). Eine API ist ein Software-Vermittler, der die Kommunikation zwischen zwei Apps ermöglicht. Beispielsweise sind APIs jedes Mal im Einsatz, wenn Sie auf Facebook interagieren, ein Produkt bei Amazon kaufen oder auf Ihrem Smartphone die Nachrichten abrufen.
Eine API funktioniert wie folgt: Wenn Sie eine Anwendung auf Ihrem Computer oder Telefon verwenden, verbindet sich die App mit dem Internet und sendet Ihre Daten an den Server. Der Server lädt die Informationen herunter, interpretiert sie nach Bedarf für die App und sendet dann eine Antwort an das Telefon oder den Computer so zurück, dass Sie sie verstehen und verwenden können.
Tester testen APIs, um herauszufinden, ob die APIs die Erwartungen hinsichtlich Funktionalität, Sicherheit, Leistung und Zuverlässigkeit erfüllen. API-Funktionstests ist unerlässlich, da APIs die primäre Schnittstelle in der Anwendungslogik darstellen und Tester festgestellt haben, dass GUI-Tests (grafische Benutzeroberflächentests) schwierig zu pflegen sind und nur eine begrenzte Abdeckung bieten, wenn man die wiederkehrenden Änderungen in DevOps- und Agile-Software sowie die verkürzten Release-Zyklen berücksichtigt. Unternehmen haben festgestellt, dass zusätzliche API-Tests ihre Anwendungstestabdeckung deutlich erweitern.
Tester testen APIs direkt, also isoliert, als Bestandteil von End-to-End-Tests im Integrationstest. Außerhalb von RESTful APIs umfassen Transaktionen verschiedene Endpunkte, zum Beispiel:
Tester testen APIs, die ein Entwicklungsteam erstellt. Darüber hinaus testen sie die APIs, die das Team in der Anwendung verwendet, einschließlich aller APIs von Drittanbietern. Die Tests stellen fest, ob die APIs für eine Vielzahl denkbarer Anfragen die passenden Antworten im richtigen Format zurückliefern und ob die APIs bei ungewöhnlichen oder extremen Eingaben und bei Fehlern angemessen reagieren. Das Testen umfasst normalerweise SOAP-Webdienste oder REST-APIs mit XML- oder JSON-Nachrichtenladungen, wobei das System über JMS, HTTP, HTTPS und MQ sendet. Andere Nachrichtenformate, die Tester während der Tests verwenden, sind EDI, FIX und SWIFT.
Typische automatisierte API-Tests umfassen Folgendes:
Ausführliche Informationen zu den spezifischen Tests, die Entwickler zum Testen von APIs verwenden, finden Sie unten im Abschnitt Typen.
Um eine angenehme und erfolgreiche Benutzererfahrung mit Ihrer Softwareanwendung zu gewährleisten, ist es wichtig, sie gründlich zu testen. Dies bedeutet, dass die zugrunde liegende Funktionsweise des Codes und seine Interaktionen mit anderen Systemen und Diensten überprüft werden.
UI-Tests allein können nicht garantieren, dass die Software wie erwartet funktioniert. API-Tests bewerten die Funktionalität, Zuverlässigkeit und Leistung der Anwendung, damit Sie sicher sein können, dass Sie qualitativ hochwertige Software liefern.
API-Tests konzentrieren sich auf
Alle diese Bereiche sind entscheidend für den korrekten Betrieb Ihrer Anwendung.
Wenn keine ausreichenden API-Tests durchgeführt werden, kann dies dazu führen
Proaktive und umfangreiche API-Tests führen zu besserer Software.
Um alle Grundlagen abzudecken, verwenden Tester eine Reihe von Tests zum Testen von APIs. Hier sind die wichtigsten.
API-Funktionstests verifizieren, dass die API wie erwartet funktioniert und angemessen auf alle Anfragen reagiert, die sie erhält.
Dies ist ein weiterer Sicherheitstest. Tester geben eine große Menge verschiedener Daten (Fuzz oder Rauschen) in das System ein, um negatives Verhalten oder Programmabstürze zu erzwingen. Diese Tests belasten APIs für Worst-Case-Situationen.
Diese Art von Test überprüft, ob die App sowohl bei Spitzen- als auch bei normalen Dateneingaben ordnungsgemäß funktioniert.
Während dieses Tests entdecken Tester, ob Benutzer mit geringen API-Kenntnissen Zugriff auf die vollständige API erhalten, einschließlich Informationen zu Prozessen, Funktionen und Ressourcen.
Dieser Test bezieht sich auf den tatsächlichen Betrieb der API und konzentriert sich insbesondere auf das Ergebnis, wenn die APIs die API-Codebasis verwenden. Es konzentriert sich auf eines oder mehrere davon: Ausführungsfehler, Überwachung, Fehlererkennung, Ressourcenlecks.
Dieser Test dient dem API-Schutz und stellt sicher, dass die API-Anwendung vor externen Bedrohungen geschützt ist. Er umfasst das Testen der Struktur der Zugriffskontrolle, der Benutzerrechteverwaltung, der Validierung von Verschlüsselungsmethoden und der Autorisierungsvalidierung.
UI-Tests testet die Benutzeroberflächen der API. Es konzentriert sich hauptsächlich auf die Schnittstelle, die mit der API verbunden ist, im Gegensatz zum API-Testen selbst.
Dieses Testen ist unerlässlich und findet in den letzten Schritten der Entwicklung statt. Es bestätigt verschiedene Eigenschaften und das korrekte Verhalten des Produkts sowie die Effizienz.
Wenn APIs nicht wie erwartet funktionieren, führt dies zu Funktionsstörungen oder Sicherheitsrisiken. Dies sind einige der wichtigsten Fehler, die durch API-Tests erkannt werden können.
Wenn die Antwortzeit einer API selbst unter normalen Bedingungen zu lang ist, beeinträchtigt dies die Benutzererfahrung und verzögert die Systemabläufe.
APIs, die unerwartete oder fehlerhafte Daten zurückgeben – etwa fehlende Felder oder falsche Typen – verursachen Fehler in nachgelagerten Systemen.
Eine schwache oder falsch konfigurierte Authentifizierung ermöglicht nicht autorisierten Benutzern den Zugriff auf eingeschränkte Endpunkte oder die Durchführung vertraulicher Vorgänge.
Die API verhält sich anders als definiert. Beispielsweise werden zusätzliche Felder zurückgegeben, erforderliche Felder fehlen oder ungültige Eingaben werden akzeptiert.
Wenn etwas schief geht, schlägt die API entweder stillschweigend fehl oder gibt einen allgemeinen Fehler zurück, der schwer zu debuggen ist.
Schwachstellen wie Injektionspunkte, offengelegte Anmeldeinformationen oder fehlende Eingabevalidierung können zu Angriffen oder Datenlecks führen.
UI-Tests testet die Benutzeroberflächen der API. Es konzentriert sich hauptsächlich auf die Schnittstelle, die mit der API verbunden ist, im Gegensatz zum API-Testen selbst.
Dieses Testen ist unerlässlich und findet in den letzten Schritten der Entwicklung statt. Es bestätigt verschiedene Eigenschaften und das korrekte Verhalten des Produkts sowie die Effizienz.
Ein hoher Automatisierungsgrad bietet eine Reihe funktionaler Testszenarien, die Sie systematisch replizieren können.
Nutzen Sie eine intuitive Benutzeroberfläche, um komplexe Fälle über Datenbanken, Microservices, die Messaging-Ebene usw. zu automatisieren. Dazu gehören:
Daher ist es wichtig, zu erkennen, wann API-Änderungen auftreten, und Testassets einfach, schnell und genau zu aktualisieren, um sie auszurichten.
Der Schlüssel ist, ein System zu entwickeln, das notwendige Änderungen für aktuelle Tests bewertet und diese dann aktualisiert oder sogar neue Tests erstellt. Dies kann den Zeit- und Arbeitsaufwand erheblich reduzieren, um sicherzustellen, dass Ihre Tests nicht an unerwarteten Änderungen scheitern und neue Funktionalitäten nicht ignorieren.
Auf diese Weise können Sie simulierte Testfälle erstellen, wodurch Sie wiederum das Verhalten abhängiger Ressourcen anzeigen können, auf die Sie möglicherweise nur schwer zugreifen können, auf die Sie möglicherweise Schwierigkeiten bei der Konfiguration zum Testen haben oder die noch nicht verfügbar sind.
Diese Ressourcen können beispielsweise Webdienste, Datenbanken, Mainframes oder Drittanbieteranwendungen sein. Sie können Webdienst-Virtualisierung in Kombination mit Betriebssystem- und Hardware-Virtualisierung nutzen, um Zugriff auf die benötigten Umgebungen zu erhalten. Dadurch können Sie schneller, früher und gründlicher testen.
Sie können die Dienstvirtualisierung in Bezug auf API-Tests auf zwei Arten anwenden:
APIs sind stark exponiert. Somit besteht ein großes Potenzial für volatilen und unvorhersehbaren Verkehr. Es ist ratsam, umfassende Leistungstests durchzuführen, um festzustellen, ob Ihre API die Erwartungen erfüllt, wenn sie auf eine steigende Nachfrage oder ein unregelmäßiges Verhalten stößt. Hier sind einige Beispiele.
Mit der Servicevirtualisierung können Sie simulierte Testszenarien erstellen, die Sie beim Testen verschiedener Leistungsumgebungen unterstützen, deren Erstellung in einer Testsituation normalerweise problematisch ist. Sie können Bedingungen wie Timing, Verzögerung und Latenz testen, um typische, Spitzen- und langsame Leistung zu replizieren, um einen Cloud-Burst oder jemanden zu planen, der von einem Remote-Standort auf einem anderen Kontinent aus auf die API zugreift.
Darüber hinaus können Sie verschiedene Fehler- und Fehlersituationen erstellen, die Tester im eigentlichen Programm oft nur schwer reproduzieren können – wenn Ihre APIs beispielsweise Amazon Web Services verwenden, können Sie ein Szenario erstellen, das eine Situation simuliert, in der AWS offline ist.
Sie können auch eine Vielzahl von Situationen in abhängigen Systemen konfigurieren, um herauszufinden, ob Ihre APIs unter ungewöhnlichen Bedingungen richtige Antworten liefern und auch, ob sie einigermaßen fehlschlagen.
Sie können Links zu Anwendungen von Drittanbietern replizieren, wodurch jedes Risiko, das Ihre Tests für Dienste haben können, die Sie normalerweise nicht mit Testdaten angreifen dürfen oder für die Sie kein Budget haben, negiert werden können.
APIs bieten leider eine große Angriffsfläche. Um Angreifer und größere Sicherheitsprobleme zu stoppen, verwenden Sie einen mehrschichtigen Testansatz. So stellen Sie sicher, dass Sie die erforderlichen Sicherheitsmaßnahmen in die Anwendung integriert haben. Der Ansatz umfasst:
Um Geld zu sparen, ermöglicht die Servicevirtualisierung Nicht-Sicherheitsexperten die Durchführung von Tests, da sie keinen Code schreiben, sondern lediglich bewährte Tests in einer Vielzahl von Szenarien ausführen. Und die Dienstvirtualisierung ermöglicht es Ihnen, die Reaktionen Ihrer API auf eine Vielzahl von Abhängigkeitssicherheitsverhalten und in zahlreichen Angriffssituationen auszurichten.
Obwohl die API-Ökonomie die Geschäftsabläufe in vielerlei Hinsicht revolutioniert, gibt es immer noch einige Bedenken hinsichtlich ihrer Einführung. Einige davon sind:
Das Testen von Microservices stellt besondere Herausforderungen dar, die sich aus der verteilten Architektur und der zunehmenden Komplexität ergeben. Hier einige Beispiele:
Um optimale Ergebnisse zu erzielen, befolgen Sie beim Testen von Microservices diese Best Practices.
Hier sind zwei Beispiele für Situationen, in denen Sie API-Tests durchführen möchten.
Wenn eine Person eine App wie Instagram oder Twitter öffnet, fordert die App sie auf, sich anzumelden. Sie kann dies in der App selbst oder über Facebook oder Google tun.
Wenn der Benutzer eine dieser beiden Webquellen verwendet, hat die App eine Vereinbarung mit Facebook und Google, sodass die App auf einige der Informationen über den Benutzer zugreifen kann, die sie zuvor an die Quellen geliefert hat.
Tester können die APIs testen, die der App den Zugriff auf die benötigten Informationen ermöglichen. Der Tester kann auch testen, ob die Social-Media-App erfolgreich mit Facebook und Google zusammenarbeitet, um dem Benutzer Zugriff auf die App zu gewähren.
Wenn eine Person einen Webservice wie Kayak oder Expedia verwendet, um Flugtickets zu buchen, erwartet sie, dass sie günstige Flüge für das gewünschte Datum sieht.
Die Reise-App muss mit den teilnehmenden Fluggesellschaften kommunizieren, um dem Reisenden die besten Flugzeiten und Preise anzuzeigen. APIs machen dies möglich.
Tester können testen, um sicherzustellen, dass die APIs, die der Reise-App die Möglichkeit geben, mit den Fluggesellschaften zu kommunizieren, korrekt funktionieren und dass die App dem Benutzer die richtigen Informationen liefert.
Die Tester können Tests durchführen, um sicherzustellen, dass die APIs, die bei der Flugbuchung helfen, wie erwartet funktionieren, und die Zahlungskomponente überprüfen. Der Tester kann die APIs testen, die der App die Kommunikation mit Kreditkartenunternehmen und die ordnungsgemäße Zahlungsabwicklung ermöglichen, sowie jene APIs, die die persönlichen und finanziellen Daten des Benutzers schützen.
