Abstract

Effektives Software Testen kann Geld und Aufwand einsparen, indem dadurch Probleme vermieden werden, bevor sie längere Zeit im Softwareentwicklungsprozess unentdeckt bleiben. Es ist klar, umso länger ein Fehler unentdeckt bleibt, desto mehr kostet die Behebung. Deshalb ist Testen ein entscheidender Teil der Testautomatisierung. Es kann auch sehr teuer und arbeitsintensiv sein, vor allen Dingen, wenn es händisch gemacht wird. Es wird geschätzt, dass der Aufwand um eine Software zu testen mindestens die Hälfte der Gesamtprojektkosten ausmacht. Automation kann das Testen genauer und billiger durchführen als wenn man lediglich einige Personen in einen Raum steckt und sie Tests nach einem Papierskript durchführen lässt. Es befreit die Tester auch von Arbeiten die sie von spezifischeren und tiefer gehenden Tests abhalten. Diese Arbeit zielt auf Software Testautomatisierungstechniken ab und wie Automation die Effektivität eines Softwareteams als auch des finalen Produkts steigern kann.

Zusammenfassung

Während Automation von gewissen Teilen des Softwaretestens die Produktivität und die Effektivität von Software Entwicklungsprojekten drastisch steigern kann, werden nur selten 100% aller Anforderungen durch automatisierte Tests abgedeckt. Bestimmtes Testen wird immer noch am besten manuell gemacht, weil menschliche Tester viel flexibler und kreativer als jegliches Computerprogramm sind. Automation gibt den menschlichen Testern Freiraum tiefer in das System einzutauchen und befreit sie davon sich wiederholende Aufgaben erledigen zu müssen, für die Automation viel angebrachter ist.

Mit etwas Zusammenarbeit zwischen Entwicklern und Testern kann Software Code viel testbarer gemacht werden. Coding für Testbarkeit ist eine Schlüsselüberlegung für Programmierer in einer agilen Entwicklungsumgebung. Zum Beispiel zeigte ich in meinem praktischen Beispiel mit dem Rezeptboxprogramm, wie GUI Komponenten, die zu privaten class members erklärt wurden, immer noch mit einem selbst gebauten Testskript getestet werden können ohne die Grundprinzipien des Objektorientierten Programmierens umzustoßen oder fragwürdige Workarounds basteln zu müssen.

Automatisiertes Software Testen ist ein Software Entwicklungsprojekt für sich und sollte als solches behandelt werden, d.h. auch alle üblichen Software Entwicklungsprozesse sollten enthalten sein: Versionskontrolle, Codereviews, Coding Standards usw. Vorschläge wurden in dieser Arbeit gemacht wie die Kosten, die mit den Automatisierungsaufwänden zusammen hängen, minimiert werden können.

Es gibt viele pre-packaged Tools, um Testern zu helfen Testskripts zu schreiben. Manche von kommerziellen Herstellern können teuer sein, während andere Tools open-source sind und somit frei zur Verfügung stehen. In Wahrheit handelt es sich bei der open-source Community um ebenso fähige Leute wie kommerzielle Hersteller von qualitativ hochwertigen Software Testingtools.

Die komplette Masterarbeit können Sie hier (PDF) lesen.

Masterarbeit: Steigerung der Effektivität der Software Testautomatisierung - Dezember 2015, David Wayne Jansing,  State University of New York Polytechnic Institute,  Utica, New York, USA.

Englische Texte und Zitate wurden ins Deutsche übersetzt.