Was ist Testen in der Produktion?
Testen in der Produktion (TIP) ist eine Softwareentwicklungspraxis, bei der neue Code-Änderungen auf dem Live-Nutzer-Traffic getestet werden und nicht in einer Staging-Umgebung. Sie ist eine der Testpraktiken, die bei der Continuous Delivery zum Einsatz kommen.
Produktionssoftware ist die Version der Software, die live für echte Nutzer freigegeben wird. Im Gegensatz dazu befindet sich Entwicklungs-, Staging- oder Vorproduktionssoftware noch im Aufbau und steht Endnutzern noch nicht zur Verfügung.
Warum in der Produktion testen?
In der Vergangenheit haben Unternehmen versucht sicherzustellen, dass die von ihnen entwickelte Software in Entwicklungs-, Staging- und Vorproduktionsumgebungen gründlich auf Fehler getestet wurde, bevor sie die Nutzer in der Produktion erreicht. Das frühzeitige Erkennen von Fehlern verhindert, dass Nutzer Fehler sehen, und steigert das Kundenvertrauen sowie die allgemeine Zufriedenheit mit einer Marke und ihren Produkten.
Das Auffinden aller Fehler in der Entwicklung und im Staging ist jedoch nicht einfach. Engineering- und QA-Teams können viel Zeit und Aufwand darauf verwenden, Unit-Tests, Test-Suites und Test-Automatisierungssysteme zu entwickeln, die Produktionsumgebung zu simulieren oder User Flows mit Pseudonutzerdaten und Testfällen manuell zu überprüfen, um Fehler aufzudecken – nur um am Ende festzustellen, dass ein wesentlicher Sonderfall übersehen wurde. Letztlich können viele Nutzer fehlerhafte Software erleben, selbst nachdem viel Zeit für Tests in der Entwicklung aufgewendet wurde.
In vielen Fällen ist es unmöglich, Live-Software der realen Welt vollständig in einer Testumgebung zu simulieren. Angesichts all der Abhängigkeiten in modernen Produktionssystemen und der vielen möglichen Randfälle ist das Testen in der Produktion zu einem notwendigen Bestandteil von DevOps und Softwaretests geworden. Führende Softwareunternehmen wie Google, Netflix und Amazon veröffentlichen ständig neue Funktionen für einen Bruchteil ihres Traffics, um die Auswirkungen zu messen.
Produktionstests und Feature Flags
Mit dem Aufkommen von Feature Flags (auch bekannt als Feature Toggles und Feature-Rollouts), die es Engineering-Teams ermöglichen, neue Software nur einem Bruchteil des Live-Produktions-Traffics auszusetzen, können Unternehmen experimentelle oder neue Funktionen einem kleinen Teil ihres Produktions-Traffics zeigen, um schnell zu überprüfen, ob ihre Software wie erwartet in Echtzeit funktioniert – und dabei eine sichere Möglichkeit zu haben, nicht erkannte Fehler über einen Feature Flag Kill Switch oder Rollback rückgängig zu machen.
Das Ausführen von Tests in der Produktion über Rollouts oder Feature Flags ermöglicht es, alle Produktdaten, Abhängigkeiten und Randfälle in umfassenden Integrationstests zu berücksichtigen. Das Vorhandensein von Echtdaten kann besonders wertvoll sein, wenn Leistungstests oder Lasttests durchgeführt werden.
Feature Flag-Tools haben zudem den zusätzlichen Vorteil, dass sie A/B-Testing ermöglichen, bei dem die neue Funktion mit der vorherigen Version der Software verglichen wird, um zu sehen, welche zu einer besseren Nutzererfahrung auf Basis von Produktionsdaten führt. Dies ermöglicht es Software-Ingenieuren nicht nur sicherzustellen, dass ihre neuen Funktionen fehlerfrei sind, sondern auch mithilfe echter Daten zu validieren, dass die Änderung die gesamte Softwareerfahrung tatsächlich verbessert.
Wenn Ihr Team Tests in der Produktion durchführen möchte, bietet Optimizely Free Feature Flagging unbegrenzte kostenlose Feature Flags und Rollouts auf einer unternehmensgerechten Plattform.