Spring GDS 25. Jubiläum
Ein Logistikunternehmen, das in 190 Länder versendet, hat etwas gebaut, um an sich selbst zu liefern.
Funktionale Tests prüfen, ob eine Funktion das tut, was die Anforderungen verlangen. Sie geben eine Eingabe, Sie vergleichen die Ausgabe mit dem erwarteten Ergebnis. Zieht der Rabattcode 10 % vom Gesamtbetrag ab? Liefert das Suchfeld passende Produkte? Wird ein falsches Passwort abgewiesen? Es behandelt die Software als Blackbox. Was im Code passiert, ist egal, nur dass das Verhalten korrekt ist.
Das unterscheidet sie von nicht-funktionalen Tests, die Eigenschaften wie Geschwindigkeit, Sicherheit oder die Belastbarkeit unter Last messen. Funktionale Tests beantworten "funktioniert es", nicht "wie gut". Sie liegen auch auf anderer Ebene als End-to-End-Tests. Funktionale Tests prüfen meist eine Fähigkeit gegen ihre Spezifikation, während E2E viele Fähigkeiten zu einer vollen Nutzerreise über echte Systeme verkettet. Ein funktionaler Test könnte bestätigen, dass der Endpunkt "Passwort zurücksetzen" eine E-Mail sendet; ein E2E-Test folgt dem Link, setzt ein neues Passwort und meldet sich wieder an.
Funktionale Tests reichen über jede Detailebene. Ein Unit-Test einer einzelnen Preisfunktion ist funktional. Genauso ein manueller Tester, der ein Registrierungsformular durchklickt. Genauso eine automatisierte Suite, die eine API anspricht und die Antwort prüft. Der rote Faden ist derselbe: Verhalten gemessen an einer definierten Anforderung. Deshalb machen klare Akzeptanzkriterien funktionale Tests weit nützlicher als vage.
Wir binden funktionale Tests an Anforderungen, nicht an Vermutungen darüber, was eine Funktion tun könnte. Wenn wir zu Beginn mit einem Kunden Akzeptanzkriterien vereinbaren, werden daraus später die Prüfungen. Ein Test, der auf eine schriftliche Anforderung abbildet, sagt etwas aus. Ein Test, der auf nichts abbildet, bläht nur die Zahlen auf.
Das meiste davon läuft als automatisierte Tests in der Pipeline, sodass jede Änderung vor dem Merge gegen die Spezifikation geprüft wird. Wir lassen die schnellen funktionalen und Integrationstests die Hauptlast tragen und behalten langsamere Durchläufe über die ganze Reise den Abläufen vor, die echtes Risiko tragen. Wenn das Produkt eines Kunden schneller gewachsen ist als seine Testsuite, helfen wir, diese Lücke zu schließen: festlegen, was jede Funktion tun soll, und die Tests es dann beweisen lassen.
Wollen Sie wissen, dass Ihre Funktionen wirklich halten, was sie versprechen? Prüfen wir es.
Ein Logistikunternehmen, das in 190 Länder versendet, hat etwas gebaut, um an sich selbst zu liefern.
Eine Marke in ein funktionierendes Geschäft verwandeln.
Eine halbe Million Menschen. Eine App. Null Chaos.















