Software-Test / Testautomatisierung

„Continuous Delivery“ als Verschmelzung von Integration und Testing

Ende Oktober fand in Wien die gut besuchte Software-Test-Konferenz „Tricentis Accelerate“ statt. Heißes Thema war an diesem Tag Continuous Testing. Auch ich durfte mein Wissen und meine Erfahrungen rund um Continuous Testing in Form eines Vortrages vermitteln. Damit auch unsere Blogleser nicht leer ausgehen, möchte ich hier die wichtigsten Punkte festhalten und erläutern.

 Continuous Delivery als Verschmelzung von Integration und Testing

Nicht nur auf der Konferenz sondern auch im Arbeitsalltag ist der Trend zu Continuous Testing spürbar und das zu Recht. Das Konzept kann viele positive Aspekte in den Testbereich aber auch in den kompletten Software-Entwicklungs-Prozess einbringen. Jedoch stellt sich in erster Linie die Frage: Wieso sollte Continuous Testing verwendet werden?

Blicken wir auf die Software-Entwicklung, so sehen wir, dass Continuous Integration weit verbreitet und sehr erfolgreich eingesetzt wird. So ist es naheliegend, die Idee dahinter auf den Testbereich zu übertragen, beziehungsweise zu erweitern und schließlich Integration und Testing zu kombinieren.

Das sind die wichtigsten Vorteile, Eigenschaften und Punkte zu Continuous Testing:

 

Kontinuierliches und rasches Feedback

Ein gutes Continuous Testing Konzept liefert kontinuierlich und zeitnah Ergebnisse, welche Aufschluss über die Auswirkungen von Software-Änderungen sowie den aktuellen Zustand der Testumgebungen geben.

Bei Softwareänderungen, wie zum Beispiel Deployments, Bugfixes und Updates, können komplett automatisiert alle nötigen Regressionstests über die Continuous Integration Umgebung gestartet werden. Dadurch ist es möglich, direkt nach der Einspielung der Änderung eine Aussage über deren Auswirkungen zu treffen.

Zusätzlich können regelmäßig (zB nächtlich) Tests in Testumgebungen oder in bestimmten Systemen durchgeführt werden, um zu prüfen, ob diese erreichbar und in einem entsprechenden Zustand sind. Diese vollautomatisierten Überprüfungen können wichtige Informationen für den gesamten Test- aber auch Entwicklungsbereich liefern.

 

Aufwertung von Testautomatisierungen

Continuous Testing bietet eine spürbare Aufwertung aller darüber angesteuerten Testautomatisierungen. Dies geschieht durch Steigerung von Effektivität, Nutzen und Sichtbarkeit.

Durch die kontinuierliche und zeitnahe Testausführung, ohne einen manuellen Anstoß zu benötigen, steigt automatisch die Effektivität, da die Testautomation schneller, öfter und zu exakt definierten Zeitpunkten ausgeführt werden kann.

Die höhere Effektivität steigert somit auch den Nutzen, weil regelmäßiger und rascher entsprechende Reports mit den Testergebnissen zu Verfügung stehen.

Diese Reports können durch den Continuous Testing Prozess nicht nur automatisiert aufbereitet, sondern auch an die relevanten Personen direkt ausgeschickt werden. Somit ist die Effektivität und der Nutzen der Automatisierung sichtbarer für alle Beteiligten und auch Managementebenen können leichter Zugang zu wertvollen Informationen haben.

 

Einfach zu erstellen

Sind lauffähige Testautomationen schon erstellt worden, so ist es mit nur wenig Aufwand möglich, diese Automation auf ein Continuous Testing Konzept zu erweitern. Meist reicht es das verwendete Automationstool so einzurichten, dass Testläufe von außen (zB über einen Batch Befehl) angestartet werden kann. Diese Steuerungsmöglichkeit (bzw. der Befehl) kann entsprechend von einer Continuous Integration Umgebung ausgeführt werden. Durch die Einbettung der Testautomation in die Umgebung wird Continuous Testing erst möglich.

 

Vielseitig einsetzbar

Da jede Continuous Integration Umgebung verschiedene Möglichkeiten bietet um die Steuermöglichkeit des Automationstools zu nutzen, möchte ich die drei wichtigsten Arten zum Starten von Testläufen herausstreichen.

Mit einem manuellen Start ist es möglich, per Klick den automatisierten Testlauf zu starten und somit auf Wunsch Ergebnisse zu erhalten. Auch wenn der manuelle Start nicht der Fokus eines Continuous Testing Konzeptes darstellt, so wird er immer wieder benötigt.

Viel öfter wird der zeitliche Start angewandt. Dieser ermöglicht einen vollautomatisierten Testlauf zu einem bestimmten Zeitpunkt (zB nächtlich um 23.00 Uhr, jeden Donnerstag um 6.30 Uhr,…). Zu diesem Zeitpunkt wird ohne manuellem Eingriff der Testlauf gestartet, abgehandelt und die Ergebnisse entsprechend protokolliert.

Ebenso oft wie ein zeitlicher, wird auch ein build-abhängiger Start verwendet. Hier löst der Durchlauf eines anderen Continuous Integration Prozesses (zB Deployment, ein vorgelagerter Testlauf,…) den passenden Testlauf aus. Diese Variante bietet besonders erfolgreich Anwendung bei Regressionstestsets, welche nach einer Einspielung sofort gestartet werden und somit zeitnahe die Ergebnisse liefern. Auch das Ergebnis eines vorgelagerten Build Prozesses kann dabei verwendet werden, um einen Testlauf automatisch zu starten oder nicht. So ist es zum Beispiel möglich ein detailliertes Regressiontestset erst nach einem erfolgreichen Smoketest durchführen zu lassen.

 

Der Trend der Zukunft

Durch Continuous Testing ist es möglich, Test zu beliebigen Zeiten, nach beliebigen Build-Prozessen und im beliebigen Ausmaß vollautomatisiert durchzuführen. Dies ermöglicht nicht nur direkte Regressionstests sondern eine komplette Einbindung in den Software Delivery Prozess. Diese Einbindung geschieht über die Kombination von Continuous Integration mit Continuous Testing, was mit wenig Aufwand schnell erreicht werden kann.

Durch das schnelle und zeitnahe Ausführen von Test und dadurch das Erzielen von Ergebnissen, wird der gesamte Software Delivery Prozess in der Qualität gestärkt.

Der Trend zum Continuous Testing ist somit begründet und die Wahrscheinlichkeit ist sehr hoch, dass schon bald aus den beiden Begriffen Continuous Integration und Continuous Testing nur noch ein Begriff und somit ein neuer Trend der Zukunft wird: Continuous Delivery.

 

Videorückblick

Bei der Konferenz zeigte ich anhand eines praxiserprobten Beispiels, wie Tosca CI einfach & effektiv in Kombination mit Jenkins eingesetzt werden kann. Beleuchtet wurden Herausforderungen in Konfiguration & Reporting und ich berichtete über nützliche zeit- und buildabhängige Möglichkeiten zur automatisierten Teststeuerung, sowie über Projekterfahrungen & deren Erfolgsfaktoren.

Passende Artikel

Kommentare gesperrt.