Andreas Dangl, Fabasoft

Interview mit Andreas Dangl, Geschäftsführer der Fabasoft Distribution GmbH

Andreas Dangl, Fabasoft Distribution GmbH

IT-DIRECTOR: Herr Dangl, welche Bedeutung schreiben Sie den Testverfahren in der Software-Entwicklung zu?
A. Dangl:
Software gehört zu den komplexesten Werken, die Menschen erschaffen haben. Deren Entwicklung zeichnet sich dadurch aus, dass sich die Anforderungen der Kunden ständig ändern. Kunden erwarten kurze Entwicklungszyklen, höchste Qualität und Flexibilität. Diese Anforderungen können nur durch eine gezielte, ganzheitliche und koordinierte Qualitätssicherung erfüllt werden. In der agilen Software-Entwicklung wird dies durch kontinuierliche und automatisierte Prozesse abgedeckt, was als der entscheidende Erfolgsfaktor betrachtet wird.

IT-DIRECTOR: Nach welchen Testarten wird differenziert?
A. Dangl:
Es werden grundsätzlich zwei Arten von Tests unterschieden – die sogenannten White-Box-Tests und die Black-Box-Tests. Der Unterschied liegt im Betrachtungsobjekt. Bei White-Box-Tests wird direkt auf Code-Ebene getestet, wodurch die sogenannten Kontrakte (Schnittstellen) getestet werden. Dieses sind die „Unit-Tests“.

Die sogenannten Black-Box-Tests betrachten eine Applikation von außen. In der agilen Software-Entwicklung werden jene Tests als Akzeptanztests bezeichnet, die eine Software bzw. die Interaktion mit der Software aus der Sicht der Anwender betrachten und testen. Dadurch wird die Software so getestet, wie Benutzer sie verwenden – über die Benutzeroberfläche. Im Webumfeld werden solche Tests über einen Webbrowser ausgeführt.

Durch Unit-Tests werden Codeteile (sog. Units) getestet. Damit wird sichergestellt, dass der getestete Code mit verschiedenen Eingabeparametern und unter unterschiedlichsten Voraussetzungen erfolgreich und stabil ausgeführt werden kann.

IT-DIRECTOR: Wer führt die Tests normalerweise durch und welche Werkzeuge kommen zum Einsatz?
A. Dangl:
In der testgetriebenen Entwicklung werden Tests schon während der Programmierung von den Software-Entwicklern aufgezeichnet. Dabei handelt es sich um Unit-Tests. Die populärsten Unit-Test Frameworks sind im Java Bereich JUnit oder TestNG, im .NET-Bereich NUnit und im C++-Bereich CPPUnit.

Akzeptanztests zum Testen der Benutzeroberfläche werden häufig von den jeweiligen Fachabteilungen durchgeführt. Durch die Entwicklung von Fabasoft App.test ist es uns gelungen, auch diese GUI-Tests zu automatisieren und zu vereinfachen. Mit App.test ist kein technisches Detailwissen über die zu testende Anwendung notwendig. Tests können mit einfachen Klicks über die Oberfläche der jeweiligen Anwendung aufgezeichnet werden. Einmal aufgezeichnete Tests werden anschließend völlig automatisiert in Continuous-Integration-Systemen wie z.B. Hudson/Jenkins ausgeführt. Dazu ist es wichtig, dass Test-Tools auch z.B. Ant-Tasks unterstützen. Durch die Verwendung von Ant-Tasks können alle Tests unmittelbar in den Build-Prozess integriert werden.

IT-DIRECTOR: Nach welchen Kriterien wird Software generell getestet?
A. Dangl:
Gemäß ISO 9126 sind die Betrachtungsobjekte der Software-Qualität u.a. Funktionalität, Stabilität und Usability. Um auch sicherzustellen, dass neue Versionen der Software funktionieren, müssen alle Tests permanent schon während der Entwicklung ausgeführt werden. Diese Aufgabe wird von sogenannten Continuous-Integration-Systemen unterstützt. Sie sorgen dafür, dass ständig die aktuellste Version einer Software gebaut, getestet und das Ergebnis automatisch in Form von Berichten zur Verfügung gestellt wird. App.test integriert sich nahtlos in Continuous-Integration-Systeme, wodurch permanentes Testen Realität wird.

IT-DIRECTOR: Aus welchen Phasen/Stufen setzt sich ein Testprozess zusammen?
A. Dangl:
Für Akzeptanztests, die mit App.test ausgeführt werden, ergeben sich folgende Phasen: Testaufzeichnung, Testausführung und Analyse der Reports. Dabei kann die Testausführung vollständig automatisiert und auf unterschiedlichen Plattformen verteilt in einem Continuous-Integration-System erfolgen. Die entsprechenden Reports werden im Anschluss automatisch generiert und an die jeweils verantwortlichen Entwickler per E-Mail verschickt. Über diese Phasen hinweg unterstützt App.test die Verwaltung der Tests sowie der dafür benötigten Test-Infrastruktur.

