Einleitung

Softwaretechnologien haben sich in den letzten Jahren so schnell und umfangreich weiterentwickelt, dass Entwickler kaum noch Zeit hatten, sich zusätzlich um die Softwarequalität zu kümmern. Daher ist Testen ein immer wichtigerer Teil der Softwareentwicklung geworden, um die Entwickler zu entlasten.

Da in der heutigen Zeit das Leben der Menschen von Computersoftware abhängt, ist es notwendig, wenn eine professionelle Umsetzung erfolgt. Dies ist ein Grund, warum Softwaretesten von größter Bedeutung ist. Testen muss vor dem Einsatz der Software durchgeführt werden, denn dies hilft dabei, Fehler rechtzeitig zu entdecken und sicherzustellen, dass die Funktionalitäten der Software wie erforderlich funktionieren. Softwaretest ist ein wichtiger Teil der Software-Qualitätssicherung, eine Aktivität zur Bewertung und Verbesserung der Software-Qualität (Vgl. F. Okezie et al 2019 S. 1).

In den letzten Jahren kam es häufig vor, dass Software fast fertiggestellt war, bevor sie getestet wurde, weil viele Unternehmen noch nicht über definierte Testabteilungen verfügten. Nach einigen negativen Erfahrungen, die daraus gesammelt wurden, gibt es nun eine Einigkeit darüber, wie bedeutsam die Schulung und das Bewusstsein für die Wichtigkeit von Softwaretests während der Entwicklung inzwischen ist. Das Testen von Software ist notwendig, um den Anspruch an eine hohe Lieferqualität zu erfüllen, egal ob die Software an Kunden oder interne Anwender ausgeliefert wird (Vgl. Witte (2019), S. 4.).

Im Rahmen dieser Arbeit wird der Frage nachgegangen, wo die Unterschiede, Gemeinsamkeiten, Probleme und Grenzen zwischen den einzelnen Testtools liegen. Zusammenfassend werden die Testwerkzeuge miteinander verglichen. Dabei muss das Erreichen der Ziele, Qualität, und Zeit möglich sein, wobei auch die ökonomischen Aspekte berücksichtigt werden müssen.

Außerdem werden verschiedene Testwerkzeuge mittels unterschiedlicher Kriterien miteinander verglichen. In Kapitel 2 werden die für diese Arbeit relevanten Begriffe, wie Softwarequalität, Tests, Fehler, Testwerkzeuge und Testaufwand genau definiert. In Kapitel 3 werden die grundlegenden Testverfahren und Testarten vorgestellt. Zu den Testverfahren gehören der statische und der dynamische Test. Im statischen Test werden die werkzeugunterstützte Analyse sowie die strukturierten Gruppenprüfungen - auch Reviews genannt - genauer betrachtet. Im dynamischen Test werden die Blackbox- und die Whitebox-Verfahren erläutert. Zu den Testarten gehören der Unit Test, Integrationstest, Systemtest, Abnahmetest, funktionaler Test, nicht funktionaler Test, Negativtest, Regressionstest sowie End-to-End-Test. In Kapitel 4 wird das Fehlermanagement genau erläutert. Daraufhin wird in Kapitel 5 eine Kategorisierung der Testwerkzeuge dargestellt. Dabei werden zwischen Tools für statischen Test und Tools für dynamischen Test unterschieden. Im Kapitel 6 werden die gängigen Tools zueinander verglichen. Dabei wird definiert, was unter diesen Testwerkzeugen verstanden wird und wie diese funktionieren. Da die Lizenz von drei Tools nicht zugänglich war, darunter „Ranorex“, „TestComplete“, „UFT (Unified Functional Testing)“, wird es in dieser Arbeit nur auf die Beschreibung dieser Tools eingegangen. Weiterhin wird im Kapitel 7 gezeigt, wo die Testtools nach Systemart eingesetzt werden können. Schließlich werden im Kapitel 8 unter Berücksichtigung der Programmierkenntnisse und der Wirtschaftlichkeitsüberlegungen den Benutzern Empfehlungen vorgelegt.

Ergebnisse

