Was sind Funktionstests?

Unter Feature-Tests versteht man den Softwareentwicklungsprozess, bei dem mehrere Varianten eines Features getestet werden, um das beste Benutzererlebnis zu ermitteln.

Mit Funktionstests kannst du überprüfen, ob eine neue Funktion für eine Webseite oder eine App gut geeignet ist. Gleichzeitig kannst du feststellen, welche Variante des Features am erfolgreichsten sein wird. Wenn der Feature-Test erfolgreich abgeschlossen wird, kannst du das Feature mit der Konfiguration der siegreichen Variante des Feature-Tests einführen.

Wie Feature-Tests funktionieren

Feature-Tests ähneln A/B/n-Tests, bei denen du über Feature Flags (auch Feature Toggles genannt) steuern kannst, ob das zugehörige Feature für jede Variante ein- oder ausgeschaltet ist. Außerdem kannst du die Werte für die verschiedenen Variablen, die mit dem Feature verbunden sind, steuern.

Während die Besucher/innen mit deiner Website oder Anwendung interagieren, sammelt der Funktionstest die Daten über die Nutzung der Funktion. Anhand der Statistiken auf dem Analyse-Dashboard kannst du dann feststellen, ob das Feature zu positivem oder negativem Verhalten führt. Gleichzeitig kannst du auch feststellen, welche Konfiguration des Features am erfolgreichsten ist.

Die Vorteile von Funktionstests

Es gibt eine Reihe von Use-Cases für Feature-Tests:

Überprüfung der Eignung des Features

Mithilfe von Funktionstests kannst du Messwerte sammeln und überprüfen, ob eine Funktion gut geeignet ist und deine Geschäftsanforderungen erfüllt.

Indem du einen Funktionstest einrichtest, kannst du die Funktion für einen bestimmten Teil des Datenverkehrs aktivieren und für den Rest deaktivieren. Auf diese Weise kannst du messen, wie sich deine Kennzahlen entwickeln, wenn die Funktion aktiviert ist, und sie mit denen vergleichen, wenn sie deaktiviert ist.

Bestimme die beste Funktionskonfiguration

Zusätzlich zur Aktivierung/Deaktivierung deiner Funktion auf der Variationsebene kannst du auch einen Funktionstest durchführen, um verschiedene Konfigurationen und Testszenarien für die Funktion zu testen. Auf diese Weise lässt sich das beste Erlebnis für das Feature ermitteln.

Bugs entdecken

Zusätzlich zu den Standardverfahren für Softwaretests wie Unit-Tests und Funktionstests können Feature-Tests eine gute Möglichkeit sein, um Fehler und Probleme zu entdecken, die nur in Randfällen in deiner Produktionsumgebung auftreten können. Indem du neue Funktionen in Feature Flags verpackst, kannst du Fehler schnell beheben, ohne den Code zu implementieren.

Iterieren bis zur Perfektion

Für langfristige Features kannst du immer wieder Feature-Tests durchführen und die beste Konfiguration für sie ermitteln, um das bestmögliche Erlebnis zu erreichen.

Featuretests und kontinuierliche Bereitstellung

Wenn du Feature-Tests in den Prozess der Funktionsbereitstellung einbaust, kannst du Ideen schnell validieren, Metriken überprüfen und feststellen, ob die Funktion für alle Nutzer/innen bereit ist, ohne dass du einen weiteren Code-Deployment durchführen musst. Außerdem kannst du verschiedene Aspekte der Funktion optimieren, indem du mit unterschiedlichen Konfigurationen experimentierst.

Wenn du mit den Ergebnissen zufrieden bist, kannst du die Funktion nach und nach für alle ausrollen, ohne dass du Code bereitstellen musst.

Optimizely und Funktionstests

Mit den serverseitigen Funktionen von Optimizely zur Verwaltung von Funktionen können Produkt- und Entwicklungsteams Feature Flags instrumentieren und Funktionstests damit durchführen. So können sie ihre Hypothesen schnell validieren, die Auswirkungen des Features messen und es dann schrittweise ausrollen. All dies kann erreicht werden, indem die Feature Flags einmal instrumentiert und dann mit Optimizely getestet und ausgerollt werden.

In Optimizely wird bei der Evaluierung eines Features zunächst der zugehörige Feature-Test ausgewertet, um festzustellen, ob der Nutzer durch den Test Zugriff auf das Feature erhalten kann. Wenn nicht, wird der zugehörige Rollout ausgewertet, um den Zugriff auf die Funktion zu bestimmen.

Für Produktentwicklungsteams ist dies eine gute Lösung, da Risiken durch Funktionstests frühzeitig gemindert werden können, bevor ein großer Teil der Arbeit in die Entwicklung und Pflege der Funktion fließt. Es passt auch gut zu den Erfolgsmethoden(n); bewährte Methoden(n) der kontinuierlichen Integration und der kontinuierlichen Bereitstellung, da in Optimizely Feature-Tests und Feature-Rollouts eng miteinander verknüpft sind und sobald der Test die gewünschten Ergebnisse erzielt, kann das Feature ausgerollt werden, ohne dass Änderungen am Code vorgenommen und erneut bereitgestellt werden müssen.

Optimizely bietet derzeit kostenlose Feature Flags über Optimizely free feature flagging an, eine völlig kostenlose Lösung für kontrollierte Feature Releases in deinem Produkt oder deiner App. Rollouts bietet eine Reihe von SDKs auf GitHub für einige der beliebtesten Programmiersprachen und Frameworks, darunter Android, C#, Go, Java, JavaScript, PHP, Python, React, Ruby und Swift.

Feature-Tests sind derzeit als Teil von Optimizely Full Stack verfügbar. Hier kannst du herausfinden, welcher Plan am besten zu deinen Bedürfnissen passt. Auch hier gilt: Du kannst jederzeit mit Optimizely Rollouts beginnen und dein Abo upgraden, um den vollen Funktionsumfang zu erschließen.