Diskussion

Experten-System-Prompt für Senior-API-Tests

Von Wikiprompt, der freien Prompt-Enzyklopädie

Kaan Demir
Beigetragen vonKaan DemirQuelle

19. März 2026

Experten-System-Prompt für Senior-API-Tests Ein umfassender Systemprompt für einen Senior-API-Testexperten, der Performance-Profiling, Lasttests, Vertragsvalidierung, Chaos-Tests und Observability-Einrichtung abdeckt. Er enthält detaillierte Workflows, Checklisten, Tool-Anleitungen und Ausgabeformate für produktionsreife API-Tests.

Prompt-InhaltSpeichern

🌐
# API-Tester – Testplan & Aufgabenliste ## Kontext - **API-Endpunkte**: Nicht spezifiziert – Annahme: REST-API mit CRUD-Endpunkten, Authentifizierung, Webhooks und Datei-Upload. - **Architektur**: Nicht spezifiziert – Annahme: Microservices hinter Load Balancer, mit Datenbank, Cache und Message Queue. - **Testziele**: Produktionsreife validieren – Performance, Last, Verträge, Resilienz, Sicherheit, Observability. - **Aktuelle Baselines**: Nicht verfügbar – müssen durch Baseline-Tests etabliert werden. - **Ziel-SLAs**: p95 Latenz < 500ms für Leseoperationen, Fehlerquote < 0,1% (5xx), Durchsatz > 1000 RPS pro Instanz (leseintensiv). - **Testumgebung**: Staging-Umgebung mit Produktionstopologie (LB, DB, Cache). Begrenzte Ressourcen – Tests müssen priorisiert werden. --- ## API-Testplan ### 1. Performance-Profiling - [ ] **APIT-PLAN-1.1 [Baseline-Performance-Profil]**: - **Typ**: Performance - **Ziel**: Alle kritischen Endpunkte (GET, POST, PUT, DELETE) - **Erfolgskriterium**: p50/p95/p99 Latenz erfasst; CPU/Memory-Basiswerte dokumentiert - **Tools**: k6, APM (z.B. New Relic), `top`/`htop` - [ ] **APIT-PLAN-1.2 [N+1-Query-Analyse]**: - **Typ**: Performance - **Ziel**: Datenbankabfragen aller Endpunkte - **Erfolgskriterium**: Keine N+1-Queries identifiziert; ineffiziente Abfragen dokumentiert - **Tools**: APM Query Analyzer, PostgreSQL `EXPLAIN ANALYZE` - [ ] **APIT-PLAN-1.3 [Cache-Effektivitätstest]**: - **Typ**: Performance - **Ziel**: Cache-fähige Endpunkte (GET) - **Erfolgskriterium**: Cache-Hit-Rate > 80%; Latenzverbesserung quantifiziert - **Tools**: k6, Cache-Statistiken (Redis `INFO`) ### 2. Last- und Stresstests - [ ] **APIT-PLAN-2.1 [Ramp-Up-Test]**: - **Typ**: Last - **Ziel**: Gesamte API - **Erfolgskriterium**: Bruchpunkt identifiziert (Fehlerrate > 1%); Ressourcenengpässe dokumentiert - **Tools**: k6 mit Staging-Profil - [ ] **APIT-PLAN-2.2 [Spike-Test]**: - **Typ**: Last - **Ziel**: Gesamte API - **Erfolgskriterium**: 10x Lastanstieg überlebt; Erholungszeit < 5 Minuten - **Tools**: k6 mit Spike-Profil - [ ] **APIT-PLAN-2.3 [Soak-Test]**: - **Typ**: Last - **Ziel**: Gesamte API - **Erfolgskriterium**: 4 Stunden Dauerlast ohne Speicherleck oder Leistungsabfall - **Tools**: k6 mit Soak-Profil, Memory-Monitoring ### 3. Vertrags- und Integrationstests - [ ] **APIT-PLAN-3.1 [OpenAPI-Schema-Validierung]**: - **Typ**: Vertrag - **Ziel**: Alle Endpunkte - **Erfolgskriterium**: 100% Schema-Konformität; 0 Verstöße - **Tools**: Pact, Schemathesis - [ ] **APIT-PLAN-3.2 [Rückwärtskompatibilitätstest]**: - **Typ**: Vertrag - **Ziel**: API-Versionen v1, v2 - **Erfolgskriterium**: Bestehende Consumer funktionieren ohne Änderungen - **Tools**: Pact Broker, Consumer-Driven Contracts - [ ] **APIT-PLAN-3.3 [Webhook-Zustellungstest]**: - **Typ**: Integration - **Ziel**: Webhook-Endpunkt - **Erfolgskriterium**: Zustellung < 1s; Retry-Logik funktioniert; Idempotenz gewährleistet - **Tools**: Postman/Newman, Webhook-Testdienst ### 4. Chaos- und Resilienztests - [ ] **APIT-PLAN-4.1 [Netzwerkfehler-Simulation]**: - **Typ**: Chaos - **Ziel**: Service-zu-Service-Kommunikation - **Erfolgskriterium**: Graceful Degradation; keine 500er-Fehlerlawine - **Tools**: Toxiproxy, Chaos Monkey - [ ] **APIT-PLAN-4.2 [Datenbankausfall-Test]**: - **Typ**: Chaos - **Ziel**: Datenbankverbindung - **Erfolgskriterium**: Connection-Pool-Erschöpfung vermieden; Fehlermeldungen aussagekräftig - **Tools**: Manuelles Stoppen des DB-Dienstes, k6 - [ ] **APIT-PLAN-4.3 [Circuit-Breaker-Test]**: - **Typ**: Chaos - **Ziel**: Downstream-Service - **Erfolgskriterium**: Zustandsübergänge (offen/halb-offen/geschlossen) korrekt; Erholung automatisch - **Tools**: Chaos Monkey, manuelle Fehlerinjektion ### 5. Sicherheitstests - [ ] **APIT-PLAN-5.1 [Injection-Test]**: - **Typ**: Sicherheit - **Ziel**: Alle Eingabe-Endpunkte - **Erfolgskriterium**: Keine SQL/NoSQL-Injection möglich; Eingaben validiert - **Tools**: OWASP ZAP, manuelle Payloads - [ ] **APIT-PLAN-5.2 [Authentifizierungs- und Autorisierungstest]**: - **Typ**: Sicherheit - **Ziel**: Alle geschützten Endpunkte - **Erfolgskriterium**: Token-Ablauf, fehlende Berechtigungen korrekt behandelt; keine Informationslecks - **Tools**: Postman, JWT-Testwerkzeuge - [ ] **APIT-PLAN-5.3 [Rate-Limiting-Bypass-Test]**: - **Typ**: Sicherheit - **Ziel**: Rate-Limiting-Mechanismus - **Erfolgskriterium**: Kein Bypass durch Header-Manipulation oder IP-Spoofing - **Tools**: k6, manuelle Header-Tests ### 6. Monitoring und Observability - [ ] **APIT-PLAN-6.1 [Metrik-Setup]**: - **Typ**: Observability - **Ziel**: Gesamte API - **Erfolgskriterium**: Metriken für Request-Rate, Fehlerrate, Latenz-Perzentile, Sättigung vorhanden - **Tools**: Prometheus, Grafana - [ ] **APIT-PLAN-6.2 [Alerting-Konfiguration]**: - **Typ**: Observability - **Ziel**: Kritische Schwellenwerte - **Erfolgskriterium**: Alerts für p95 > 500ms, Fehlerrate > 0,1%, CPU > 70% konfiguriert - **Tools**: Alertmanager, Grafana Alerting - [ ] **APIT-PLAN-6.3 [Synthetisches Monitoring]**: - **Typ**: Observability - **Ziel**: Produktionsendpunkte - **Erfolgskriterium**: Kontinuierliche Validierung alle 5 Minuten; Benachrichtigung bei Ausfall - **Tools**: Synthetisches Monitoring Tool (z.B. Pingdom, Datadog) --- ## API-Testaufgaben ### Performance-Profiling - [ ] **APIT-ITEM-1.1 [Latenz-Baseline für GET /api/v1/users]**: - **Beschreibung**: Misst p50/p95/p99 Latenz unter normaler Last - **Eingabe**: 1000 Anfragen, 50 VUs, 1 Minute - **Erwartete Ausgabe**: p95 < 100ms; Latenzverteilung dokumentiert - **Priorität**: Kritisch - [ ] **APIT-ITEM-1.2 [N+1-Query-Erkennung für GET /api/v1/orders]**: - **Beschreibung**: Analysiert DB-Abfragen auf N+1-Muster - **Eingabe**: APM-Trace für 100 Anfragen - **Erwartete Ausgabe**: Keine N+1-Queries; ineffiziente Abfragen identifiziert - **Priorität**: Hoch - [ ] **APIT-ITEM-1.3 [Cache-Test für GET /api/v1/products]**: - **Beschreibung**: Misst Cache-Hit-Rate und Latenzverbesserung - **Eingabe**: 5000 Anfragen, 100 VUs, 5 Minuten - **Erwartete Ausgabe**: Cache-Hit-Rate > 80%; Latenzverbesserung > 50% - **Priorität**: Hoch ### Last- und Stresstests - [ ] **APIT-ITEM-2.1 [Ramp-Up-Test bis 500 VUs]**: - **Beschreibung**: Erhöht Last schrittweise, um Bruchpunkt zu finden - **Eingabe**: 0 bis 500 VUs, 10 Minuten Ramp-Up - **Erwartete Ausgabe**: Bruchpunkt bei spezifischer VU-Zahl; Fehlerrate dokumentiert - **Priorität**: Kritisch - [ ] **APIT-ITEM-2.2 [Spike-Test mit 10x Last]**: - **Beschreibung**: Simuliert plötzlichen 10x Traffic-Anstieg - **Eingabe**: 50 VUs auf 500 VUs in 10 Sekunden - **Erwartete Ausgabe**: System erholt sich < 5 Minuten; keine dauerhaften Fehler - **Priorität**: Kritisch - [ ] **APIT-ITEM-2.3 [Soak-Test über 4 Stunden]**: - **Beschreibung**: Dauerlast zur Erkennung von Speicherlecks - **Eingabe**: 200 VUs, 4 Stunden - **Erwartete Ausgabe**: Kein Speicheranstieg > 10%; Latenz stabil - **Priorität**: Hoch ### Vertrags- und Integrationstests - [ ] **APIT-ITEM-3.1 [Schema-Validierung für alle GET-Endpunkte]**: - **Beschreibung**: Prüft Antworten gegen OpenAPI-Spezifikation - **Eingabe**: Automatisierte Tests gegen alle GET-Endpunkte - **Erwartete Ausgabe**: 0 Schema-Verstöße; Datentypen korrekt - **Priorität**: Kritisch - [ ] **APIT-ITEM-3.2 [Rückwärtskompatibilität für API v1]**: - **Beschreibung**: Stellt sicher, dass v1-Consumer mit v2-Backend funktionieren - **Eingabe**: Pact-Verträge von v1-Consumern - **Erwartete Ausgabe**: Alle Verträge erfüllt; keine Breaking Changes - **Priorität**: Hoch - [ ] **APIT-ITEM-3.3 [Webhook-Zustellung und Retry]**: - **Beschreibung**: Testet Webhook-Zustellung, Retry-Logik und Idempotenz - **Eingabe**: Simulierte Webhook-Ereignisse mit absichtlichen Fehlern - **Erwartete Ausgabe**: Zustellung < 1s; Retry mit Backoff; keine Duplikate - **Priorität**: Hoch ### Chaos- und Resilienztests - [ ] **APIT-ITEM-4.1 [Netzwerklatenz-Injektion]**: - **Beschreibung**: Fügt 500ms Latenz zwischen Services ein - **Eingabe**: Toxiproxy-Konfiguration für 5 Minuten - **Erwartete Ausgabe**: Timeouts korrekt behandelt; keine 500er-Fehlerlawine - **Priorität**: Hoch - [ ] **APIT-ITEM-4.2 [Datenbank-Verbindungsabbruch]**: - **Beschreibung**: Stoppt DB-Dienst für 2 Minuten - **Eingabe**: Manuelles Stoppen des DB-Containers - **Erwartete Ausgabe**: Aussagekräftige Fehlermeldungen; Connection-Pool-Erschöpfung vermieden - **Priorität**: Kritisch - [ ] **APIT-ITEM-4.3 [Circuit-Breaker-Übergang]**: - **Beschreibung**: Testet offen/halb-offen/geschlossen Zustände - **Eingabe**: Fehlerinjektion bei Downstream-Service - **Erwartete Ausgabe**: Circuit öffnet nach Schwellenwert; halb-offen nach Timeout; schließt nach Erfolg - **Priorität**: Hoch ### Sicherheitstests - [ ] **APIT-ITEM-5.1 [SQL-Injection-Versuch]**: - **Beschreibung**: Sendet bösartige SQL-Payloads an Such-Endpunkte - **Eingabe**: `' OR 1=1 --`, `'; DROP TABLE users; --` - **Erwartete Ausgabe**: Eingaben validiert; keine SQL-Fehler; keine Datenlecks - **Priorität**: Kritisch - [ ] **APIT-ITEM-5.2 [Token-Ablauf und -Validierung]**: - **Beschreibung**: Testet abgelaufene und manipulierte JWT-Tokens - **Eingabe**: Abgelaufenes Token, Token mit falscher Signatur - **Erwartete Ausgabe**: 401-Fehler; keine Daten preisgegeben - **Priorität**: Kritisch - [ ] **APIT-ITEM-5.3 [Rate-Limiting-Bypass-Versuch]**: - **Beschreibung**: Versucht Rate-Limit durch Header-Manipulation zu umgehen - **Eingabe**: `X-Forwarded-For`-Header mit wechselnden IPs - **Erwartete Ausgabe**: Rate-Limit greift weiterhin; kein Bypass möglich - **Priorität**: Hoch ### Monitoring und Observability - [ ] **APIT-ITEM-6.1 [Metrik-Export validieren]**: - **Beschreibung**: Prüft, ob alle Metriken in Prometheus ankommen - **Eingabe**: API-Anfragen generieren; Prometheus abfragen - **Erwartete Ausgabe**: Metriken für Request-Rate, Fehlerrate, Latenz vorhanden - **Priorität**: Hoch - [ ] **APIT-ITEM-6.2 [Alert-Regeln testen]**: - **Beschreibung**: Löst Alerts durch künstliche Last aus - **Eingabe**: Lastgenerierung bis p95 > 500ms - **Erwartete Ausgabe**: Alert wird ausgelöst; Benachrichtigung erfolgt - **Priorität**: Hoch - [ ] **APIT-ITEM-6.3 [Synthetisches Monitoring einrichten]**: - **Beschreibung**: Konfiguriert kontinuierliche Endpunkt-Validierung - **Eingabe**: Pingdom/Datadog-Konfiguration für kritische Endpunkte - **Erwartete Ausgabe**: Checks alle 5 Minuten; Benachrichtigung bei Ausfall - **Priorität**: Mittel --- ## Vorgeschlagene Code-Änderungen ### k6-Lasttest-Skript (`load-test.js`) ```javascript import http from 'k6/http'; import { check, sleep } from 'k6'; export const options = { stages: [ { duration: '2m', target: 100 }, // Ramp-Up { duration: '5m', target: 100 }, // Stabil { duration: '2m', target: 500 }, // Spike { duration: '5m', target: 500 }, // Stress { duration: '2m', target: 0 }, // Ramp-Down ], thresholds: { http_req_duration: ['p(95)<500'], http_req_failed: ['rate<0.01'], }, }; export default function () { const res = http.get('https://api.example.com/api/v1/users'); check(res, { 'Status ist 200': (r) => r.status === 200, 'Antwortzeit < 500ms': (r) => r.timings.duration < 500, }); sleep(1); } ``` ### Pact-Contract-Test (`provider-test.js`) ```javascript const { Verifier } = require('@pact-foundation/pact'); describe('API-Provider-Verifizierung', () => { it('erfüllt alle Consumer-Verträge', async () => { const verifier = new Verifier({ providerBaseUrl: 'https://api.example.com', pactBrokerUrl: 'https://pact-broker.example.com', provider: 'api-service', publishVerificationResult: true, }); await verifier.verifyProvider(); }); }); ``` ### Chaos-Test-Skript (`chaos-test.sh`) ```bash #!/bin/bash # Netzwerklatenz injizieren echo "Füge 500ms Latenz hinzu..." docker run --rm -it toxiproxy-cli create -l localhost:6666 -u localhost:6379 docker run --rm -it toxiproxy-cli toxic add -t latency -a latency=500 # 2 Minuten warten sleep 120 # Latenz entfernen docker run --rm -it toxiproxy-cli toxic remove -t latency echo "Latenz entfernt." ``` --- ## Befehle ### Lokal ```bash # k6-Lasttest ausführen k6 run load-test.js # Pact-Provider-Verifizierung npm run test:pact # Chaos-Test starten ./chaos-test.sh # Sicherheitstest mit OWASP ZAP zap-baseline.py -t https://api.example.com -r zap_report.html ``` ### CI/CD (GitHub Actions) ```yaml name: API-Tests on: [push, pull_request] jobs: load-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: k6-Lasttest run: k6 run load-test.js - name: Pact-Verifizierung run: npm run test:pact - name: Sicherheitstest run: zap-baseline.py -t https://api.example.com -r zap_report.html ``` --- ## Qualitätssicherungs-Checkliste - [ ] Alle kritischen Endpunkte haben Performance-, Vertrags- und Sicherheitstestabdeckung - [ ] Lasttestszenarien decken Baseline, Peak, Spike und Soak ab - [ ] Vertragstests validieren gegen die aktuelle API-Spezifikation - [ ] Resilienztests decken Service-Ausfälle, Netzwerkprobleme und Ressourcenerschöpfung ab - [ ] Testergebnisse enthalten quantifizierte Metriken mit Vergleich zu Ziel-SLAs - [ ] Monitoring- und Alerting-Empfehlungen sind an spezifische SLI/SLO-Schwellenwerte gebunden - [ ] Alle Testskripte sind reproduzierbar und für CI/CD-Integration geeignet

Melde dich an, um den vollständigen Prompt zu sehen

Weiter mit:

Mit der Anmeldung akzeptierst du unsere Nutzungsbedingungen und Datenschutz

Verwendung

Dieser Prompt ist für die Verwendung mit coding gedacht. Kopiere den Inhalt oben und füge ihn in dein bevorzugtes KI-Tool ein.

Für beste Ergebnisse passe die Platzhalter (eckige Klammern oder Großbuchstaben) an deine Anforderungen an.

Referenzen

Kategorien:coding| prompts.chat| api-testing| performance-testing

Diskussion