Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für diese Azure Well-Architected Framework Operational Excellence-Checkliste:
| OE:09 | Verbessern Sie die Qualität Ihrer Arbeitsauslastung, indem Sie Testpraktiken einführen, die den Geschäftlichen Zielen entsprechen und Qualitätsstandards einhalten. |
|---|
Wenn Sie eine Änderung an Ihrer Workload einführen, müssen Sie sicherstellen, dass sie wie beabsichtigt funktioniert und keine neuen Probleme verursachen. Tests sind die Bewertung dieser Änderungen. Es ist eine wichtige Praxis, um Qualität aufrechtzuerhalten und Vertrauen in Ihre Arbeitsauslastung zu schaffen.
Effektive Tests bieten eine zuverlässige, qualitativ hochwertige Arbeitsauslastung. Sie verhindert, dass Defekte in die Produktion gelangen, kostspielige Überarbeitungen und Verzögerungen reduzieren und Ihre Arbeit während des gesamten Entwicklungslebenszyklus mit den Geschäftszielen in Einklang hält.
Dieser Artikel enthält Strategien, mit denen Sie durch effektive Testpraktiken eine qualitativ hochwertige Arbeitsauslastung bereitstellen können. Sie dient als grundlegende Anleitung für die spezielle Testanleitung in anderen Säulen wie Leistung, Zuverlässigkeit und Sicherheit.
Implementierungsanleitungen zu Testpraktiken finden Sie im Begleitartikel: Erstellen sie Vertrauen in Azure Workloads mit effektiven Testpraktiken.
Formalisieren Ihrer Teststrategie und Ihres Plans
Ihre Teststrategie und Testpläne sind wesentliche Artefakte. Sie bieten eine klare Roadmap für Ihre Testbemühungen und stellen sicher, dass alle an den gleichen Qualitätszielen arbeiten.
Definieren Sie Ihre Teststrategie
Ihre Teststrategie ist ein übergeordneter Plan, der Ihren Testansatz leitet. Es definiert Ihre Testziele, Umfang, Methoden, Tools, Rollen und Zuständigkeiten. Es hilft Ihnen, fundierte Entscheidungen zu Testprioritäten, Ressourcenzuordnung und Risikomanagement zu treffen. Außerdem wird erfasst, wie Sie mit Projektbeteiligten kommunizieren und Ergebnisse melden.
Eine gut definierte Teststrategie erhält Buy-In von Projektbeteiligten und stellt sicher, dass alle Teammitglieder konsistente Qualitätsstandards einhalten. Es bietet Richtung und Struktur, richtet Tests an geschäftsziele aus und schützt langfristige Qualität.
Ihre Teststrategie bleibt in der Regel in allen Versionen für eine bestimmte Workload konsistent. Passen Sie sie jedoch immer an, um die spezifischen Anforderungen und geschäftlichen Ziele dieser Arbeitsauslastung widerzuspiegeln.
Hinweis
Wenden Sie nicht dieselbe standardisierte Strategie auf verschiedene Workloads an. Sie haben einzigartige Überlegungen, die einzigartige Ansätze benötigen.
Erstellen Ihres Plans
Sobald Sie die Teststrategie mit Ihrem Team vereinbart haben, formalisieren Sie sie in einem Testplan mit Anwendungsfällen, die auf geschäftsziele ausgerichtet sind.
Ihr Testplan ist ein detailliertes Dokument, das die Testausführung für eine bestimmte Freigabe anleitet. Er beschreibt den Umfang der Tests, spezifische Testfälle, Fehlerberichte, Zeitachsen, Ressourcenzuordnungen sowie Einstiegs- und Ausgangskriterien für Testaktivitäten.
Ein gut strukturierter Testplan macht Tests effizient und abgestimmt auf die Ziele und Zeitachsen der Veröffentlichung. Es ist Ihr Referenzpunkt, um den Fortschritt nachzuverfolgen und fundierte Entscheidungen während des gesamten Tests zu treffen.
Beispiel: Bei einem E-Commerce-Checkout-System definiert die Teststrategie, dass Zahlungsflüsse immer priorisiert werden, gibt Testtools für das System an, z. B. JMeter für Lasttests. Es verdeutlicht die Teamverantwortlichkeiten für verschiedene Testtypen.
Der Testplan für eine Version konzentriert sich auf das Hinzufügen des Apple Pay-Supports. Es definiert genau, was für Apple Pay in dieser Version getestet werden soll, Ressourcen zuordnet (zwei Ingenieure und drei iOS-Geräte), legt einen vierwöchigen Zeitplan fest und legt klare Einstiegskriterien (Code abgeschlossen und Umgebung konfiguriert) und Beendigungskriterien (alle Tests bestehen und null kritische Fehler).
Hinweis
Beginnen Sie nicht mit dem Testen, bevor Sie Ihre allgemeine Teststrategie und Ihren Plan klar definieren. Ein solider Testplan sorgt dafür, dass Ihre Bemühungen fokussiert und an Workloadziele ausgerichtet sind.
Testen Sie frühzeitig, häufig, testen Sie, was wichtig ist
Beginnen Sie mit dem Testen in den frühesten Phasen Ihres Softwareentwicklungslebenszyklus. Wenn Sie kritische Probleme spät finden, werden Sie mit erhöhten Überarbeitungen und langsameren Versionen konfrontiert. Zu häufig übersehen Architekten die Testanforderungen in der Entwurfsphase, was sich negativ auf die Gesamtqualität auswirkt.
Entwickler sollten eine Denkweise zur Qualitätssicherung übernehmen. Denken Sie auch während des Entwurfs an Tests. Verwenden Sie sie, um Anforderungen zu klären und potenzielle Einschränkungen zu erkennen. Machen Sie das Testen eines integralen Teils Ihres Entwicklungsprozesses. Übernehmen Sie die Verantwortung für das Schreiben und Verwalten von Tests zusammen mit Ihrem Code.
Wenn Sie Probleme frühzeitig erkennen, können Sie schnell reagieren. So können Sie beispielsweise wichtige Entwurfsänderungen priorisieren, die sich auf die Benutzererfahrung gegenüber Routinefehlerbehebungen auswirken. Durch frühzeitiges Handeln werden Last-Minute-Überraschungen und Verzögerungen reduziert.
Das Testen ist kein einmaliges Ereignis. Test en Sie auch nach dem Start weiterhin als Teil einer kontinuierlichen Test-Mentalität. Überprüfen, aktualisieren und erweitern Sie Ihre Testsuite regelmäßig, um neue Features abzudecken und Fehler zu beheben, die in der Produktion entdeckt wurden, um eine langfristige Qualität aufrechtzuerhalten.
Hinweis
Verzögern Sie Tests in großen Batches nicht bis spät in den Lieferzyklus hinein. Verzögerte Tests führen zu verpassten Problemen, erhöhten Überarbeitungen und langsameren Versionen.
Kompromiss. Frühe und kontinuierliche Tests können die Betriebskosten erhöhen und die Entwicklung zunächst verlangsamen oder Teamreibung schaffen. Treffen Sie ein Gleichgewicht, identifizieren Sie, welche Tests und Änderungen frühzeitig erforderlich sind und welche Sie zu späteren Phasen zurückstellen können. Dies sorgt für Effizienz ohne Kompromisse bei der Qualität.
Testen in der Produktion mit Sicherheitsvorkehrungen
Selbst bei starken Test- und Validierungspraktiken treten einige Probleme nur unter echtem Produktionsverkehr auf. Um Probleme zu finden, die Sie nicht simulieren können, führen Sie in der Produktion kontrollierte Tests mit Schutzmaßnahmen durch, die die Benutzerexposition begrenzen und das Risiko verringern.
Planen, Isolieren und Überwachen aller Produktionstests Wenn Sie dies tun, erhalten Sie echte Benutzerfeedback- und Leistungsdaten, ohne alle anderen zu stören.
Erwägen Sie progressive Expositionsstrategien, z. B. Canary-Versionen, erst, nachdem Ihre Workload Beendigungskriterien erfüllt und eine starke Qualität demonstriert. Bei diesem Ansatz werden Updates für eine kleine, zielgruppenorientierte Benutzergruppe zuerst veröffentlicht, sodass Sie probleme schnell aufdecken können, die in Vorabversionen nicht angezeigt werden. Mit diesem Ansatz beschleunigen Sie Ihren Testprozess und reduzieren möglicherweise die damit verbundenen Kosten.
Überwachen Sie die Produktionstests kontinuierlich , um Probleme frühzeitig zu finden. Implementieren Sie automatisierte Schutzmaßnahmen, die Tests anhalten, wenn sie sich negativ auf Benutzer auswirken, z. B. automatisierte Rollbackmechanismen und Echtzeitwarnungen. Diese Techniken stellen eine schnelle Reaktion sicher und minimieren Unterbrechungen.
Risiko: Seien Sie vorsichtig, wenn Sie in der Produktion testen, da sie sich direkt auf echte Kunden auswirkt. Implementieren Sie immer Schutzmaßnahmen und begrenzen Sie die Exposition, um potenzielle negative Auswirkungen auf Ihr Unternehmen zu minimieren.
Verwenden Sie einen mehrschichtigen Ansatz in der Testabdeckung
Eine Mehrschicht-Testabdeckungsstrategie bietet Ihnen schnelles Feedback, frühere Fehlererkennung und schnellere Freigaben. Wenn Sie Tests auf Ebenen strukturieren, können Sie Fehler schnell isolieren und debuggen, sodass Sie Probleme leichter anheften und beheben können.
Verwenden der Testpyramide als Leitfaden
Das Testpyramidenmodell veranschaulicht diesen mehrschichtigen Ansatz für die Testautomatisierung. Sie verteilt Tests auf verschiedenen Ebenen, um die Abdeckung zu maximieren und gleichzeitig die Ausführungszeit und Wartungskosten zu minimieren.
- Basisebene: Komponententests überprüfen einzelne Komponenten isoliert. Sie laufen schnell und geben sofortiges Feedback.
- Mittlere Ebene: Integrationstests überprüfen die Interaktionen zwischen Komponenten und Diensten. Sie werden langsamer als Komponententests ausgeführt, bieten jedoch eine breitere Abdeckung des Systemverhaltens.
- Oberste Ebene: End-to-End-Tests validieren Benutzerreisen durch das gesamte System und simulieren reale Szenarien. Diese Tests laufen am langsamsten, bieten jedoch die größte Sicherheit in Bezug auf die Gesamtqualität.
Sie können Base- und Middle Layer-Tests einfacher in Ihre Pipelines integrieren, da sie minimale Abhängigkeiten aufweisen. Diese Integration ermöglicht schnelles Feedback, wenn Tests fehlschlagen, und lässt den Build-Prozess sofort stoppen, um zu verhindern, dass fehlerhafter Code weiter voranschreitet.
Wenn ihre Testabdeckung wächst, kann sich die Ausführungszeit der Pipeline erheblich erhöhen. Verwalten Sie eine schnelle Feedbackschleife, indem Sie parallele und verteilte Testausführungsstrategien verwenden und Pipelines auch dann effizient halten, wenn die Abdeckung zunimmt.
Hinweis
Schließen Sie nicht jeden möglichen Test in die anfängliche Buildpipeline ein, die Ihren Code kompiliert und überprüft. Diese Wahl verlangsamt Veröffentlichungszyklen und besteht das Risiko, dass wichtige Tests umgangen werden. Konzentrieren Sie sich auf Tests, die kritische Workflows direkt schützen und ein sinnvolles Vertrauen in die Systemqualität bieten.
Kompromiss. Es gibt einen Kompromiss zwischen Testabdeckung und Pipelineeffizienz. Während größere Testsuiten die Abdeckung erhöhen, erhöhen sie auch die Ausführungszeit und die Kosten. Sie liefern nicht immer eine sinnvolle Rendite für Investitionen.
Separate Anwendungs- und Infrastrukturtests
Erstellen Sie eine klare Segmentierung zwischen dem Testen des Anwendungscodes und dem Infrastrukturcode.
Trennen Sie Tests, indem sie überprüfen und wer sie besitzt, dann Integrationstests hinzufügen, die bestätigen, dass beide Ebenen zusammenarbeiten. Anwendungscodetests sollten sich auf die Überprüfung des Verhaltens Ihrer Workload konzentrieren. Infrastrukturcodetests sollten sich auf die Überprüfung der Bereitstellung und Konfiguration Ihrer Infrastruktur konzentrieren.
Fügen Sie layerübergreifende Tests hinzu, die die Anwendung und Infrastruktur gemeinsam ausüben. Infrastrukturtests allein können Ihnen ein falsches Vertrauen verleihen. Ihr IaC-Modul stellt möglicherweise jede Ressource richtig bereit, aber wenn die Anwendung diese Ressourcen nicht tatsächlich verwenden kann, schlägt die Workload immer noch fehl. Überprüfen Sie Ihre Infrastruktur, indem Sie das Anwendungsverhalten beobachten, indem Sie die Software bereitstellen und Tests ausführen. Ein einfacher Rauchtest gegen einen Gesundheitsendpunkt fängt diese Lücke schnell auf.
Integrieren verschiedener Testtypen
Verwenden Sie verschiedene Testmethoden während der gesamten Workload. Das Abschließen von Unittests bedeutet nicht, dass man mit dem Testen fertig ist. Jeder Aspekt Ihrer Arbeitsauslastung benötigt einen eindeutigen Ansatz. Mehrere Testtypen verbessern die allgemeine Qualität und schaffen vertrauen, dass das System wie beabsichtigt funktioniert.
Verwenden Sie das richtige Tool für den Auftrag. Identifizieren Sie Tools, die für verschiedene Arten von Tests erforderlich sind. Wenn Sie kein Tool haben, kaufen Sie das Tool. Erstellen Sie sie nicht, da sie Risiken mit sich bringen kann. Recherchieren Sie die Tools und deren Features, z. B. Lizenzierungskosten und ob die Tools direkt in Ihre Workloadanforderungen integriert werden. Bewerten Sie die Expertise des Teams für jedes Tool und prüfen Sie Kompatibilität und Integrationsfähigkeit, indem Sie einen Proof of Concept durchführen. Nutzen Sie den Support und die Schulungen, die für die Tools zur Verfügung stehen, wenn das Workloadteam nicht über dieses Fachwissen verfügt.
Wählen Sie den richtigen Testtyp basierend auf Ihrem Workloadfälligkeits- und Risikoprofil aus. Beginnen Sie mit der funktionalen Überprüfung über die Testpyramidenebenen, und fügen Sie dann nicht funktionale Tests wie Leistung, Sicherheit und Resilienz hinzu. Richten Sie Ihre Auswahl des Testtyps mit den kritischen Szenarien und Risiken Ihrer Workload aus.
In der folgenden Tabelle wird gezeigt, wann verschiedene Testtypen während des gesamten Testzyklus angewendet werden sollen. Jede behebt spezifische Risiken. Obwohl diese Tabelle keine vollständige Liste aller möglichen Testtypen ist, dient sie als illustratives Beispiel.
| Testtyp | Hauptzweck | Wann zu verwenden | Kosten & Überlegungen |
|---|---|---|---|
| Manuelle Tests | Überprüfen Sie Szenarien, die menschliches Urteil, exploratives Lernen, Benutzerfreundlichkeit und UX-Nuancen erfordern. | Frühe Entwicklung, Benutzeroberflächenänderungen, mehrdeutige Flüsse oder wenn die Automatisierung nicht machbar ist. | Hohe Kosten, geringe Skalierbarkeit - Verwenden Sie sparsam und konzentrieren Sie sich auf Bereiche, in denen menschliche Erkenntnisse unersetzbaren Wert schaffen. |
| Komponententests | Überprüfen Sie einzelne Komponenten oder Funktionslogik isoliert. | Kontinuierlich während der Entwicklung. | Niedrigste Kosten und höchster Wert – Schnell, zuverlässig und kritisch für die Verhinderung von Regressionen. Streb eine breite Abdeckung an. |
| Integrationstests | Überprüfen Sie Interaktionen zwischen Komponenten, APIs, Verträgen und gemeinsamen Diensten. | Wenn Komponenten und Dienste für die Interaktion oder die Integration neuer Abhängigkeiten bereit sind. | Mittlere Kosten - Wesentlich für den frühzeitigen Abfangen von Fehlkonfigurationen und Interaktionsfehlern. |
| Vertragstests | Stellen Sie sicher, dass Ihr Dienst weiterhin die Interaktionen erfüllt, von denen seine Verbraucher abhängig sind, ohne dass vollständige Integrationstests erforderlich sind. | Wenn Sie eine API ändern, von der andere Teams oder Dienste abhängig sind, insbesondere über unabhängige Release-Zyklen hinweg. | Mittlere Kosten - Frameworks existieren, die Ihnen helfen, Die Erwartungen der Verbraucher zu erfassen und sie als Tests in Ihrer eigenen Pipeline wiederzugeben. |
| End-to-End-Tests (E2E) | Überprüfen Sie die Richtigkeit des vollständigen Workflows im gesamten System, von der Benutzeraktion bis hin zu Backend-Diensten. | Wenn sich die Kern-Benutzerreisen stabilisiert haben und automatisiert werden können. | Hohe Kosten und zerbrechlich – Selektiv für die geschäftskritischen Abläufe verwenden. |
| Testen der Benutzeroberfläche | Erkennen visueller, Layout- und Interaktionsregressionen. | Nach der Stabilisierung des UI-Designs oder wenn visuelle Treue eine Anforderung für den Release ist. | Hohe Wartungskosten – Beschränken Sie sich auf kritische Benutzeroberflächenpfade und Barrierefreiheitskritische Szenarien. |
| Auslastungs- und Leistungstests | Überprüfen Sie die Leistung, Latenz, Durchsatz und Skalierbarkeit unter erwarteter Workload. | Beginnen Sie so früh wie möglich und wiederholen Sie, wenn sich die Architektur weiterentwickelt. | Hohe Kosten, aber für die Produktionsbereitschaft erforderlich, insbesondere für kundenorientierte Workloads. |
| Belastungstests | Legen Sie Systemgrenzwerte, Unterbrechungspunkte und Wiederherstellungsverhalten fest. | Vor Produktionsbereitschaft oder großen Architektonischen Änderungen. | Hohe Kosten bieten Resilienzeinblicke – Selektiv ausgeführt aufgrund von Auswirkungen auf die Umgebung. |
| Sicherheitstests | Identifizieren Sie Sicherheitsrisiken, Fehlkonfigurationen und Angriffsvektoren. | Wenden Sie es während des gesamten Entwicklungslebenszyklus an. | Mittlere, aber extrem hohe Kosten – kritisch zum Schutz von Daten, Zur Einhaltung von Compliance und zur Verringerung des Geschäftsrisikos. |
Kombinieren Sie verschiedene Testtypen, um Ihre Workload aus mehreren Blickwinkeln auszuwerten. Führen Sie eine Mischung aus, sodass Sie Probleme abfangen, die jeder Test verpassen würde.
Priorisieren Sie Testtypen basierend auf geschäftsbezogenen Auswirkungen und Risiken. Bewerten Sie jedes Feature oder jede Änderung basierend auf ihren potenziellen Auswirkungen und den damit verbundenen Risiken. Heben Sie für kundenorientierte Workloads End-to-End- und UI-Tests hervor. Konzentrieren Sie sich für API-gesteuerte Workloads auf Integrations- und Vertragstests. Für Hochverfügbarkeitssysteme investieren Sie in Resilienz- und Chaostests.
Kompromiss. Priorisieren Sie Sicherheitstests am Anfang des Releaseprozesses. Dieser Ansatz trägt dazu bei, Sicherheitsrisiken zu verhindern und sicherere Bereitstellungen zu gewährleisten. Diese Priorität kann jedoch das Tempo verlangsamen, in dem Sie neue Features für die Produktion bereitstellen.
Behandeln Sie Testressourcen ebenso wichtig wie Code-Ressourcen.
Testressourcen erfassen wichtige Geschäftsregeln, Edgefälle, historische Fehlermuster und wertvolles Organisationswissen. Wenn die Testqualität beeinträchtigt wird, verschwenden Teams Zeit beim Debuggen unzuverlässiger Tests, anstatt echte Fehler zu finden. Diese Situation verursacht Frustration, und Entwickler verlieren vertrauen in das Testframework.
Behandeln Sie Testressourcen mit demselben Rigor wie Coderessourcen. Die volle Verantwortung für Ihre Testressourcen erhöht sowohl die Zuverlässigkeit als auch die allgemeine Qualität Ihres Testframeworks.
Strukturieren und Sichern Ihrer Tests
Strukturtestcode mit den gleichen Architekturprinzipien wie Ihr Anwendungscode.
Halten Sie Ihre Tests zusammen mit Ihrem Code im selben Repository , um die Wartung zu optimieren und Konsistenz zu fördern.
Implementieren Sie gleichwertige Governance-Steuerelemente wie obligatorische Codeüberprüfungen, Pullanforderungsrichtlinien und Erstellen von Validierungspipelines, um Qualitätsstandards aufrechtzuerhalten.
Versionieren Sie Ihre Testdaten zusammen mit Ihrem Code. Wenn Sie Datenschemas oder Geschäftsregeln ändern, aktualisieren Sie Testdaten so, dass sie dem aktuellen Workloadstatus entsprechen.
Führen Sie die grundlegende Überprüfung Ihrer eigenen Tests durch, um sicherzustellen, dass sie wie erwartet funktionieren. Fehler sollten auf tatsächliche Anwendungsprobleme und nicht auf Testfehler verweisen. Stellen Sie sicher, dass Tests ordnungsgemäß fehlschlagen und konsistent bestehen, wenn der Workload fehlerfrei ist. Behandeln Sie unzuverlässige Tests umgehend, und stellen Sie sicher, dass Testassertionen die Absicht jedes einzelnen Tests verstärken.
Richten Sie Methoden ein, die die Testunabhängigkeit und Zuverlässigkeit sicherstellen, z. B. Testdaten isolieren, gemeinsam genutzten Zustand vermeiden und automatisierte Einrichtungs- und Abbruchprozesse implementieren.
Designtests für parallele Ausführung. Um von der parallelen Testausführung zu profitieren, entwerfen Sie Ihre Tests so, dass sie unabhängig sind, damit sie in beliebiger Reihenfolge ausgeführt werden können, ohne die Ergebnisse zu beeinträchtigen. Unabhängige Tests sollten immer eigene Daten und Abhängigkeiten einrichten und abbauen, sodass Zustände nicht in die nächste Testausführung übertragen werden.
Wenn Ihre Anwendung Sequenzierung in Tests erfordert, verwenden Sie Testframeworks, die die geordnete Testausführung unterstützen.
- Implementieren Sie sichere Codierungsmethoden in Ihrem Testcode, um Sicherheitsrisiken zu verhindern. Tests interagieren häufig mit Produktionsdaten und -systemen, wodurch Risiken aus importierten Bibliotheken oder anfälligen Testcode entstehen können. Behandeln Sie Tests mit den gleichen Sicherheitsstandards wie Produktionscode.
Halten Sie Testressourcen an den aktuellen Verwendungsmustern ausgerichtet
Ihre Leistungstestressourcen enthalten wichtige Kenntnisse über das erwartete Verhalten Ihrer Workload, akzeptable Leistungsschwellenwerte und realistische Datenverkehrsmuster.
Organisieren Sie Testsuiten nach Typ. Halten Sie Belastungstests, Stresstests und Ausdauertests in separaten Suiten. Mischen Sie sie nicht. Jeder Typ weist unterschiedliche Setupanforderungen, Laufzeiten und Erfolgskriterien auf. Organisierte Suites vereinfachen die Ausführung gezielter Tests, vergleichen Ergebnisse über Läufe hinweg und verwalten jede Suite unabhängig voneinander.
Aktualisieren Sie Testdaten regelmäßig. Veraltete Testdaten führen zu unrealistischen Ergebnissen. Generieren Sie Testdaten neu, um aktuelle Produktionsdatenmerkmale widerzuspiegeln, wenn sich Ihr Datenmodell ändert, Datenvolumen wachsen oder die Benutzerdemografie verschoben wird.
Überprüfen Sie Testszenarien, während sich Ihre Workload weiterentwickelt. Planen Sie regelmäßige Überprüfungen, um sicherzustellen, dass Ihre Szenarien weiterhin die tatsächliche Nutzung widerspiegeln.
Ihre Testdaten sollten wie echte Produktionsdaten aussehen. Verwenden Sie synthetische Daten mit Produktionsdatenmerkmalen. Reservieren Sie Produktionsdatensätze (ordnungsgemäß anonymisiert) für bestimmte Szenarien, z. B. zum Hervorheben von Datenverwaltungsverhalten wie Transaktionskonsistenz, Latenz und Volumenbehandlung.
Verwalten und Entwickeln Ihrer Tests
Die Aufrechterhaltung Ihrer Testressourcen ist entscheidend für die Erhaltung der Arbeitsauslastungsqualität. Diese Ressourcen enthalten häufig wertvolle Organisationskenntnisse. Wenn Sie sie nicht regelmäßig pflegen, werden sie schnell veraltet und unterminieren ihre Effektivität und Ihre Fähigkeit, qualitativ hochwertige Versionen bereitzustellen.
Während sich Ihre Arbeitsauslastung weiterentwickelt, müssen sich Ihre Testressourcen parallel entwickeln, um mit den Geschäftszielen in Einklang zu bleiben.
Beginnen Sie mit einer kleinen Regressionssuite und erweitern Sie sie gezielt. Ihre Regressionstestsuite sollte Ihre wertvollsten und stabilsten Tests enthalten. Fügen Sie Tests hinzu, wenn Produktionsvorfälle auftreten, wenn Sie kritische Fehler beheben und änderungen mit hohem Risiko einführen.
Automatisieren Sie Ihre Regressionssuite so, dass sie konsistent ohne menschliche Eingriffe ausgeführt wird. Erstellen Sie schnelle Feuerproben, die bei jedem Commit ausgeführt werden, und umfassendere Regressionstests, die nachts oder vor der Freigabe ausgeführt werden.
Halten Sie sowohl Testautomatisierungs-Skripts als auch Testfälle synchron. Testfälle erfassen die Absicht, den Umfang und die erwarteten Ergebnisse. Wenn Automatisierungsskripts von ihren entsprechenden Testfällen abweichen, ist es schwierig, zu verfolgen, was überprüft wird, was zu Lücken bei der Abdeckung und Rechenschaftspflicht führt.
Planen Sie proaktiv regelmäßige Updates für Ihre Testfälle , während Sie neue Features und Verbesserungen für Ihre Workload einführen. Wenn Sie einen Testfall automatisieren, verknüpfen Sie die Automatisierung mit dem ursprünglichen Testfall, damit Sie die Abdeckung nachverfolgen können.
Verwalten von technischen Schulden aus Tests
Planen Sie regelmäßige Testwartungs-Sprints, um die Ansammlung technischer Schulden anzugehen, bevor sie überwältigend wird. Unzuverlässige Tests, doppelte Abdeckung, veraltete Tests und schlechtes Testdesign tragen alle zu Testschulden bei.
Priorisieren Sie das Beheben oder Entfernen unzuverlässiger Tests , um die Integrität Ihrer Testsuite aufrechtzuerhalten. Ein kleinerer Satz zuverlässiger Tests ist wertvoller als ein großer Satz instabiler Tests.
Treffen Sie strategische Entscheidungen zum Überspringen oder Zurückstellen von Tests. Ziehe in Betracht, Tests für trivialen oder risikoarmen Code zu überspringen, wie einfache Getter und Setter ohne Geschäftslogik, extrem seltene Randfälle, Bibliotheken von Drittanbietern und Legacy-Code, der zur Entfernung vorgesehen ist. Dokumentieren Sie diese Entscheidungen, damit Ihr Team sie überdenken kann, wenn sich der Kontext ändert.
Bewerten Sie Ihre Testsuite und trennen Sie zuverlässige, konsistente Tests von den anfälligen externen Änderungen. Tests, die aufgrund von Faktoren außerhalb Ihrer Kontrolle häufig fehlschlagen – wie UI-Tests, die von häufigen UI-Updates betroffen sind – sind möglicherweise nicht ideal für die Automatisierung. Diese Trennung hilft Ihnen bei der Entscheidung, welche Tests automatisiert werden sollen und welche manuell gehalten werden sollen.
Kompromiss. Wenn Sie zerbrechliche Tests entfernen, reduzieren Sie ihre Automatisierungsabdeckung. Ausgleichen Sie diese Reduzierung, indem Sie die Automatisierung auf stabile Schnittstellen und kritische Workflows konzentrieren und manuelle Tests für häufig ändernde UI-Elemente akzeptieren.
Nicht alle Tests verdienen eine laufende Wartung. Stellen Sie Tests für entfernte Funktionen, Tests, die die Abdeckung duplizieren, und Tests, die keinen Wert mehr bieten, ein. Dokumentieren Sie, warum Sie Tests entfernen, damit die Entscheidung für Ihr Team klar ist.
Erweitern Sie die Observability auf Ihr Testframework.
Die Observierbarkeit bei Tests bietet zwei wichtige Vorteile. Zunächst wird bestätigt, dass Ihr Testframework funktioniert. Zweitens bietet es Ihnen einen kontinuierlichen Einblick in die Qualität und Integrität Ihrer Arbeitsauslastung.
Ohne diese Sichtbarkeit haben Sie erhebliche Schwierigkeiten, Probleme zu diagnostizieren, eine eingeschränkte Fähigkeit, Systeme in Echtzeit zu überwachen, und Sie erhalten keine klaren, umsetzbaren Einblicke in die Effektivität Ihrer Automatisierungsabdeckung.
Testsuiten verschlechtern sich im Laufe der Zeit. Tests werden unzuverlässig, verlieren Die Relevanz oder führen zu Arbeitsauslastungsänderungen nicht mehr. Durch die Einbeziehung von Observability können Sie die Integrität Ihrer Testsuite effektiv überwachen, Fehler schnell anheften und beheben und fundierte Entscheidungen zu Wartungsprioritäten und Verbesserungen treffen.
Generieren Sie Abdeckungsberichte, um Lücken in der Automatisierung zu identifizieren. Wenn die Testabdeckung mit Observability-Daten aus Produktionsvorfällen übereinstimmt, erhalten Teams Einblicke, in welche Szenarien eine angemessene Validierung fehlt.
Verwenden Sie branchenübliche Testabdeckungs- und Berichtswerkzeuge in Ihrem Framework, um:
- Bereitstellen klarer Einblicke in getestete Codepfade
- Identifizieren von konsistent fehlerhaften Tests
- Analysieren langfristiger Trends bei der Testsicherheit
- Verfolgen der Ursprünge von Fehlern für gezielte Verbesserungen
Risiko: Wenn Protokolle inkonsistent und übermäßig detailliert sind, erzeugen sie möglicherweise mehr Rauschen als Wert, wodurch das Debuggen erschwert wird. Implementieren Sie die strukturierte Protokollierung mit klaren und umsetzbaren Nachrichten sowie unterschiedlichen Ausführlichkeitsstufen, um sicherzustellen, dass Protokolle aussagekräftige Einblicke bieten, ohne Ihr Team zu überwältigen.
Simulieren realistischer Bedingungen
Bewerten Sie Ihre Workflows aus der Sicht des Endbenutzers, um sicherzustellen, dass sie wirklich kundenanforderungen und -erwartungen erfüllen. Definieren Sie klare Akzeptanzkriterien für Ihre Workloads, und entwerfen Sie Tests, die echte Benutzerflüsse und -erfahrungen genau widerspiegeln, nicht nur isoliertes Systemverhalten.
Abdeckung strategisch skalieren
Skalieren Sie Ihre Testabdeckung basierend auf Risiko und Wert. Priorisieren Sie die Abdeckung für hochwertige Benutzerreisen und kritische Pfade, die sich direkt auf die Benutzererfahrung auswirken. Wenn die Komplexität der Arbeitslast zunimmt, erweitern Sie Ihre Testabdeckung, indem Sie Szenarien auswerten, die das höchste Vertrauen in die Qualität und Zuverlässigkeit der Arbeitslast bieten.
Risiko: Investieren Sie nicht zu viel in einen einzelnen Benutzerfluss über den Punkt hinaus, an dem die Rendite abnimmt. Nachdem Sie eine ausreichende Abdeckung für kritische Pfade erreicht haben, setzen Sie den Fokus auf andere wichtige Bereiche. Streben Sie nach ausgewogener Berichterstattung und nicht nach Perfektion in einem einzigen Ablauf.
Ausrichten an Geschäftszielen und SLOs
Richten Sie Ihre Tests sowohl an geschäftsziele als auch an Service Level Objectives (SLOs) aus.
Legen Sie messbare Qualitätsschwellenwerte fest, die Geschäftsverpflichtungen und Benutzererwartungen widerspiegeln. Stimmen Sie diesen Schwellenwerten zu, da sie einen Referenzpunkt bereitstellen, um Abweichungen zu erkennen und Fehler zu beheben. Dieser Ansatz schützt die Benutzererfahrung, indem sichergestellt wird, dass wichtige Schwellenwerte für die Dienstqualität nicht kompromittiert werden.
Überprüfen und aktualisieren Sie regelmäßig Ihre Basismetriken, um sicherzustellen, dass sie die aktuellen Kundenanforderungen und Erwartungen weiterhin erfüllen.
Repräsentative Testdaten verwenden
Testdaten sollten reale Szenarien so genau wie möglich darstellen.
Synthetische Daten können authentische Benutzerszenarien simulieren und gleichzeitig die Komplexität der Verarbeitung von Produktionsdaten vermeiden. Beispielsweise können synthetische Tests reale Szenarien replizieren, indem repräsentative Datasets generiert werden, um zu bewerten, wie Ihre Workload unter geplanten Skalierungsbedingungen ausgeführt wird.
Verwenden Sie synthetische Daten als Standardauswahl. Reservieren Sie Produktionsdaten für bestimmte Szenarien, in denen synthetische Daten die erforderliche Komplexität nicht replizieren können, z. B. das Testen von Datenmigrationsskripts.
Wenn Sie Produktionsdaten für Tests verwenden müssen, stellen Sie sicher, dass Sie alle Informationen ordnungsgemäß anonymisiert haben, um vertrauliche Informationen zu schützen.
Simulieren der Produktionsumgebung
Die Produktionsumgebung ist Ihre Quelle der Wahrheit, um zu verstehen, wie sich Ihre Arbeitsauslastung unter realen Bedingungen verhält. Erstellen Sie eine Umgebung, die die realen Bedingungen genau widerspiegelt, damit Sie vertrauen können, dass das System wie erwartet in der Produktion ausgeführt wird.
- Passen Sie Ihren Ansatz an die Spiegelung von Produktionsumgebungen an die spezifischen Anforderungen Ihrer Workload an.
Testen Sie bei unternehmenskritischen Workloads, die eine hohe Verfügbarkeit erfordern, in einer dedizierten Umgebung, die der Produktion ähnlich ist. Für diese Workloads sollten Sie die Kostenoptimierung sorgfältig mit der Notwendigkeit einer robusten Validierung in Einklang bringen.
Verwenden Sie eine dedizierte produktionsähnliche Umgebung für Leistungs- und Lasttests, um sicherzustellen, dass das Dienstverhalten unter realistischen Bedingungen genau bewertet wird.
Bei anderen Arbeitslasten spiegeln Sie die Produktionsinfrastruktur eng wider, um falsch positive Ergebnisse zu reduzieren, z. B. Fälle, in denen Tests in niedrigeren Umgebungen erfolgreich sind, aber in der Produktion fehlschlagen.
Streben Sie die Konsistenz in allen Umgebungen an , während Ihr Code durch die Pipeline voranschreitet. Simulieren Sie Produktionsbedingungen in verschiedenen Aspekten Ihrer Arbeitsauslastung, einschließlich Infrastruktur, Daten und Sicherheit, um zuverlässige Testergebnisse sicherzustellen.
Verhindern sie die Konfigurationsabweichung. Wenn Sie Ihre Umgebungen in die Produktion spiegeln, kann die Konfigurationsdrift ein falsches Vertrauen in die Qualität schaffen. Implementieren Sie automatisierte Überprüfungen für Konfigurationsabweichungen, um sicherzustellen, dass Ihre Umgebung mit der Produktion übereinstimmt. Richten Sie gegebenenfalls Bereitstellungsgates ein, um zu überprüfen, ob die richtige Version bereitgestellt wird, bevor die Tests beginnen.
Risiko: Wenn Sie Produktionsumgebungen spiegeln, kann dies die Betriebskosten erheblich erhöhen. Bewerten Sie, ob kurzlebige Umgebungen oder persistente Testumgebungen die optimale Balance zwischen Kosteneffizienz und Qualität für Ihre Workload bieten.
Erstellen zweckgesteuerter Testumgebungen
Designumgebungen mit einem klaren Fokus auf ihren beabsichtigten Zweck. Bewerten Sie die unterschiedlichen Anforderungen jeder Phase im Testlebenszyklus, und stellen Sie sicher, dass die Umgebung eng mit den Zielen dieser Phase übereinstimmt.
Entwerfen Sie absichtlich jede Testumgebung so, dass sie der spezifischen Stufe und den Zielen des Tests entspricht, unabhängig davon, ob es sich um funktionale Validierung, Integrationstests oder andere Zwecke handelt. Wenn eine optimierte Umgebung Ihren Testanforderungen effektiv entspricht, priorisieren Sie diesen Ansatz, um die Effizienz zu maximieren.
Verwenden von Pseudodiensten
Die vollständige Replikation von Produktionssystemen für jedes Testszenario ist häufig unpraktisch. Bewerten Sie, welche Komponenten Ihrer Workload Sie sicher für Tests replizieren können, ohne kritische Geschäftsworkflows zu gefährden. Wenn die vollständige Replikation nicht machbar ist, verwenden Sie simulierte Dienste, die Produktionsdienstverhalten genau simulieren, um Szenarien effektiv zu überprüfen, ohne Livevorgänge zu riskieren.
Zweckgesteuerte Testumgebungen bieten eine ideale Grundlage für die Bereitstellung von Pseudodiensten in kurzlebigen Umgebungen. Ephemerale Umgebungen bieten eine kostengünstige Möglichkeit, Produktionsbedingungen für Tests zu simulieren. Sie können Interaktionen und Verhaltensweisen überprüfen, ohne den Aufwand für die Aufrechterhaltung vollständiger produktionsähnlicher Umgebungen für jedes Testszenario zu gewährleisten. Diese On-Demand-Umgebungen werden für bestimmte Testzwecke erstellt und nach der Verwendung zerstört, wodurch die Infrastrukturkosten reduziert werden, während die Testqualität beibehalten wird.
Das Erstellen ephemerer Umgebungen erfordert, dass Ihre Arbeitsabläufe eine höhere Reifestufe erreichen, bei der Automatisierung mit Infrastructure as Code (IaC) und Bereitstellungspipelines gut etabliert ist.
Azure-Unterstützung
Azure Test Plans ist eine browserbasierte Testverwaltungslösung, die alle Funktionen bereitstellt, die für geplante manuelle Tests, Benutzerakzeptanztests, explorative Tests und Sammeln von Feedback von Projektbeteiligten erforderlich sind. Es umfasst Test Analytics , um Ihre Testqualität im Laufe der Zeit nachzuverfolgen und Bereiche zur Verbesserung zu identifizieren.
Azure Pipelines ermöglicht es Ihnen, Tests in Ihre CI/CD-Pipeline zu integrieren. Sie können auch GitHub-Aktionen verwenden, die in Azure integriert sind.
Azure App Testing ist ein Dienst, der Funktions- und Leistungstests unterstützt. Sie können funktionsbezogene Tests mit Arbeitsbereiche für Dramatiker und Leistungstests mithilfe von Azure Load Testing ausführen.
Azure Deployment Environments kann dazu beitragen, die App-Infrastruktur mit projektbasierten Vorlagen bereitzustellen, die Konsistenz und bewährte Methoden gewährleisten und gleichzeitig die Sicherheit maximieren.
Azure bietet auch plattformeigene Tools, die Zuverlässigkeit, Leistung und Sicherheitstests unterstützen.
Verwandte Links
- Empfehlungen für Leistungstests
- Empfehlungen für Zuverlässigkeitstests
- Empfehlungen für Sicherheitstests
Checkliste für operative Exzellenz
Lesen Sie die vollständigen Empfehlungen.