Viele betrachten das Testen in Produktionsumgebungen als schädliche Praxis: Es verhindert nicht, dass Probleme die Endbenutzer erreichen, sondern gibt an, dass sie vorhanden sind. Darüber hinaus ist der Tester vom Standardworkflow und den in der Testumgebung verwendeten Techniken getrennt. Mein Name ist Olya Mikhalchuk, ich bin QS-Ingenieur bei der Fintech-Firma ID Finance. In diesem Beitrag werde ich erklären, warum das Testen des Produkts Ihrem Projekt erheblich helfen kann.
Warum benötigen Sie eine Qualitätssicherung für das Produkt, wenn eine Vorproduktionsumgebung vorhanden ist?
Während des Softwareentwicklungsprozesses gibt es immer mehrere Umgebungen, in denen die Anwendung bereitgestellt wird. Die Umgebung, die Endbenutzer verwenden, wird bekanntlich als Produktion bezeichnet. Normalerweise wird davon ausgegangen, dass die Tests in einer separaten Umgebung durchgeführt werden sollten, meistens in einer QS-Umgebung oder in Staging (Pre-Prod), um zu verhindern, dass Fehler die Benutzer erreichen. Es gibt jedoch eine Technik wie QS on Prod, die perfekt dazu beiträgt, Probleme zu lösen, die in einer Testumgebung physikalisch unmöglich zu lösen sind.