Nach umfangreicher Recherche in der Literatur zu folgenden Testwerkzeugen werden in der nachstehenden Tabelle die benötigten Informationen über die Tools zusammenfassend dargestellt, die auf bestimmten ausgewählten Kriterien basieren. Diese Analyse kann den Testern helfen, das beste Werkzeug zum Testen von Software auszuwählen. In der Tabelle sind noch einmal die Eigenschaften der Tools zusammengefasst.

Kriterien/ToolsTestCaféSelenium Web-DriverAppiumSelenium IDEQF-TestRanorexTestCompleteUFT

Programmier-
sprache

JavaScript, Type-Script, CoffeeScriptJava, C#, Perl, Python, JavaScript, Ruby, PHPJava, C#, Perl, Python, JavaScript, Ruby, PHPJava, C#, Perl, Python, JavaScript, Ruby, PHPJava, Python, Groovy, JavaScriptC #, Python, C++, VB.net and XMLVbScript , Delphi, C++, C# und JScriptsVbScri pt
Unterstützte PlattformWebWebMobile, WindowsWebJava, Web, Desktop (Win), Mobile (Android)Mobile, Web, Desktop (Win)Mobile, Web, Desktop (Win)Web, Desktop (Win)
Berichte über Testergebnissejajajajajajajaja
Wiederver-
wendbarkeit
jajajaneinjajajaja
Aufnahme/ Wiedergabeneinneinneinjajajajaja
leicht zu lernenjajaneinjaja   
Programmier-kenntnissejajajajaneinneinneinnein
Werkzeuge TestartenEnd-to-End TestFunktional Unit Test, End-to-End TestGUI Test, Funktional Unit TestFunktional Unit TestGUI TestGUI TestFunktional Unit Test, GUI Test, Unit TestFunktional Unit Test, Regression Test
LizenzFreiFreiFreiFreiNicht freiNicht freiNicht freiNicht frei
Quellen

DevExpress - TestCafe 
Dokumentation (2012-2021)

Thought-Works - Selenium Dokumentation (2021)Tom Christie Appium - Dokumentation (2014)Thought-Works - Selnium Dokumentation (2021)QF-Test Dokumentation (2020)Ranorex GmbH - Dokumentation (2021)Smart-Bear Software - Dokumentation (2021)MicroFocus - Dokumentation (2021)

 

Empfehlungen

