Kontinuierliches Software Testing sorgt dafür, dass die Qualität Ihrer Softwarelösungen stimmt und die Kosten niedrig gehalten werden.

Automatisiertes Software Testing: Warum es sich bei der Softwareentwicklung rentiert

Artikel von David Flury, Software Engineer, Sevitec

Stichworte wie «Continous Deployment» oder «Continuous Delivery» sind in der modernen Softwareentwicklung innerhalb der DevOps-Prinzipien heute in aller Munde. Dabei geht jedoch oft eine wichtige Grundvoraussetzung verloren: das kontinuierliche Software Testing. Nur damit kann die Qualität eines Softwareprodukts innerhalb des geplanten Budgets sichergestellt und entsprechend geliefert werden.

Kontinuierliches Software Testing schont die Nerven und den Geldbeutel

Werden Tests erst ganz am Ende der Entwicklungsphase – im schlimmsten Fall nur durch den Kunden selbst – durchgeführt, resultiert dies sehr oft in erheblichen Qualitätsmängeln, die im Nachhinein ausgebessert werden müssen. Die Folge daraus sind notwendige Zusatz- oder Re-Entwicklungen, die sich auch in einem erhöhten finanziellen Aufwand zu Buche schlagen.

Kontinuierliches Software Testing über den gesamten Entwicklungsverlauf hinweg sorgt dafür, dass die Qualitätssicherung immer im Blickfeld bleibt und die Entwickler darüber hinaus in die Verantwortung des späteren Softwarebetriebs gezogen werden können. Auf diese Weise wird die Qualitätssicherung zur Kernaufgabe und bildet nicht mehr das oft vernachlässigte Übel am Ende eines Softwareprojekts. 

Software Testing auf höchstem Level

Beim «Test Driven Development» (TDD) geht dieser Prozess noch einen Schritt weiter. Dabei werden die Tests bereits am Beginn des Entwicklungsprozesses geschrieben, noch bevor die eigentliche Logik implementiert wird. Weitere Prinzipien wie «Pair Programming» bringen zudem neuen Wind in ein Entwicklungsteam und fördern die Zusammenarbeit. 

Da das kontinuierliche Software Testing den Aufwand der Qualitätssicherung über das gesamte Projekt verteilt und automatisierte Tests zukünftigen – und in der Regel nicht notwendigen – Folgekosten entgegenwirken, sollte auch das Management diesen Ansatz unterstützen.

Testing sorgt für zeitnahe Optimierungen der zukünftigen Softwarelösung

Der Begriff „EDV“ – elektronische Datenverarbeitung – wird zwar heute nicht mehr oft verwendet, beschreibt jedoch die Anforderungen der meisten Softwareprojekte passend. Es geht um einen Input, der durch einen „magischen Code“ manipuliert wird und so zum gewünschten Output führt. Oftmals ist dem Kunden dabei jedoch nicht klar, was der Input sein soll und wie der Output im Idealfall aussehen muss. 

Auch hier hilft die Mentalität des Testens, um gemeinsam eine optimale Spezifikation zu erarbeiten. Versteht sich auch der Kunde von Beginn des Projekts an als Teil der Qualitätssicherung – und somit der Softwareentwicklung – werden auch die einzelnen Anforderungen testgetrieben formuliert. Der Kunde hat so die Gewissheit, dass die gelieferte Logik seinen Wünschen entspricht. Mögliche Unstimmigkeiten und Missstände können zeitnah ab dem Beginn der Entwicklung an konkreten Testfällen diskutiert und optimiert werden.

Automatisiertes Testing verbessert die Softwarearchitektur

Softwareentwickler sind Ingenieure, aber auch Künstler. Obwohl der eigentliche Quellcode einer Software meist verborgen bleibt, soll dieser ansprechend strukturiert und frei von Redundanzen sein. Nur wenn die einzelnen Komponenten isoliert sind und keine unnötigen Abhängigkeiten existieren, kann sinnvoll getestet werden. 

Entwirft ein Entwickler eine neue Software und hat dabei immer die Tests im Hinterkopf, entsteht automatisch eine bessere Softwarearchitektur. Dank dieser Herangehensweise ist der Entwickler immer wieder motiviert, Konzepte zu überdenken und optimal zu strukturieren. Beispielsweise wird so vermieden, Businesslogik im Bereich des UI zu implementieren. Was zwar auf die Schnelle funktionieren kann, wäre nicht mehr testbar und würde bei zusätzlichen Erweiterungen in der Zukunft möglicherweise Probleme bereiten. 

Die verbesserte Architektur ist nicht nur bei Qualitätsaspekten ein bedeutender Vorteil. Sie sorgt gleichzeitig dafür, dass die entwickelte Softwarelösung auch in Bezug auf zukünftige Erweiterungen ausgezeichnet gerüstet ist.

Sorgenfrei dank Testing

Jede Änderung im Code kann potenziell einen Fehler (Regression) mit sich ziehen. Ist die veränderte Komponente jedoch über mehrere Tests abgedeckt und sind diese nach der Anpassung immer noch funktionsfähig, ist dies das beste Mittel gegen schlaflose Nächte vor einem grossen Release.

Ein kontinuierliches und sinnvolles Software Testing animiert zudem die Entwickler, Konstrukte aus der Vergangenheit kritisch zu betrachten und allenfalls durch bessere Lösungen zu ersetzen. Auch dies ist nur vertretbar, wenn entsprechend sichergestellt werden kann, dass dabei keine bestehende Funktionalität beschädigt wird.

Mit Sevitec profitieren Kunden von optimalen Softwarelösungen dank Testing

Regelmässiges Testen bedeutet, kontinuierlich eine bessere Softwarelösung zu erzielen. Dabei braucht es im gesamten Entwicklungsteam und auch bei der Projektleitung ein Umdenken und im Idealfall eine Ausrichtung auf definierte Testfälle. 

Bei Sevitec bringen wir die dafür erforderliche Mentalität in Ihre Projekte mit, um nicht nur die Qualität von heute, sondern auch von morgen zu fairen Preisen zu gewährleisten.

Interessieren Sie sich für individuelles Software Engineering by Sevitec? Kontaktieren Sie uns!