Testen in DevOps: Konzepte, Best Practices und mehr

Testen in DevOps: Konzepte, Best Practices und mehr

  • ITOps & DevOps
6 Minuten Lesezeit Aktualisiert Apr 28, 2021

Auf einen Blick: Testing in DevOps setzt auf kontinuierliches, automatisiertes Testen während des gesamten Softwareentwicklungslebenszyklus, um Qualität und Geschwindigkeit zu verbessern. Es wird ein Shift-Left-Ansatz angewandt, bei dem Tests frühzeitig integriert werden, um Fehler schnell zu erkennen.

  • Testautomatisierung und Dokumentation sind wesentliche Best Practices.
  • Kontinuierliches Testen ist entscheidend, um qualitativ hochwertige Software in CI/CD-Pipelines bereitzustellen.

DevOps ermöglicht eine reibungslose Zusammenarbeit und Kommunikation zwischen Entwicklungs- und Betriebsteams in den heutigen wettbewerbsintensiven Softwareentwicklungsumgebungen.

Im DevOps-Bereich arbeiten die beiden Teams zusammen und teilen sich die Verantwortung, um ihr Hauptziel zu erreichen: häufige und schnellere Bereitstellung hochwertiger Software, die den sich wandelnden Kundenbedürfnissen gerecht wird. DevOps-Praktiken sowie relevante Werkzeuge und Technologien treiben Organisationen dazu an, Aufgaben so effizient wie möglich zu erfüllen.

Einige DevOps-Praktiken wie Continuous Integration und Continuous Delivery (CI/CD) unterstützen häufige Software-Releases. Das bedeutet, dass Testing eine integrale Rolle dabei spielt, die Softwarequalität in jedem Schritt des Entwicklungslebenszyklus aufrechtzuerhalten.

Wie traditionelle Tests funktionierten

Softwaretests sind kein neues Konzept. Aber Testen in einer traditionellen Umgebung sieht ganz anders aus als Testen in einer DevOps-Umgebung.

Zu Zeiten der traditionellen Wasserfall-Methodik sah das Softwaretesten folgendermaßen aus:

  • Umfasste nur eine Phase des Lebenszyklus
  • Begann, nachdem die Software vollständig entwickelt war
  • Es war ein manueller Prozess, der sehr fehleranfällig war und lange dauerte, abgeschlossen zu werden

Ein großer Unterschied ist, dass Softwaretester in einem separaten Team saßen, isoliert vom Entwicklungsteam. Wenn ein Fehler bereits in der Testphase entdeckt wurde, war es herausfordernd und kostspielig, diese Änderung zurückzuverfolgen. Der Grund dafür war strukturell: Die jeweiligen Fehlerszenarien sollten von Anfang an gut identifiziert werden.

Unter diesen Umständen war es schwierig, den erforderlichen Standard und die Qualität innerhalb des erwarteten Zeitrahmens aufrechtzuerhalten.

Funktionen des Tests in einer DevOps-Umgebung

Softwaretests haben sich im Laufe der Jahre nach dem Aufstieg von Agile erheblich weiterentwickelt. Seitdem wurden schnellere und kollaborative Teststrategien, Werkzeuge und Technologien im Testbereich eingeführt.

So sieht das Testen in einer DevOps-Umgebung aus:

  • Testing ist ein kontinuierlicher und automatisierter Prozess, der eine kontinuierliche und schnellere Bereitstellung von Software ermöglicht.
  • Tests umfassen jede Phase des Softwareentwicklungslebenszyklus (SDLC).
  • Jeder Schritt des SDLC beinhaltet verschiedene Testformen. Dies minimiert das Backtracking, falls Sie einen Fehler festgestellt haben.
  • Das Testen ist nicht mehr die Verantwortung eines einzelnen Teams. Gemeinsame Testverantwortlichkeiten ermöglichen es allen, die Auswirkungen jeder Änderung zu verstehen.

(Lernen Sie, wie Sie Ihre eigene CI/CD-Pipeline einrichten.)

Kontinuierliches Testen

DevOps verwendet den Shift-Left-Testansatz

Wichtig ist, dass die DevOps-Kultur den Shift-Left-Testansatz übernimmt, der sich von traditionellen Umgebungen unterscheidet, in denen das Testen am Ende der Entwicklung stattfindet.