In der Softwareentwicklung ist die Qualität das wichtigste Ziel eines jeden Projekts, daher wird empfohlen, bei der Auswahl eines Werkzeugs den Umfang des Projekts und die für das Testen veranschlagten Kosten zu berücksichtigen, Auch die Plattform, auf der das Projekt eingesetzt werden soll, sollte sich bei den Kriterien für die Auswahl eines Testwerkzeugs widerspiegeln. Aufgrund der in dieser Arbeit erzielten Ergebnisse werden Ranorex, TestComplete, UFT und QF-Test für das Testen auf allen Plattformen und bei großen Projekten empfohlen. Da es sich dabei um lizenzierte Tools handelt, sollte das Budget für das Testen berücksichtigt werden. Appium wird für mobile Anwendungen empfohlen, während TestCafe, Selenium Webdriver, Selenium IDE für Web-Test zur Verfügung stehen (Vgl. F. Okezie et al. 2019 S. 9).

  • Zielgruppe ohne Programmierkenntnisse
    Für Benutzer ohne Programmierkenntnisse empfiehlt sich die Verwendung von QFTest, Ranorex, TestComplete, UFT und Selenium IDE, da diese Software keine Programmierkenntnisse erfordern. Die Tools sind zum Aufzeichnen von automatisierten Testfällen gedacht und verfolgen das gleiche Ziel.
    Diese Tools sind benutzerfreundlich und gut bedienbar und die Benutzeroberfläche ist übersichtlich und erklärt sich von selbst. Dies macht es für Anfänger und unerfahrener Tester einfach. Bei Selenium IDE z. B. werden die möglichen Eingaben mittels Popup vorgeschlagen, falls Kommandos per Hand in den Tab „Table“ eingefügt werden müssen. Zudem sind die möglichen Eingaben auf der Webseite von jedem Tool gut dokumentiert. Zusätzlich kann der Quellcode auch nachträglich verändert werden, was das Tool auch für Tester interessant macht. Des Weiteren können die Tests sofort nach der Aufzeichnung erneut ausgeführt werden, so dass die korrekte Funktion der Tests auch für unerfahrene Benutzer leicht zu überprüfen ist.
  • Zielgruppe mit Programmierkenntnissen
    Für Benutzer mit Programmierkenntnissen empfiehlt sich TestCafe, Selenium Webdriver, Appium zu verwenden. Hier wird es der persönlichen Entscheidung des Benutzers überlassen, da dies eine Frage der eigenen Interessen ist.
    Zu empfehlen ist es unbedingt, eine kostenlose Testversion anzufordern, um sich vor Beginn der offiziellen Tests mit dem Ablauf vertraut zu sein. Wie in dieser Arbeit zu sehen, bieten nicht alle Anbieter eine breite Palette an Skriptsprachen zur Auswahl, so dass die Tools, die die bevorzugte Technologie nicht anbieten, schnell abgelehnt 66 werden können. Da der Markt für Mac-Benutzer besonders klein ist, sollte die Anschaffung eines Virtualisierungsprogramms in Betracht gezogen werden.
  • Investition in Testwerkzeuge
    Die Einführung eines neuen Werkzeugs ist mit Kosten für Auswahl, Anschaffung und Wartung der Werkzeuge verbunden. Zusätzlich können Kosten für Hardware und Mitarbeiterschulungen hinzukommen. Abhängig von der Komplexität des Werkzeugs und Anzahl der auszustattenden Arbeitsplätze kann die Investition schnell im sechsstelligen Bereich liegen. Wichtig ist natürlich, wie bei jeder Investition, den Zeitrahmen für die Amortisation des neuen Testwerkzeugs zu definieren.
    Bei Werkzeugen zur Automatisierung der Testausführung lässt es sich leicht abschätzen, wie viel Aufwand durch einen automatisierten Testlauf im Vergleich zur manuellen Ausführung eingespart werden kann. Der neue Aufwand für die Programmierung des Tests muss noch abgezogen werden, so dass nach nur einem automatisierten Testlauf die Kosten-Nutzen-Bilanz meist negativ ist.
    Bei der Investition muss auch berücksichtigt werden, inwieweit sich die Testqualität durch den Einsatz des neuen Werkzeugs erhöht, was dazu führt, dass mehr Fehler gefunden und behoben werden. Die Kosten für Entwicklung, Support und Wartung werden dadurch gesenkt. Allerdings ist das Einsparpotenzial hier höher und daher interessanter (Vgl. Spillner & Linz. (2019) S. 223 f.).
    Falls es sich bei der zu testenden Software um ein kleines Projekt handelt, können Open-Source-Tools verwendet werden, anstatt mehr Kosten für den Kauf eines lizenzierten Tools zu investieren. Wer nur ein sehr geringes Budget zur Verfügung hat, dem lassen sich die kostenlose Software TestCafe, Selenium Webdriver, Selenium IDE, Appium empfehlen.

 

Fazit

Ziel dieser Arbeit war es, einzelne Testwerkzeuge anhand verschiedener Kriterien im Bereich des Softwaretests miteinander zu vergleichen. Für den Vergleich wurden Testtools vom Internet ausgewählt und mittels einer Kino-Webseite getestet, die im Rahmen des Moduls „Webtechnologie“ während des Studiums programmiert wurde.

Es ist für einen Tester unerlässlich, einige wichtige Begriffe aus dem Bereich Softwaretests und ihre Definitionen zu kennen. Dazu zählt der Begriff Softwarequalität, weil die Qualität und ihre Sicherung auch zu den Aufgaben des Testers gehören. Ebenso muss ein Tester die Definition von Tests beherrschen, um die Arbeit mit Wissen erledigen zu können. Auch der Begriff des Fehlers, der unterschiedliche Definitionen haben kann, je nachdem worauf sich der Fehler bezieht, muss bekannt sein. Da ein Tester in einem Projekt nur eine bestimmte Zeit zum Testen hat, muss er in der Lage sein, die Dauer des Tests abzuschätzen. Darüber hinaus unterscheiden sich die wichtigsten Arten von Tests, die sich für die Durchführung eignen, in der Zielsetzung. Dazu gehören die Ziele und Methoden der funktionalen Tests, bei denen die Funktionalität des Systems, wie sie in einer Spezifikation beschrieben ist, geprüft wird. Umgekehrt gibt es auch die nicht funktionalen Tests, die sich mit Aspekten wie der Benutzerfreundlichkeit und der Akzeptanz durch den Benutzer befassen. Damit das Testen durchgeführt werden kann, werden Verfahren benötigt, um Testfälle zu erstellen bzw. eine Sicht auf das Testobjekt bekommen zu können. Dabei sind Verfahren wie das Blackbox-Verfahren, welches das Testen aufgrund von Spezifikationen durchführt, und das Whitebox-Verfahren, welches den Programmtext als Referenz für die Tests hernimmt, zu betrachten. Bei beiden Verfahren können verschiedene Ansichten des Testobjekts betrachtet werden, die sich stark unterscheiden und einen guten Überblick über das System geben.

