14 Kernaussagen zu Continuous Testing:
- Das vorrangige Ziel von Continuous Testing ist es, die Abdeckung des Geschäftsrisikos zu bewerten.
- Kontinuierliche Tests liefern Erkenntnisse darüber, ob es zu riskant ist, ein Release bereitzustellen oder nicht.
- Continuous Testing schafft ein Sicherheitsnetz, das dem Team hilft, die User Experience trotz beschleunigter Entwicklungsprozesse beizubehalten sowie Softwarefehler und einen Imageschaden zu vermeiden.
- Mit dem kontinuierlichen Testen einher geht der Ansatz, Tests in den Entwicklungsprozess einer Anwendung einzubetten und diese nicht erst am Ende durchzuführen.
- Continuous Testing ist nahtlos in die Softwarebereitstellungspipeline und die DevOps-Toolchain integriert.
- Continuous Testing braucht für jeden Testlauf eine stabile Testumgebung mit gültigen Testdaten.
- Kontinuierliches Testen ist ein ganzheitliches Konzept von „shift left“ (Units, Komponenten, Abdeckung…) bis „shift right“ (Monitoring/APM, Testen im Live-Betrieb).
- Beim kontinuierlichen Testen geht es darum, die richtigen Tests in der richtigen Phase der Bereitstellungspipeline auszuführen, ohne einen Engpass zu verursachen.
- Kontinuierliche Tests liefern Feedback für jede Phase der Bereitstellungspipeline.
- Continuous Testing analysiert jede Ebene einer modernen Architektur in der entsprechenden Phase der Bereitstellungspipeline.
- Kontinuierliches Testen umfasst End-to-End-Tests, die die User Experience über alle Technologien hinweg (Front- und Backend) realistisch bewerten.
- Tests im Rahmen von Continuous Testing müssen breit genug aufgestellt sein, um zu erkennen, wenn eine Anwendungsänderung unbeabsichtigt Auswirkungen auf für User wichtige Funktionalitäten hat.
- Im Vergleich zu anfälligen Skripten reduzieren kontinuierliche Tests dank robuster und gleichzeitig flexibler Test-Frameworks False Positives.
- Continuous Testing verlangt eine ständige Überprüfung und Optimierung der Testsuite, um Redundanzen zu beseitigen und die Abdeckung von Geschäftsrisiken zu maximieren.
Continuous Testing ist Veränderung
Alle wissen es: Bei agilen Methoden und DevOps geht es um Veränderung – speziell darum, Menschen, Prozesse und Technologien so aufzustellen, dass innovative Software so schnell wie möglich bereitgestellt werden kann. Auch wenn sich vieles ändert, eines scheint gleich zu bleiben: der Softwaretestprozess. Einer aktuellen Studie zufolge haben 70 % der Unternehmen agile Softwareentwicklung eingeführt, aber nur 30 % automatisieren Tests. Eine andere Studie wiederum ergab, dass die Akzeptanz agiler Methoden mittlerweile bei fast 88 % liegt, aber nur 26 % der Agile-Organisationen die Testautomatisierung umfassend eingeführt haben.
Mit anderen Worten: Testprozesse bleiben immer noch in der Vergangenheit stecken, selbst wenn Unternehmen viel Zeit und Mühe in die Umgestaltung ihrer Entwicklungsprozesse investieren, um den heutigen und zukünftigen Geschäftsanforderungen gerecht zu werden. Die meisten Legacy-Softwaretesttools und die dazu gehörigen Prozesse sind für die Art des Continuous Testings, die agile Methoden und DevOps erfordern, meist nicht geeignet – und zwar aus folgenden Gründen:
Kein „shift left“
Tests können normalerweise erst spät in jedem Sprint implementiert werden – dann nämlich, wenn das UI und abhängige Komponenten wie Back-End-APIs fertiggestellt und zum Testen verfügbar sind.
Langsame Ausführungszeit
Die Ausführung von Tests ist zeitaufwändig. Daher ist es nicht praktikabel, die vollständige Regressionstestsuite für jeden Build auszuführen. Dies bedeutet, dass dem Team eine sofortige Rückmeldung darüber fehlt, ob sich ihre Änderungen auf die bestehende User Experience auswirken.
Hoher Wartungsaufwand
UI-Tests erfordern erhebliche Nacharbeit, um mit den häufigen Änderungen Schritt zu halten, die für beschleunigte Release-Prozesse typisch sind. Dies führt zu einer langsamen, aufwändigen Testwartung und/oder oft dazu, dass Bemühungen zur Testautomatisierung aufgegeben werden.
Instabile Testumgebung
Die Instabilität der Testumgebung (unzugängliche Abhängigkeiten, Probleme mit Testdaten usw.) führt häufig zu Timeouts, unvollständigen Tests, False Positives und/oder ungenauen Ergebnissen. Das verhindert schnelles, qualitativ hochwertiges Feedback, das in agilen Umgebungen und bei DevOps benötigt wird.
Continuous Testing & Testautomatisierung
Studien zeigen, dass der durchschnittliche Testautomatisierungsgrad in Unternehmen bei etwa 20 % liegt – und das seit Jahren. Anwendungsarchitekturen werden heute aber zunehmend verteilter und komplexer. Sie umfassen Cloud, APIs, Microservices und vieles mehr. Die praktisch endlose Kombination verschiedener Protokolle und Technologien innerhalb einer einzigen Geschäftstransaktion macht es schwer, hier Überblick und Kontrolle zu behalten.
Dank agiler Methoden, DevOps und Continuous Delivery werden Updates wichtiger Anwendungen heute mittlerweile in einer Frequenz zwischen zwei Wochen bis hin zu tausende Male am Tag veröffentlicht. Dadurch wird auch die Zeit, die für Testdesign, Wartung und insbesondere Testausführung zur Verfügung steht, deutlich kürzer.
Software ist die primäre Schnittstelle zum Unternehmen und ein wichtiger Pfeiler für den Erfolg. Ein Ausfall einer Anwendung ist damit gleichbedeutend mit Geschäftsausfall – und selbst ein scheinbar kleiner Fehler kann schwerwiegende Auswirkungen haben, speziell wenn die User Experience betroffen ist. Daher ist die Vermeidung anwendungsbezogener Risiken selbst für das technisch nicht versierte Management weit oben auf der Prioritätenliste zu finden.
Continuous Testing, Continuous Integration, Continuous Delivery & DevOps
Egal welcher Markt oder welche Branche – wer echten Wettbewerbsvorteil erzielen will, baut auf Software. Unternehmen haben heute auch nicht mehr den Luxus, bei der Bereitstellung von Lösungen zwischen „Geschwindigkeit“ oder „Qualität“ zu wählen. Beides ist kritisch. Nachdem agile Praktiken heute ausgereift und DevOps-Initiativen auf der Unternehmensagenda angekommen sind, haben sich Continuous Integration (CI), Continuous Testing und Continuous Delivery (CD) als wichtige Katalysatoren für die schnelle Bereitstellung qualitativ hochwertiger Software herausgestellt. Und Continuous Testing ist von den drei genannten die bei weitem größte Herausforderung.
Während Continuous Integration in erster Linie Tool-gesteuert und Continuous Delivery Tool- sowie Team-gesteuert ist, umfasst Continuous Testing mehr: Tools, Teams, einzelne Personen und Services.
Codeänderungen zu erstellen und zu integrieren ist wichtig. Wenn im automatisierten Bereitstellungsprozess jedoch nicht zu erkennen ist, wie sich Änderungen auf das Geschäftsrisiko auswirken oder wie diese die User Experience beeinträchtigen, könnte die erhöhte Geschwindigkeit von Continuous Integration und Continuous Delivery eher zu einer Belastung als zu einem Vorteil werden.
Professionell umgesetzt stellt Continuous Testing das Kernstück des agilen Downstream-Prozesses dar. Automatisierte Tests werden dabei als Teil der Softwarebereitstellungspipeline ausgeführt, um so schnell wie möglich risikobasiertes Feedback zu bekommen. Und das Geschäftsrisiko im Griff zu behalten ist angesichts der zunehmenden Komplexität und Geschwindigkeit, die der heutigen Anwendungsbereitstellung innewohnt, von entscheidender Bedeutung.
Zum Continuous Testing Guide (En)
Über Continuous Testing hinaus – dank künstlicher Intelligenz
Der Weg hin zu Continuous Testing ist ein langer. Und doch hört er hier nicht auf. Wenn wir in die Zukunft blicken, wird klar, dass selbst kontinuierliches Testen nicht ausreicht. Mit der sich Dinge heute entwickeln, wir es auch nicht mehr in der Lage sein, mit den kürzeren Bereitstellungszyklen, der zunehmenden technischen Komplexität und der Beschleunigung der Änderungsraten Schritt zu halten.
In einer Zeit, in der Software eine unvorstellbare Anzahl von Daten in Echtzeit verarbeiten kann – nehmen wir nur das Internet der Dinge oder selbstfahrende Autos als Beispiele – brauchen wir jede Hilfe, um Softwarequalität sicherzustellen. Über das kontinuierliche Testen hinaus benötigen wir „digitales Testen“. Nur so ist eine weitere Beschleunigung zu erreichen, die den Qualitätsanforderungen einer Zukunft geprägt von IoT, Robotik und Quantencomputing gerecht wird. Künstliche Intelligenz, die menschliches Verhalten für maschinelles Lernen und vorausschauende Analysen imitiert, kann uns dabei unterstützen.
Mehr zum Thema Continuous Testing (En)
5 core testing practices that separate successful DevOps from laggards
Beating 3 challenges to enterprise Continuous Testing
A practical guide to continuous performance testing
Forrester Research: What separates DevOps + Agile leaders from laggards?
Risikobasiertes Testen
Entwerfen Sie die effizientesten Tests und Testdaten, die erforderlich sind, um die maximale Abdeckung des Geschäftsrisikos zu erreichen. Was folgt, sind Testergebnisse, die Ihre Geschäftsrisiken in den Mittelpunkt stellen. Wer automatisierte Qualitätsprüfpunkte implementieren und intelligente Entscheidungen zu Releases treffen will, für den sind risikobasierte Erkenntnisse unerlässlich.
Explorative Tests
Decken Sie kritische Mängel in agilen Sprints frühzeitig auf und lösen Sie Reviews an geeigneten Stellen in der Continuous-Delivery-Pipeline aus. Sessions, die Risiken aufdecken, können zur Fehlerreproduktion und -dokumentation erfasst werden. Sie können zudem in die automatisierte Regressionssuite integriert werden.
CI/CD-Integrationen
Integrieren Sie Funktionstests in Softwarebereitstellungspipelines und DevOps-Tools. Wir bieten eine Out-of-the-Box-Integration mit beliebten Tools wie Jenkins, Jira, GitHub, Docker, Puppet, Visual Studio usw.
Service-Virtualisierung
Führen Sie Tests kontinuierlich durch und vermeiden Sie False Positives oder unzuverlässige Testergebnisse durch eine stabile Testumgebung und einer hohen Verfügbarkeit von Testdaten. Und das ohne auf den Zugriff auf Drittanbieter-Services, noch nicht implementierte Dienste oder neue Testdaten warten zu müssen.
Modellbasierte Testautomatisierung
Stellen Sie sicher, dass Sie bei komplexer werdenden Anwendungen nicht von einer Menge an False Positives überwältigt werden und Sie sich einer aufwändigen Testwartung gegenübersehen. Das gelingt Ihnen, indem Sie API-Tests und UI-Tests erstellen, die kleineren, unbedeutenderen Änderungen standhalten und gleichzeitig bei größeren, beabsichtigten Änderungen leicht zu aktualisieren sind. Die dabei eingesetzte Technologie hilft Ihnen, realistische Use Cases in modernen Unternehmensarchitekturen zu testen.
Testdatenmanagement
Warten Sie nicht mehr wochenlang auf Testdaten und machen Sie sich keine Sorgen darüber, dass Testdaten nach einem einzigen Testlauf bereits veraltet sind. Testdatenmanagement hilft Ihnen, Datensätze zu entwerfen, zu generieren und zentral zu verwalten, die für jeden einzelnen Testlauf geeignet sind.
Und jetzt?
Erfahren Sie mehr darüber, wie Tricentis Softwaretester*innen dabei hilft, Continuous Testing durch risikobasiertes Testen, modellbasierte Testautomatisierung, Service-Virtualisierung und Testdatenmanagement einzuführen und voranzutreiben.