Welche Aufgaben hilft die Qualitätssicherung bei Produkten?
1. Das Problem der Unterschiede zwischen Staging- und Produktionsumgebungen.
Die Bereitstellung wird häufig als Kopie der Produktionsumgebung betrachtet, auf die Endbenutzer nicht zugreifen können, die jedoch der Kampfumgebung am ähnlichsten ist. Wenn die Anwendung recht komplex ist, wird das Synchronisieren und Verwalten einer solchen Minikopie zu einer zeitaufwändigen und nicht immer rationalen Aufgabe.
In unserem Projekt wird Pre-Prod beispielsweise eher für Funktionstests in manuell erstellten Testszenarien verwendet. Es verfügt nicht über technische Ressourcen, die mit der Produktionsumgebung vergleichbar sind. Außerdem synchronisieren wir Konfigurationen und Datenbanken normalerweise nicht vollständig mit der Produktionsumgebung, was die Funktionstests nicht beeinträchtigt. Warum kopieren wir nicht die Produktumgebung? Stellen Sie sich vor, wie viele Ressourcen erforderlich wären, um eine Kopie von beispielsweise Facebook mit denselben leistungsstarken Servern, Diensten, Datenbanken und Konfigurationen wie in der Produktion zu erstellen. Auf diese Weise können Sie eine andere Anwendung derselben Art bereitstellen.
Darüber hinaus haben Sie bei der Integration in Dienste von Drittanbietern immer unterschiedliche Einstellungen für die Test- und Kampfumgebung (dieselbe API). Ich sage nicht, dass Test- und Staging-Umgebungen sinnlos sind. Es kann einfach nicht zu 100% garantiert werden, dass nach erfolgreichem Abschluss bestimmter Tests in einer Umgebung die Dienste nicht in eine andere fallen. Zusätzliche Tests für die Produktion können zur Lösung dieses Problems beitragen.
2. Reales Maß an Multitasking und Last.
Einige Fehler können nur bei einem langen und realen Multitasking- und Workload-Level erkannt werden. Dies gilt für Speicherlecks, Stabilität, Geschwindigkeit und Stabilität des Systems. Zum Beispiel hatten wir eine Situation, in der das Problem der Systemleistung aufgrund der Tatsache auftrat, dass zwei ressourcenintensive Aufgaben im selben Zeitintervall ausgeführt wurden. Die Entwickler optimierten die Arbeit der Aufgaben, das Team führte Tests in der Pre-Prod-Umgebung durch, lieferte die Änderungen und führte dann eine Produktionsprüfung durch.
3. Bereitstellungsfehler
Nach der Definition ist die Bereitstellung die Installation einer neuen Version des Serviceprogrammcodes in der Produktionsinfrastruktur durch eine Arbeitsgruppe. Dementsprechend können Bereitstellungsfehler am besten durch Testen im Bereitstellungsprozess selbst erkannt werden.
4. Fehlende Überwachung des Pre-Prod
Eine der besten und unverzichtbarsten Möglichkeiten, um zu steuern, ob die Anwendung wie erwartet funktioniert, ist die Überwachung bestimmter Metriken. Zum Beispiel anhand einfacher und kritischster Beispiele: Überwachung der Anzahl neuer Benutzerregistrierungen pro Stunde, der Umstellung von einer Zielaktion auf eine andere, der Anzahl der ausgegebenen Kredite. Natürlich ist eine solche Überwachung nur in einer Kampfumgebung sinnvoll.
5. Die Möglichkeit, Endbenutzerszenarien für die Verwendung des Systems zu analysieren
Produktion - ein Lagerhaus mit Testfällen für den Tester. Wenn möglich, kann der Tester die von Endbenutzern verwendeten Skripte anzeigen und verarbeiten, der Tester kann die kritischsten Szenarien identifizieren oder die Ursache des Fehlers herausfinden oder beim Testen auf dem Pre-Prod auf nicht triviale Fälle achten.
6. Die Fähigkeit, zuverlässigere Statistiken und Metriken der Softwarequalität zu führen.
Beispielsweise zeigt die Anzahl der Fehler in den Protokollen einer Anwendung oder Komponente, Fehlerberichte und andere Berichte, die ein Pro-Tester erstellen kann, die Qualität der Software realistischer als die gleichen Berichte aus der Testumgebung.
7. Es ist immer besser, wenn der Fehler auf dem Produkt von „Ihrem“ Tester als vom Endbenutzer bemerkt wird.
Normalerweise überprüft der Tester nach der Zustellung der Aufgabe die neuen oder geänderten Funktionen des Produkts grundlegend. Darüber hinaus haben wir eine separate Person in unserem Unternehmen - einen Tester für Produkte. Ich möchte noch einmal darauf hinweisen, dass ich QA nicht als Ersatz für Tests in der Vorproduktion auf Prod positioniere, und es ist natürlich notwendig, Fehler zu verhindern und vorbeugende Maßnahmen zu ergreifen. Solche Tests können jedoch eine großartige zusätzliche Technik sein, um die Qualität Ihres Projekts sicherzustellen.
Nützliche QS-Praktiken für die Produktion, die bei unserem Projekt effektiv funktionieren1. Überprüfen Sie die gelieferten Aufgaben, um sicherzustellen, dass sie gut etabliert sind und in der neuen Umgebung funktionieren.
Wenn wir beispielsweise die Integration mit einem neuen Partner einführen, werden wir zusätzlich zu den Tests auf dem Pre-Prod die Integration nach der Lieferung auf jeden Fall überprüfen, da es je nach Umgebung viele Einstellungen gibt (API, URLs, Komponenten). Es gibt auch Probleme von Drittanbietern - Fehler sind nicht auf unserer Seite, sondern auf der Seite der integrierten Dienste.
2. Protokollierung und Prüfung.
Eine gute Protokollierung hilft Entwicklern und Testern, ein Problem zu erkennen, noch bevor der Endbenutzer es errät, sowie Stellen, die optimiert werden müssen. Eine Prüfung von Aktionen und Änderungen ermöglicht es uns, immer ohne Probleme die Gründe für ein bestimmtes Verhalten herauszufinden. Wenn beispielsweise eine Komponente einer Kreditrichtlinie keine Entscheidung über ein Darlehen treffen kann, wenden wir uns zunächst den Protokollen zu, um zu analysieren, warum dies geschehen ist. Dieser Artikel gilt sowohl für Produktions- als auch für Vorproduktionsumgebungen.
3. Überwachungs- und Warnsystem
Wie oben erwähnt, ist die Überwachung anhand bestimmter Metriken eine der besten Möglichkeiten, um zu kontrollieren, ob mit unserer Anwendung alles in Ordnung ist. Darüber hinaus müssen Sie bei Problemen eine Benachrichtigung an interessierte Parteien senden (z. B. ist die Anzahl der Kreditanträge um 20% geringer als erwartet - wir senden eine Benachrichtigung an IT- und Geschäftsabteilungen, die CPU-Auslastung ist über dem Normalwert - benachrichtigen Sie Administratoren und Jungfrauen). Es muss sichergestellt werden, dass Warnungen zu Problemen rechtzeitig und relevant sind und das Problem wirklich anzeigen.
4. Regressions- und Stabilitätsprüfung
Eine coole Praxis ist es, regelmäßig Regressionstests durchzuführen, um sicherzustellen, dass nirgendwo etwas schief geht. Dies kann in einigen engen und spezifischen Fällen hilfreich sein, wenn bei der Überwachung keine Probleme auftreten.
5. Berichterstattung und Statistik
Wie bei allen Tests machen Berichte und Statistiken über die Ergebnisse der Produkttests den Prozess transparenter, die Qualität der Software und die Ursachen von Fehlern sichtbarer.
Auf dem Pre-Prod können nicht alle Fehler erkannt werden, sodass sie in die Kampfumgebung fallen. Wenn Benutzer sie finden, wirkt sich dies auf den Ruf des Unternehmens und letztendlich auf den Geldverlust aus. Tests am Produkt helfen, dies zu verhindern.