Shift Left Testing verschiebt das Testen nach links, die früheren Schritte des Softwareentwicklungsprozesses. Dort wird auch das Testen begonnen, wenn die Entwicklung beginnt. Dieser Ansatz hilft, Fehler so früh wie möglich zu erkennen.

Diese inhärenten Eigenschaften einer DevOps-Testumgebung tragen maßgeblich zur Verbesserung der Softwarequalität bei. Dennoch hängt der Erfolg oder Misserfolg der Teststrategie davon ab, wie gut Organisationen DevOps-Best Practices für Tests implementieren.

Best Practices für DevOps-Testing

In diesem Abschnitt gehen wir einige Best Practices für Tests vor, die Organisationen übernehmen müssen, um Ihren DevOps-Wert zu maximieren.

Best Practices für DevOps-Testing

Nutzen Sie Testautomatisierung (intelligent)

In einer DevOps-Umgebung führen Entwickler den Code häufig in ein zentrales Repository ein. Das bedeutet, dass der Code kontinuierlich durch kontinuierliche Integration (CI) aktualisiert wird. Um das Fehlerrisiko zu vermeiden, muss man den Code kontinuierlich durch verschiedene Testarten testen, darunter:

Als Best Practice können Sie diese Tests automatisieren, um schnelleres und früheres Feedback zu kontinuierlich integriertem Code zu erhalten. Erfolgreichere DevOps-Teams haben einen größeren Anteil automatisierter Testfälle und verfügen oft über integrierte Automatisierungssuiten.

Im Verlauf des SDLC erstreckt sich die Testautomatisierung von der Codeebene weiter in Bereiche wie:

  • API-Tests
  • Leistungstests
  • Lastprüfung
  • Ausdauertests

Das bedeutet nicht, dass alles im Testbereich automatisiert sein sollte. Es sollte Raum für manuelles Testen geben. Diese Vorsicht ist wichtig. Wenn Sie einen Testprozess automatisieren, der nicht wertvoll ist, automatisieren Sie einfach und bringen mehr Abfall in den Prozess.

Empfehlungen für eine effektive Testautomatisierung umfassen:

  • Verwendung guter, qualitativ hochwertiger Testdaten
  • Identifizierung von Testfällen, die gute Kandidaten für die Automatisierung sind
  • Testfälle parallel laufen lassen, um die Automatisierungsgeschwindigkeit zu verbessern
  • Ständige Überarbeitung des Testplans mit einem aktuellen automatisierten Testumfang

Teams können oft weitere Testfälle erstellen und ausführen, um Fehler zu vermeiden, indem sie Testautomatisierung intelligent nutzen.

Automatisiertes Testen

Testautomatisierungsingenieure identifizieren

Obwohl Testing eine gemeinsame Verantwortung für jedes Team ist, neigen Organisationen dazu, die spezifische Expertise von Testautomatisierungsingenieuren zu nutzen, um den Anteil der Testautomatisierungsabdeckung zu erhöhen. Ein dediziertes Team solcher Ingenieure spielt beispielsweise eine entscheidende Rolle bei der Erreichung von Automatisierungszielen.

Ein guter Testautomatisierungsingenieur könnte sein:

  • Ein ehemaliger manueller Tester, der später lernte, Automatisierungsskripte zu schreiben
  • Ein Softwareentwickler, der als Automatisierungsingenieur ausgebildet wurde

Testautomatisierungsingenieure entwickeln die Gesamtstrategie der Organisation. Sie sind verantwortlich für:

  • Identifizierung automatisierbarer Testszenarien
  • Erstellung von Automatisierungsskripten mit einem gewählten Testautomatisierungs-Framework
  • Das Tool finden, das am besten zum Testansatz Ihres Teams oder Ihrer Organisation passt

Typischerweise übernimmt der Automatisierungsingenieur während einer Softwareveröffentlichung die Ausführung automatisierter Tests in der zugehörigen Umgebung und die Meldung identifizierter Fehler. Anschließend arbeitet er eng mit den Entwicklungsteams zusammen, um Lösungen zur Behebung dieser Fehler zu finden. Im Rahmen seiner Arbeit bereinigen sie bestehende Testfälle entsprechend den neuen Änderungen im System.

Man sieht, wie Testautomatisierungsingenieure dazu beitragen, die Vorteile der Testautomatisierung in einer erfolgreichen DevOps-Kultur zu nutzen.

Wählen Sie die richtigen Testwerkzeuge aus

