Was API-Lasttests tatsächlich messen
Kapazität: wie viele Anfragen pro Sekunde möglich sind, bevor sich die Latenz verschlechtert. Beantwortet, indem paralleler Traffic erzeugt und dabei Antwortzeiten und Fehlerraten beobachtet werden.
Korrektheit: enthält die Antwort das Richtige. Beantwortet durch Assertions auf den Response-Bodies gegen eine Erwartung.
Ein Lasttest, der nur Statuscodes prüft, meldet einen sauberen Durchlauf, während jede Antwort eine leere Liste enthält. Der Service war schnell und falsch – und schnell und falsch ist schlimmer als langsam und richtig, weil niemand der Sache nachgeht.
Was eine funktionale Testsuite über Last aussagt – und was nicht
Generierte API-Testpläne enthalten Grenzfälle und stressähnliche Fälle: überdimensionierte Payloads, Werte außerhalb des zulässigen Bereichs, ungewöhnliche Parameterkombinationen. Diese decken eine echte Klasse von Fehlern auf, und sie sind kein Lasttest. Sie prüfen Randfälle einzeln, statt das Verhalten unter anhaltender Parallellast zu messen.
Die ehrliche Aufteilung lautet also: Verwenden Sie für Kapazität ein dediziertes Lasttest-Werkzeug. Verwenden Sie für Korrektheit funktionale Verifikation, einschließlich der Randfälle, die nur bei sperrigen Eingaben auftreten. Keines ersetzt das andere, und beides laufen zu lassen ist günstiger, als die Lücke in der Produktion zu entdecken.
Drei Dinge, die Sie prüfen sollten, bevor Sie überhaupt einen Lasttest fahren
Ist es bei einer Anfrage pro Sekunde korrekt
Der Lasttest eines kaputten Endpunkts misst, wie schnell man falsch liegen kann.
Räumt es auf
Ein Lastlauf, der Datensätze anlegt und liegen lässt, verändert das Verhalten des nächsten Laufs.
Ist die Umgebung repräsentativ
Lastergebnisse aus einer Umgebung mit einem Zehntel der Daten sind keine Prognose, sie sind eine Zahl.
Korrektheit unter realistischen Bedingungen
Die Lücke, die zu schließen sich lohnt, liegt nicht zwischen Last- und Funktionstests. Sie besteht darin, dass die meisten funktionalen Suites gegen eine saubere, unbenutzte Umgebung laufen und deshalb nie die Fehler sehen, die auftreten, wenn Datenmengen groß oder Zustände unordentlich sind. Funktionale Prüfungen gegen eine bereits genutzte Umgebung laufen zu lassen, ist ein günstiger Weg, genau diese zu finden.
Terminal
npm install -g @testsprite/testsprite-cli
testsprite setup
Dasselbe Setup ist im TestSprite-Dashboard verfügbar, falls Sie lokal nichts installieren möchten. Der Rest der CLI-Oberfläche findet sich im CLI-Repository.
Die vier Dinge, die darüber entscheiden, ob eine API-Suite Bestand hat – Sessions, erfasste Werte, Reihenfolge und Cleanup –, finden Sie in der Dokumentation zum API-Testing.
Ein Lastergebnis ehrlich lesen
Lastergebnisse werden stärker überinterpretiert als fast jede andere Testausgabe, und das meist in zwei Richtungen.
Eine Zahl aus einer Umgebung, die der Produktion nicht entspricht, ist ein Vergleichspunkt für den nächsten Lauf und nicht mehr. Halbe Datenbank, ein Zehntel der Daten, kein anderer Traffic, eine andere Instanzgröße. Wer diese Zahl als Kapazität präsentiert, sorgt dafür, dass Teams am Launch-Tag von einem Wert überrascht werden, den sie gemessen zu haben glaubten.
Die andere Richtung ist, einen bestandenen Lauf als Beleg für Gesundheit zu nehmen. Wenn der Lauf nur Statuscodes geprüft hat, haben Sie gemessen, dass der Service unter Last schnell antwortet – was er besonders effizient tut, wenn eine Abfrage eine leere Menge zurückgibt. Aktivieren Sie Assertions auf den Response-Bodies für eine Stichprobe der Anfragen, und derselbe Lauf sagt Ihnen etwas.
Korrektheit bei jeder Änderung prüfen
Lasttests gehören auf einen Zeitplan oder vor ein Release. Korrektheit gehört in jeden Pull Request, weil eine Regression dort am günstigsten zu beheben ist.
Die GitHub App ist ein Webhook, den Sie im TestSprite-Dashboard einrichten. Er lauscht auf das Deployment-Event, das Ihre Pipeline ohnehin erzeugt, sodass sich in Ihrem Repository nichts ändert.
GitHub Actions bettet den Schritt in Ihren eigenen Workflow ein, konfiguriert über das Terminal.
Wo TestSprite rund um einen Lastlauf ansetzt
TestSprite deckt die Korrektheitsebene ab, die einer Kapazitätszahl erst Bedeutung gibt. Es prüft die API gegen das von Ihnen erwartete Verhalten, einschließlich Grenz- und Autorisierungsfällen, und meldet, was tatsächlich zurückkam – nicht nur, wie schnell.
Die Abdeckung entsteht aus einem Discovery-Durchlauf über den laufenden Service plus der Spezifikation, die Sie haben; die sperrigen Eingaben sind also enthalten, ohne dass jemand sie schreiben muss. Auto-Authentication hält Sessions über einen Lauf hinweg aktiv, Dynamic Variables tragen Werte zwischen Aufrufen weiter, Dependency Chains leiten die Ausführungsreihenfolge daraus ab, was jeder Fall benötigt und erzeugt, und Auto-Cleanup entfernt genau das, was der Lauf angelegt hat.
Der Nutzen ist ein Fundament unter Ihrer Performance-Arbeit: Bevor Sie einen Tag mit Durchsatzmessungen verbringen, wissen Sie, dass der Endpunkt das Richtige zurückgibt. Anhaltende Parallellast bleibt Sache Ihres Lastgenerators, und beide laufen in unterschiedlichen Takten, ohne sich gegenseitig zu stören.
Macht TestSprite Lasttests?
Nein. Es verifiziert Korrektheit, einschließlich Grenzfällen. Kapazität unter anhaltender Parallellast erfordert ein dediziertes Lasttest-Werkzeug.
Können wir in einem Lasttest Assertions auf Response-Bodies setzen?
Die meisten Lasttest-Werkzeuge unterstützen das, und nur wenige Teams aktivieren es, weil es Durchsatz auf dem Generator kostet. Lohnt sich für eine Stichprobe der Anfragen statt für alle.
Was kommt zuerst?
Korrektheit. Der Lasttest eines Endpunkts, der das Falsche zurückgibt, liefert eine selbstbewusste Zahl über nichts.
Wie oft sollten wir Lasttests durchführen?
Vor Releases und nach architektonischen Änderungen. Kontinuierliche Lasttests sind teuer und liefern zwischen diesen Punkten selten etwas Neues.
Und Lasttests in der CI?
Eine Lastprüfung in Smoke-Test-Größe kann funktionieren. Vollständige Kapazitätstests in der CI bedeuten meist entweder ein bedeutungsloses Lastniveau oder eine sehr langsame Pipeline.
Schnell und falsch ist immer noch falsch.
API-Lasttests beantworten die Kapazitätsfrage. Sie beantworten nicht, ob die Antworten korrekt waren, und ein Lasttest, der nur Statuscodes prüft, besteht auch dann, wenn die API nichts Brauchbares zurückgibt. Nutzen Sie für Kapazität ein dediziertes Werkzeug, verifizieren Sie Korrektheit separat – und beginnen Sie mit der Korrektheit.