30.07.2020
Software Testing ist ein Prozess, bei dem eine Software überprüft und bewertet wird, bevor sie offiziell zum Einsatz kommt.
Durch systematische Tests und methodische Untersuchungen werden Funktionalität, Leistung, Sicherheit und Benutzerfreundlichkeit validiert. Es soll sichergestellt werden, dass die Software keine Fehler oder Mängel aufweist - und sie die Anforderungen von Kund:innen oder Nutzer:innen bedient. Softwaretests sind also eine Art Qualitätssicherung.
Software Testing lässt sich sowohl manuell als auch automatisch durchführen. Dazu gibt es eine Vielzahl von Methoden und Tools.
1. Es spart Geld
Jede Softwareentwicklung ist in verschiedenste Phasen aufgeteilt. Je nachdem ob Sie sich für ein Pflichtenheft oder die agile Methode entscheiden, sind die Phasen mehr oder weniger flexibel und dauern unterschiedlich lange an. Da sich in jeder Phase Fehler einschleichen können, ist es sinnvoll schon frühzeitig erste Softwaretests zu machen. Werden mögliche Mängel frühzeitig festgestellt, können diese umgehend und kostengünstig behoben werden. Für besonders komplexe oder validierte Umgebungen sieht das "Test Drive Development" Tests vor, die noch vor der eigentlichen Entwicklung geschrieben werden.
2. Mehr Sicherheit
Neben einer funktionsfähigen Software, ist vor allem die Sicherheit für Kunden von großer Bedeutung – Nutzerdaten müssen jederzeit geschützt sein. Security Tests bieten genau diesen Schutz. Dabei werden Funktionalität und Sicherheit der Software genauesten unter die Lupe genommen. Werden Risiken entdeckt, können diese noch vor der Veröffentlichung der Software behoben werden.
3. Sicherstellung der Qualität
Der Nutzer hat immer einen gewissen Anspruch an das Produkt bzw. die Software. Um diesen bestmöglich gerecht zu werden und Kundenwünsche zu erfüllen, sollte eine Software zu der Zielgruppe passen und einen Mehrwert bieten. Außerdem sollten digitale Produkte auch immer ein Problemlöser sein, beispielsweise um bestimmte Aufgaben (Use Cases) schnell, einfach und unkompliziert zu erledigen. Es werden also eine Menge Anforderungen an eine Software gestellt. Tests überprüfen, ob die Software, diese Kundenanforderungen auch erfüllt und auch nach Updates noch bestmöglich funktioniert.
4. Kundenzufriedenheit erhöhen
Eine Software kann nur dann erfolgreich oder hilfreich sein, wenn sie den Kunden zufrieden stellt. Dabei spielt neben den technischen Anforderungen an ein digitales Produkt auch das UX-Design eine wichtige Rolle. Um also langfristig Kunden zu binden, sind regelmäßige Tests wichtig. Nur so kann sichergestellt werden, dass das Produkt weiterhin gut funktioniert und noch zeitgemäß ist.
Durch Tests erhalten wir also einen Einblick und wertvolle Erkenntnisse über den aktuellen Zustand des Systems. Das ist nicht nur für den Abnehmer einer Software wichtig, sondern auch für den Entwickler und vor allem für die Stakeholder. Diese müssen nämlich vor der Veröffentlichung über den Zustand der Anforderung des Produkts, sowie Softwarerichtlinien, etc. Bescheid wissen. Dazu zählen beispielsweise Benutzerfreundlichkeit oder die Einhaltung von Vorschriften durch das Produkt.
Aber auch die Sicherstellung bestimmter Qualitätsstandards ist von Bedeutung. Dabei wird zwischen externer und interner Software QA unterschieden. Die externe Software QA zeigt auf, wie die Software im Betriebsmodus in Echtheit funktioniert und wie nützlich sie für den späteren Benutzer ist. Die interne Software QA konzentriert sich auf interne Aspekte, die davon abhängig sind, wie qualitativ hochwertig der Code geschrieben ist.
Beim Testen von Software sollen Fehler identifiziert und anschließend ausgebessert werden. Dabei kann man die Fehler wie folgt unterscheiden.
Error: ist ein Fehler seitens eines Softwareentwicklers. Der Entwickler kann beispielsweise Informationen fehlinterpretieren oder ein Programmierer gibt einen Variablennamen falsch ein. Soll die Software dann ausgeführt werden, kommt es zu einem Error.
Bug: hier liegt ein Codierungsfehler vor. Wenn ein Programm zwar ausgeführt werden kann, aber die geforderte Funktion nicht bzw. nicht richtig funktioniert, ein falsches Ergebnis liefert oder abstürzt, dann liegt dies an einem Bug, der durch einen Programmierfehler entstanden ist. Es kommt also zu einer Fehlfunktion.
Failure: dieser Fehler tritt auf, wenn ein Softwaresystem oder eine Komponente nicht in der Lage ist, die erforderliche Funktion innerhalb einer Leistungsanforderung zu erfüllen. Erreicht ein Defekt doch den Endkunden, spricht man von einem Failure.
Fault: ein falscher Schritt, Prozess oder Datendefinition in einem Programm. Kommt es zu diesem Fehler, wird das Programm falsch ausgeführt. Es liegt also eine Anomalie innerhalb der Software vor, welche verhindert, dass sich diese nicht entsprechend ihrer Spezifikation verhält.
Es gibt verschiedenste Methoden und Vorgehensweisen. Welche genau und was für Vor- und Nachteile dadurch entstehen stellen wir im folgenden vor.
Funktionale Tests
Hierbei wird die Software getestet, indem Input (Eingaben durch den Nutzer oder über Schnittstellen) bereitgestellt wird. Die Ergebnisse werden anschließend Untersucht – sie müssen mit den Funktionalitäten, für die sie bestimmt waren, übereinstimmen. Diese Art von Test wird an einem kompletten und integrierten System durchgeführt. Nur so lässt sich prüfen, ob die spezifischen Anforderungen mit dem System übereinstimmen und wie diese zu bewerten sind.
Nicht funktionale Tests
Bei nicht funktionalen Tests, werden die Anforderungen geprüft, die zwar nicht funktionsfähig, aber notwendig sind. Leistung der Software, sowie Sicherheit oder Benutzeroberflächen. Diese Tests werden verwendet, um Leistungsprobleme oder Engpässe zu identifizieren. Es werden dabei keine Fehler in der Software gesucht. Netzwerkverzögerungen können ein Beispiel für die verringerte Leistung einer Software sein.
Automatische - oder manuelle Tests
Manuelle Tests werden, wie der Name schon sagt, manuell durch den Menschen ausgeführt. Dazu werden keine Skripte oder Werkzeuge genutzt. Bei automatische Tests hingegen stehen Tools und Skripte oder eine Software zur Verfügung. Welche Art der Prüfung man wählen sollte, hängt von einigen Faktoren ab – Projektanforderungen, Budget, Zeitrahmen, Fachwissen und Eignung. Automatische Tests sind vor allem dann empfehlenswert, wenn eine Software stetig weiterentwickelt wird und die Komplexität in diesem Zusammenhang steigt.
Statische Testverfahren
Hierbei überprüft der Tester den Code, die Architektur-Dokumente und das Anforderungsdokument. Anschließend gibt er dann Kommentare zu seiner Prüfung ab. Statische Tests werden gemacht, um Fehler im Code zu erkennen, noch während die Software inaktiv oder eben nicht betriebsbereit ist. Also in einem relativ frühen Stadium der Entwicklung - die Tests werden deshalb auch häufig Verifikationstest genannt. Bei diesem Verfahren müssen Anforderungsspezifikationen, Design-Dokumente, Quellcode, Testpläne, Testskripte, Testfälle und Websiteinhalte bestehen. Wird dies ordentlich durchgeführt, lassen sich dafür etwas 85% der Fehler eine Software erkennen.
Dynamische Testverfahren
Im Gegensatz zu den statischen Tests, wird bei dieser Art des Testings der Code direkt ausgeführt. Dabei wird zum einen das Funktionsverhalten der Software und zum anderen die CPU Auslastung sowie die Gesamtleistung getestet. Ziel ist es sicherzustellen, dass das Endprodukt zu den Anforderungen des Kunden passt und genau so funktioniert wie es geplant war. Dynamische Tests werden auch Validierungs- oder Ausführungs-Test genannt.
White-Box Tests
Um diese Tests durchführen zu können, muss der Tester die interne Funktionsweise von Codes kennen. Denn bei einem White-Box Test soll die interne Logik und Struktur des Codes untersucht werden. Dazu untersucht der Tester den Quellcode und will herausfinden, welche Einheit des Codes sich gegenüber der Spezifikation unerwartet, also falsch verhält.
Black-Box Test
Der Black-Box Test gehört zu den funktionalen Tests und untersucht, wie schon beschrieben, die Anforderungen und Funktionalitäten. Es heiß deshalb Black-Box, weil der Tester keine Kenntnisse über den Quellcode besitzt und auch über die Systemarchitektur nicht bescheid weiß. Der Tester agiert während der Durchführung meist mit der Benutzeroberfläche oder anderen Schnittstellen einer Software. Wenn er also Eingaben tätigt und Ausgaben untersucht, weiß er dabei nicht, wo und wie diese zu bearbeiten sind.
Visuelle Regressionstests
Eine relativ einfach Weise zu testen. Bei visuellen Regressionstests werden von der zu entwickelnden Website Screenshots gemacht und miteinander verglichen. Diese Screenshots können zu jeder Zeit gemacht werden, meist aber vor und nach der Aktualisierung des Fronten-Codes. Hierbei werden allerdings nur die beiden Bilder miteinander abgeglichen. Funktionen werden bei dieser Art von Test nicht untersucht.
Smoke Testing
Hierbei überprüft das Test-Team, ob die Software auch stabil ist und ein detaillierter Testlauf durchgeführt werden kann. Stellen die Tester fest, dass aufgrund von beispielsweise sogenannten "Blockern" eine Testung nicht möglich ist oder sind die wichtigsten kritischen Funktionen einer Software nicht funktionsfähig, kann das Entwicklerteam sofort informiert werden.
Wenn bereits früh mit dem Testen begonnen wird, können Kosten und Zeit für lange Nachbearbeitungen gespart werden und man kann sicher gehen, dass eine fehlerfreie Software an den Kunden ausgeliefert wird. Wann genau mit dem Testen begonnen werden sollte, hängt ja nach Art der Entwicklung ab – einige Tests beginnen bereits vor der eigentlichen Entwicklung.
Auch ein Ende der Tests ist schwierig zu definieren. Grundsätzlich endet das Testen nie so richtig. In der eigentlichen Entwicklung werden immer wieder Tests gemacht, um dem Kunden ein hochwertiges Produkt zu bieten, aber auch nach Veröffentlichung einer Software, geht das Testing weiter. Updates oder neue Kundenwünsche sowie Anforderungen an eine Software sind ein fortlaufender Prozess. Demnach müssen Änderungen nicht nur umgesetzt sondern auch wieder getestet werden.
Software Tests sind ein wichtiger Bestandteil in der Entwicklung. Der Kunde erwartet ein qualitativ hochwertiges Produkt, welches ohne Problem funktioniert. Ohne Tests ist es unmöglich zu gewährleisten, dass alle Anforderungen erfüllt werden. Um Kunden und Benutzern also ein sicheres Gefühl zu verleihen, sind Softwaretests unumgänglich. Wir testen in unserem Entwicklungsprozess regelmäßig und gewährleisten somit, dass Ihre Software fehlerfrei genutzt werden kann. Möchten Sie mehr zu unseren Testverfahren erfahren oder haben Interesse an der Softwareentwicklung? Gerne beraten wir Sie kostenlos und unverbindlich, schreiben Sie uns dazu gerne eine Nachricht oder rufen Sie uns an. Wir freuen uns auf Sie!