Um die Vorteile der Testautomatisierung zu nutzen, müssen Sie die richtigen Testwerkzeuge für Ihre Organisation integrieren – nicht irgendein "Best-of"-Testtool.

Bei der Auswahl eines Testautomatisierungstools ist das Erste, was zu bewerten gilt, ob Ihr Team über die erforderlichen Fähigkeiten und Fachkenntnisse verfügt, um dieses Tool zu nutzen. Zum Beispiel erfordern einige Open-Source-Testwerkzeuge ein ordentliches Maß an Programmierfähigkeiten, um sie zu nutzen. Haben Ihre Testingenieure das?

Dann schätzen Sie die Gesamtkosten des Tools, einschließlich Schulungskosten, Updates und Wartung, um zu sehen, ob es im Testbudget liegt. Prüfen Sie immer, ob ein ordentlicher technischer Support für die Tools verfügbar ist. Wenn nicht, sind Sie bereit, es selbst zu warten?

Automatisierte Testwerkzeuge sollten das Schreiben und Ausführen von Testfällen erleichtern, ohne komplexe Konfigurationen vornehmen zu müssen. Hier ist eine Liste sowohl Open-Source- als auch kommerzieller Software-Testtools, die von vielen Organisationen weit verbreitet genutzt werden.

Hier sind einige der beliebtesten Testautomatisierungstools:

  • Selenium ist ein Open-Source-Framework, das hauptsächlich Webanwendungstests automatisiert. Es bietet eine Softwaresuite für unterschiedliche Testbedürfnisse. Selenium-Skripte können in mehreren Programmiersprachen geschrieben werden.
  • Katalon Studio, das zu den besten automatisierten Testprogrammen zählt, bietet sowohl kostenlose als auch kostenpflichtige Versionen an. Es kann für automatisiertes Web-, API-, Desktop- und mobiles Testen verwendet werden. Es unterstützt viele Plattformen.
  • JMeter ist eine Java-basierte Open-Source-Software, die für Leistungs- und Lasttests verwendet wird. Sie kann zum Testen vieler Protokolltypen verwendet werden.
  • SoapUI hilft Ihnen, REST-, SOAP- und GraphQL-APIs zu testen. Es ist ein weiteres Open-Source-, plattformübergreifendes Automatisierungstool mit einer praktischen grafischen Benutzeroberfläche (GUI).

(Erfahren Sie mehr über die führenden kontinuierlichen Testwerkzeuge der Softwarebranche.)

Testwerkzeuge

Leistung mit Kennzahlen verfolgen

Die Verwendung von Kennzahlen zur Bewertung des Erfolgs oder Scheiterns von Tests ist eine weitere Best Practice. Diese Praxis ermöglicht es dem Management, ein klares Bild davon zu bekommen, wie die an der Software eingeführten Änderungen die Organisation beeinflusst haben.

Sie können wichtige Kennzahlen verfolgen, wie:

  • Anzahl der bestandenen Testfälle vs. Durchgefallen
  • Anzahl der identifizierten Fehler
  • Häufigkeit von durchfallenden Testfällen
  • Ausführungszeit der Automatisierungssuite

Diese Kennzahlen liefern Einblicke in Bereiche, die stark anfällig für Fehler sind, und kontinuierliche Tests liefern sofortige Werte dafür. Kennzahlen ermöglichen es Teams außerdem, vorherzusehen, ob die Anzahl der Fehler mit zunehmenden oder weniger Änderungen im System im Laufe der Zeit zunimmt oder abnimmt. Anschließend können innovativere Lösungen eingesetzt werden, um Fehler zu überwinden.

Testausführungszeit-Metriken helfen Automatisierungsingenieuren, bessere Wege zu finden, Testfälle zu schreiben, die die Leistung steigern. Da die Ausführung von Automatisierungs-Suits zu einem bedeutenden Schritt einer Softwareversion geworden ist, helfen Testausführungskennzahlen, den Veröffentlichungszeitplan effektiv zu planen.

Pflegen Sie ordnungsgemäße Dokumentationen

Die ordnungsgemäße Dokumentation macht den Testprozess für alle in der Organisation organisierter und transparenter. Erfolgreiche DevOps-Teams erstellen häufig testbezogene Dokumente, darunter:

  • Qualitätsmanagementpläne (QMP)
  • Testzusammenfassungsberichte
  • Testfall-Spezifikationen
  • Risikobewertungsberichte
  • Regressionstestberichte