IT-DIRECTOR: Mit welchen Daten wird bei den Tests gearbeitet?
A. Dangl:
Die verwendeten Testdaten entscheiden maßgeblich darüber, welche Arten von Fehlern in welcher Phase der Software-Entwicklung gefunden werden. Durch die Verwendung von unterschiedlichen Daten wie Testdaten, Demodaten und Produktionsdaten, lassen sich rasch die unterschiedlichen Konstellationen abbilden: Entwicklerarbeitsplatz, Testdaten, Testsysteme/Integrationssysteme, Testdaten, Demodaten (teilweise analog zu Testdaten), produktionsnahes Testsystem sowie Produktionsdaten.

IT-DIRECTOR: Falls mit Echtdaten getestet wird: Wie werden hierbei Sicherheit und Compliance gewährleistet, so dass keine Rückschlüsse auf Personen-/Firmendaten gezogen werden können?
A. Dangl:
Vor der Ausführung von Tests mit kritischen Echtdaten muss eine Anonymisierung erfolgen. Dies erfolgt auf Ebene der Metadaten sowie auf Ebene der Inhalte bzw. Dokumente. Dadurch können allerdings bestimmte Tests nicht mehr ausgeführt werden, da diese beispielsweise spezifische Metadaten benötigen.

IT-DIRECTOR: Wie viel Zeit nimmt i.d.R. die Testphase von Software-Modulen/Applikationen in Anspruch, ehe der Einsatz in der Produktivumgebung erfolgt?
A. Dangl:
In der agilen Software-Entwicklung sind die Testphasen in den Iterationen enthalten. Dies hat zur Folge, dass Entwicklung und Qualitätssicherung parallel erfolgen können. Testgetrieben bedeutet, dass die Tests für einzelne Module bzw. Neuentwicklungen unmittelbar erstellt werden und eine sogenannte User-Story (eine Anforderung an die Software beschrieben aus der Sicht des Endanwenders) erst dann fertig ist, wenn die Tests dafür existieren und fehlerfrei durchlaufen. Dadurch ist die bekannte Phasenbetrachtung des Software-Entwicklungsprozesses nicht mehr aktuell und explizit messbar. Das Ziel ist es, nach jeder Iteration ein „potentially shippable product increment“ zu haben, das an die Kunden ausgeliefert werden kann. Iterationen dauern typischer Weise vier Wochen oder kürzer.

IT-DIRECTOR: Wie groß ist die Fehlertoleranzgrenze beim Testen von Software?
A. Dangl:
Jede Software hat Fehler. Daher muss während der Entwicklung das Ziel sein, keine „Known-Defects“ zu haben. D.h. es sind keine bekannten Fehler mehr in der Software enthalten. Durch unterschiedliche Metriken, Qualitätskennzahlen und Tools wird es möglich, die Qualität von Software zu bewerten und objektiv zu messen. So wird beispielsweise durch Code-Coverage sichtbar, welche Teile des Source-Codes während der Ausführung der Tests durchlaufen wurden. Dadurch wird eine erste Aussage über die Qualität der Software aber auch die Qualität der Tests möglich. Durch Kennzahlen zur Bewertung von Code-Qualität, wie beispielsweise Komplexitätskennzahlen (zyklomatische Komplexität) oder eine statische Code-Analyse kann die diesbezügliche Aussage weiter objektiviert werden.

IT-DIRECTOR: Welche Software-Fehler treten am häufigsten auf?
A. Dangl:
Häufig auftretende Fehler betreffen sogenannte Side-Effects. Dies bedeutet, dass eine Änderung an einer Stelle im Code unerwünschte bzw. unvorhergesehene Auswirkungen auf einen anderen Teil der Applikation hat. Durch Test-Driven-Development wird dies gezielt verhindert. Jede Änderung am Code erfolgt auf Basis eines Unit-Tests. Wenn nun andere Entwickler für die Lösung ihrer Probleme eine Änderung an einer Stelle vornehmen, werden Side-Effects sofort sichtbar, da diese spätestens bei der Ausführung aller Unit-Tests erkannt werden.

IT-DIRECTOR: Welchen Schaden können Software-Fehler anrichten?
A. Dangl:
Software-Fehler können erhebliche finanzielle Schäden anrichten. Je später ein Fehler im Software-Entwicklungsprozess entdeckt und behoben wird, umso höher ist der finanzielle Schaden der daraus entstehen kann. Wird Software in sicherheitskritischen Umgebungen eingesetzt, ist es besonders wichtig, dass diese getestet ist und funktioniert. Theoretisch könnten durch Software-Fehler nicht nur finanzielle Schäden entstehen, sondern auch die Umwelt oder Personen zu Schaden kommen. Deshalb gilt generell: besser vorher in gute Tests investieren als im Nachhinein die Folgen beheben zu müssen.

©2020Alle Rechte bei MEDIENHAUS Verlag GmbH

Unsere Website verwendet Cookies, um Ihnen den bestmöglichen Service zu bieten. Durch die weitere Nutzung der Seite stimmen Sie der Verwendung zu. Weitere Infos finden Sie in unserer Datenschutzerklärung.

ok