5 API-Tests „Must Haves“ für API-Sicherheit, Zuverlässigkeit und Leistung
Von Parasoft
31. März 2016
4 min lesen
Um sicherzustellen, dass Ihre APIs das erforderliche Maß an Sicherheit, Zuverlässigkeit und Leistung bieten, müssen Sie zwangsläufig eine breite Palette komplexer Tests entwickeln, kontinuierlich ausführen und religiös aufrechterhalten.
Hier sind 5 wichtige API-Tests, die Ihnen dabei helfen werden, dies zu erreichen:
1. Intelligente Testerstellung und automatisierte Validierung
Das Aussetzen von Diensten als Wirkstoffe ohne ordnungsgemäße Verhärtung ist wie das Bringen Ihres Kindes in ein „Entwicklungsland“, ohne zuvor die empfohlenen Impfungen erhalten zu haben. Glücklicherweise sind die Werkzeuge und Strategien zur Erzielung der richtigen Härtung eine Erweiterung derjenigen, die sich für SOA-Tests als wirksam erwiesen haben - ebenso wie der Prozess der Verabreichung der für Auslandsreisen erforderlichen Impfungen im Wesentlichen eine Erweiterung der Verabreichung der empfohlenen Inlandsreisen ist.
Da das extreme Expositions- und Missbrauchspotenzial von APIs das Testen einer Vielzahl von Bedingungen und Eckfällen kritisch macht, steht die Automatisierung im Vordergrund. Die Erstellung und Ausführung einfacher automatisierter Tests mit eingeschränkter oder manueller Validierung hat angesichts des internen Umfangs der SOA möglicherweise ausgereicht. Um jedoch sicher zu sein, dass Ihre APIs robust genug sind, um in freier Wildbahn zu überleben, ist eine komplexere und umfassendere Automatisierung erforderlich. Sie benötigen einen Automatisierungsgrad, der Ihnen einen umfassenden Satz von Funktionstestfällen bietet, die systematisch wiederholt werden können.
Zu den empfohlenen Funktionen für dieses Ziel gehört eine intuitive Benutzeroberfläche zur Automatisierung komplexer Szenarien auf der Messaging-Ebene, in ESBs, Datenbanken und Mainframes:
- Definieren automatisierter Testszenarien für die breite Palette von Protokollen und Nachrichtentypen, die in APIs verwendet werden: REST-, JSON-, MQ-, JMS-, EDI-, Nachrichten mit fester Länge usw.
- Automatisierung einer umfassenden mehrschichtigen Validierung über mehrere Endpunkte hinweg, die an End-to-End-Testszenarien beteiligt sind.
- Parametrisierung von Testnachrichten, Validierungen und Konfigurationen aus Datenquellen, aus Testszenarien extrahierten Werten oder Variablen.
- Definieren einer ausgeklügelten Testflusslogik ohne Skripterstellung.
- Visualisieren, wie Nachrichten und Ereignisse während der Ausführung von Tests durch verteilte Architekturen fließen.
2. Änderungsmanagement für Test-Assets und -Umgebungen
Kontinuierlich weiterentwickelte APIs helfen Unternehmen, der Konkurrenz immer einen Schritt voraus zu sein und gleichzeitig auf geschäftliche Anforderungen zu reagieren. Diese häufige Änderung birgt jedoch erhebliche Qualitätsrisiken, wenn die automatisierte Testsuite nicht mit der sich entwickelnden API Schritt hält.
Ein System zur schnellen, einfachen und genauen Aktualisierung von Test-Assets ist entscheidend, um Test-Assets mit der sich ändernden API synchron zu halten. Wenn Sie die Auswirkungen von Änderungen an vorhandenen Tests automatisch bewerten und dann vorhandene Tests schnell aktualisieren (oder neue erstellen) können, um auf die identifizierten Auswirkungen von Änderungen zu reagieren, können Sie den Zeitaufwand erheblich reduzieren, um sicherzustellen, dass Ihre Tests nicht fehlschlagen aufgrund erwarteter Änderungen… oder übersehen wichtige neue Funktionen.
3. Service-Virtualisierung für simulierte Testumgebungen
Service-Virtualisierung erstellt simulierte Testumgebungen, die jederzeit und überall Zugriff auf das Verhalten abhängiger Systemkomponenten bieten, die für Entwicklung oder Tests nicht verfügbar, schwer zugänglich oder schwierig zu konfigurieren sind. „Abhängige Komponenten“ können Mainframes, mobile App-Front-Ends, Datenbanken, Webdienste, Anwendungen von Drittanbietern oder andere Systeme umfassen, die außerhalb der direkten Kontrolle Ihres Teams liegen. Die Servicevirtualisierung kann in Verbindung mit der Hardware-/Betriebssystemvirtualisierung verwendet werden, um früher, schneller oder umfassender auf die Umgebungen zuzugreifen, die Sie testen müssen.
Im Rahmen von API-Tests kann die Service-Virtualisierung auf zwei Arten angewendet werden:
- Um Zugriff auf das abhängige Komponentenverhalten (z. B. von einer mobilen App, Datenbank, einem Legacy-System oder einem Drittanbieterdienst) bereitzustellen, das Sie benötigen, um Ihre API gründlich zu validieren.
- Um das Verhalten Ihrer eigenen APIs nachzuahmen, erstellen Sie eine Testumgebung, die API-Konsumenten entwickeln und testen können, ohne Ihre Produktionsumgebung zu beeinträchtigen, oder ermöglichen Sie den Beginn der Entwicklung und des Testens, bevor Ihre APIs abgeschlossen sind.
4. Umfangreiche Leistungstests - idealerweise mit Service-Virtualisierung
Aufgrund der hohen Gefährdung von APIs besteht ein hohes Potenzial für unvorhersehbare und häufig volatile Verkehrsaufkommen. Um festzustellen, ob Ihre API SLAs im Falle einer unregelmäßigen oder steigenden Nachfrage erfüllt, mit der APIs häufig konfrontiert sind, ist es wichtig, den Umfang der Leistungstests zu erweitern. Mithilfe der Servicevirtualisierung (siehe oben) können Sie simulierte Testumgebungen erstellen, mit denen Sie anhand verschiedener Leistungsszenarien testen können, die ansonsten in der Testumgebung nur schwer zu erstellen wären.
Sie können beispielsweise auf einfache Weise Leistungsbedingungen (z. B. Timing, Latenz, Verzögerung) festlegen, um die maximale, erwartete und langsame Leistung zu emulieren - möglicherweise, um Cloud-Bursts zu planen oder zu bestimmen, wie die API möglicherweise reagiert, wenn jemand aus China darauf zugreift . Sie können auch verschiedene Fehler- und Fehlerbedingungen konfigurieren, die sich nur schwer reproduzieren oder mit realen Systemen replizieren lassen. Wenn Ihre APIs beispielsweise auf Amazon Web Services basieren, können Sie problemlos ein Szenario simulieren, in dem AWS nicht verfügbar ist. Diese Fähigkeit, eine breite Palette von Bedingungen in abhängigen Systemen schnell zu konfigurieren, ist entscheidend, um festzustellen, ob Ihre APIs unter außergewöhnlichen Bedingungen angemessene Antworten liefern oder zumindest ordnungsgemäß fehlschlagen.
Ein letzter Weg, wie die Einführung von Service-Virtualisierung zum Testen der Leistung beiträgt: Sie können alle Verbindungen zu Systemen von Drittanbietern „virtualisieren“ und so das Risiko eliminieren, dass Ihre Stresstests sich auf Services auswirken, die Sie nicht mit Testnachrichten sperren dürfen (oder die nicht budgetiert sind).
5. Umfangreiche Sicherheitstests - idealerweise mit Service-Virtualisierung
Angesichts der vergrößerten Angriffsfläche von APIs ist eine facettenreiche Strategie für Sicherheitstests unerlässlich, um sicherzustellen, dass die Entwicklung die entsprechende Sicherheitsstufe in Ihre Anwendung integriert hat. Das beinhaltet:
- Ausführen komplexer Testszenarien für Authentifizierung, Verschlüsselung und Zugriffskontrolle.
- Generieren einer breiten Palette von Penetrationsangriffsszenarien mit Parameter-Fuzzing, Injektionen, großen Nutzlasten usw.
- Ausführen von Penetrationsangriffsszenarien für Ihre vorhandenen Funktionstestszenarien.
- Überwachen des Backends während der Testausführung, um festzustellen, ob die Sicherheit tatsächlich gefährdet ist.
Wenn Sie die Service-Virtualisierung (siehe oben) einsetzen, können Sie diese nutzen, um Ihre Sicherheitstests auf die nächste Stufe zu heben:
- Es bietet schnelle Möglichkeiten zum Emulieren von Angriffsszenarien sowie zum Emulieren verschiedener Sicherheitsverhalten von Abhängigkeiten. Auf diese Weise können Sie mehr Wert aus Ihren vorhandenen Funktionstestszenarien ziehen (da Sie diese im Vergleich zu verschiedenen Sicherheitsszenarien ausführen können, die ansonsten schwierig zu konfigurieren und nicht durchführbar wären).
- Damit können umfangreiche Sicherheitstests ohne Sicherheitsexperten durchgeführt werden. Bestehende Testszenarien können problemlos für eine Vielzahl vorkonfigurierter Sicherheitsszenarien ausgeführt werden.
- Es hilft Ihnen, die Reaktion Ihrer APIs auf verschiedene Angriffsszenarien und das unterschiedliche Sicherheitsverhalten von Abhängigkeiten zu isolieren und zu ermitteln.
API-Tests: Empfehlungen von Forrester
Möchten Sie mehr über API-Tests erfahren? Laden Sie einen kostenlosen Forrester Wave-Bericht herunter die 9 Anbieter von Automatisierungstools für Funktionstests anhand von 40 Kriterien bewertet, um Unternehmen, die an Unternehmens-, Mobil- und Webanwendungen arbeiten, bei der Auswahl zu unterstützen beste API-Test-Tools.