Diese werden in der Regel entweder zu Beginn der Testphase erstellt oder als Ergebnis der Testergebnisse bereitgestellt. Dokumente wie QMPs oder Testmanagementpläne bieten einen umfassenden Überblick über die geplanten Tests und decken alle Aspekte der getesteten Funktionen ab. Testzusammenfassungsberichte bieten ein tiefgehendes Verständnis der Testergebnisse.

Natürlich ist ein weiterer Wert der Dokumentation, dass sie großartiges Nachschlagewerk für Auszubildende ist. Richtige Dokumentation hilft, Organisationskosten zu sparen.

Als Best Practice sollten Sie alle Dokumentationen an einem sicheren Ort aufbewahren, an dem sie für alle in der Organisation zugänglich und sichtbar sind. Standardisieren Sie Dokumentformate und verwenden Sie Vorlagen, um die Qualität zu erhalten – daher den Wert.

DevOps-Tests sind der Schlüssel zur hochwertigen Softwarebereitstellung

Für viele Unternehmen ist DevOps die ideale Lösung, um wettbewerbsfähiger auf dem Markt zu werden oder zu bleiben. Kontinuierliches Testen ist ein wesentlicher Bestandteil von CI- und CD-Pipelines, die dazu beitragen, häufige, hochwertige Software bereitzustellen.

Der Erfolg des Tests hängt stark von den Best Practices ab, die Sie in Ihrer DevOps-Kultur anwenden. Automatisierung und zugehörige Werkzeuge stehen im Zentrum von DevOps-Teststrategien.

DevOps-Leitfaden

  1. Was ist DevOps? Eine umfassende Einführung
  2. Eine kurze Geschichte von DevOps
  3. Einführung in die DevOps-Architektur
  4. Automatisierung in DevOps: Warum und wie man DevOps-Praktiken automatisiert
  5. Was ist CI/CD? Kontinuierliche Integration und kontinuierliche Lieferung erklärt
  6. Wie man eine CI/CD-Pipeline mit Jenkins aufbaut
  7. DevOps-Metriken zur Optimierung von CI/CD-Pipelines
  8. Kontinuierliche Liefermetriken
  9. Ist Continuous Integration in Continuous Deployment ein Fortschritt – oder nicht?
  10. Unterschiede zwischen Continuous Integration (CI), Delivery (CD) und Deployment
  11. Quellcode und Versionskontrolle in DevOps
  12. Was ist kontinuierliche Testung?
  13. Testautomatisierungs-Frameworks: Der ultimative Leitfaden
  14. Release Management in DevOps
  15. Erklärt: Monitoring & Telemetrie in DevOps
  16. Anwendungs-Leistungsmanagement in DevOps
  17. DevOps-Orchestrierung im SDLC
  18. Einführung in Datenbank-DevOps
  19. Die Rolle der Microservices in DevOps
  20. Die Rolle der Virtualisierung in DevOps
  21. Container & DevOps: Wie Container in DevOps-Lieferpipelines passen
  22. Was ist eine Containerpipeline?
  23. Was ist eine DevOps-Toolchain?
  24. Verwaltung von Containern und Code für DevOps
  25. Die Rolle von Agile in DevOps
  26. Die Rolle der Cloud in DevOps
  27. Was ist FinDevOps?
  28. Top-DevOps-Trends im Jahr 2022
  29. DevOps-Werte & Prinzipien
  30. DevOps-Kennzahlen und KPIs
  31. DevOps-Ratschläge für kleine, mittlere und große Organisationen
  32. DevOps-Teamstruktur
  33. Top-DevOps-Bücher, die man heute lesen sollte
  34. Buchrezension von The Phoenix Project: DevOps For Everyone
  35. DevOps-Influencer: 11 DevOps-Experten, denen Sie auf Twitter folgen können
  36. GitHub, GitLab, Bitbucket & Azure DevOps: Was ist der Unterschied?
  37. Best Practices: Wie man Anwendungen für Kubernetes architekt
  38. Konfigurationsmanagement in DevOps
  39. DevOps-Verzweigungsstrategien erklärt
  40. DevOps-Jobbezeichnungen, Rollen und Verantwortlichkeiten
  41. Testen in DevOps: Konzepte, Best Practices und mehr
  42. Der vollständige DevOps-Zertifizierungsleitfaden für 2022
  43. Was ist das Kubernetes-Operator-Muster?

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus ITOps & DevOps

Abonnieren Sie The Brief

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Danke

Sie haben The Brief abonniert
Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.