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.
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/Tools | TestCafé | Selenium Web-Driver | Appium | Selenium IDE | QF-Test | Ranorex | TestComplete | UFT |
---|---|---|---|---|---|---|---|---|
Programmier- | JavaScript, Type-Script, CoffeeScript | Java, C#, Perl, Python, JavaScript, Ruby, PHP | Java, C#, Perl, Python, JavaScript, Ruby, PHP | Java, C#, Perl, Python, JavaScript, Ruby, PHP | Java, Python, Groovy, JavaScript | C #, Python, C++, VB.net and XML | VbScript , Delphi, C++, C# und JScripts | VbScri pt |
Unterstützte Plattform | Web | Web | Mobile, Windows | Web | Java, Web, Desktop (Win), Mobile (Android) | Mobile, Web, Desktop (Win) | Mobile, Web, Desktop (Win) | Web, Desktop (Win) |
Berichte über Testergebnisse | ja | ja | ja | ja | ja | ja | ja | ja |
Wiederver- wendbarkeit | ja | ja | ja | nein | ja | ja | ja | ja |
Aufnahme/ Wiedergabe | nein | nein | nein | ja | ja | ja | ja | ja |
leicht zu lernen | ja | ja | nein | ja | ja | |||
Programmier-kenntnisse | ja | ja | ja | ja | nein | nein | nein | nein |
Werkzeuge Testarten | End-to-End Test | Funktional Unit Test, End-to-End Test | GUI Test, Funktional Unit Test | Funktional Unit Test | GUI Test | GUI Test | Funktional Unit Test, GUI Test, Unit Test | Funktional Unit Test, Regression Test |
Lizenz | Frei | Frei | Frei | Frei | Nicht frei | Nicht frei | Nicht frei | Nicht frei |
Quellen | DevExpress - TestCafe | 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) |
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).
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.