Softwaretests sind ein wichtiger Teil des Lebenszyklus der Softwareentwicklung. Sie stellen sicher, dass die auf dem Markt bereitgestellte Software frei von Fehlern ist. Deswegen muss einen Tester die verschiedenen Software-Testing-Methoden sowie die Kategorien von Werkzeuge und deren Anwendungsgebiete unterscheiden können. Tester sollte sich immer der Verwendung dieser Werkzeuge im Entwicklungsprozess bewusst sein.

Während der Arbeit konnte festgestellt werden, dass einige Tools nur zum Testen von Webanwendungen geeignet sind und andere zum Testen von Web, Mobile, Desktop - Anwendungen verwendet werden können. Auch die meisten Tools waren „Capture/Replay Tools“, die auch von Benutzern ohne Programmierkenntnisse verwendet werden können.

Was einen guten Tester ausmacht, ist die gesammelte Erfahrung im Bereich Softwaretesten, denn nur durch viel Erfahrung kann ein Tester ein gutes Gefühl für das Auffinden von Fehlern in Software entwickeln. Eine weitere Voraussetzung für einen guten Tester ist das Mitbringen von vielen Programmierskills, weil die Skripte in unterschiedlichen Programmiersprachen erzeugt werden. Da ein Tester derjenige ist, der den von einem anderen verursachten Fehler an den Entwickler überbringt, muss er eine gewisse Sensibilität haben, um die Entwickler davon zu überzeugen, den von ihm gefundenen Fehler zu beheben.

Wegen der in dieser Arbeit behandelten Punkte ist der Softwaretest nicht mehr in der Softwareentwicklung wegzudenken. Als Softwaretester ist man verantwortlich für die Sicherstellung der Qualität des Produkts sowie der Dokumentation. Dadurch können sich die Entwickler auf die Programmierung, den Entwurf und die Korrektur von Fehlern im Programm konzentrieren. Sie müssen die Fehler nicht mehr selbst suchen, sondern sie bekommen sie durch die Tester vorgestellt. Deswegen muss die Zusammenarbeit und das gegenseitige Unterstützung zwischen ihnen gut funktionieren.

Diese Arbeit wäre für Tester und Entwickler nützlich, um zu wissen, welches Werkzeug für ein bestimmtes Projekt am besten geeignet ist, mehr Werkzeuge können verglichen werden und mehr Kriterien für den Vergleich herausstellen. Dies würde Softwaretestern die Möglichkeit geben, perfekte Tools für das Testen von Anwendungen auszuwählen. Dadurch wird mehr Zeit gespart und die Kosten werden reduziert, wenn das richtige Testwerkzeug ausgewählt wird. Daraus lässt sich die Schlussfolgerung ziehen, dass es nicht das eine perfekte Werkzeug für das Testen gibt, sondern für einen bestimmten Testzweck, können je nach Größe des Projekts Kompromisse geschlossen werden, um das beste Tool auszuwählen, das die geplanten Kosten für das Testen berücksichtigt und die Plattform der Anwendung und auch die Sprache, in der das Projekt entwickelt wird, ermöglicht.

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

Bachelorarbeit: Bachelorarbeit: Software Testing: Gängige Testwerkzeuge im Vergleich, Oktober 2021 - Fachhochschule Südwestfalen - University of Applied Sciences, Iserlohn, Deutschland.