Software Testing

Inhaltsübersicht
Was genau ist Software Testing und was macht ein Software Tester? Man könnte denken, dass man eben verschiedene Softwares testet, indem man sie benutzt. Soweit schön und gut, aber ganz so einfach ist es dann doch nicht. Denn es gibt, je nach Ziel der Software, Tests und teils je nach Software unterschiedliche Arten von Software Tests und auch unterschiedliche Aufgaben, die ein Software Tester ausführen darf. Testen bezeichnet den Prozess des Betriebs eines Systems oder einer Komponente unter bestimmten Bedingungen, der Beobachtung oder Aufzeichnung der Ergebnisse und der Bewertung einiger Aspekte des Systems oder der Komponente.
Mit diesem Beitrag sollst du einen kurzen Ein- und Überblick über den Bereich des Software Testings bekommen. Hierzu soll auf die verschiedenen Ziele des Testens, die unterschiedlichen Arten der Software Tests, auf manuelle Tests und Testautomatisierung und kurz auf den Testprozess eingegangen werden..
Ziele des Testens
Beim Testen verfolgt man Ziele wie z.B. die Erzeugung von Vertrauen in die Information bzgl. die Qualität des Systems, Fehleraufdeckung, Vorbeugung von Fehlern, Verifizierung und Validierung des Testgegenstands, sowie die Erfüllung vertraglicher, rechtlicher und gesetzlicher Anforderungen.
Welche Arten von Software-Tests gibt es?
Da dieser Artikel eher ein Überblicks- und Einstiegsartikel in das Thema Software-Testing ist, wird hier auf einzelne Testarten im Bereich Software-Testing eingegangen. Zunächst gibt es Software-Tests, die der Verifizierung von Qualitätsmerkmalen dienen. Zu diesen Tests zählen funktionale Tests, die testen, was ein System leistet. Die Nicht-funktionale Software-Tests, testen wie ein System arbeitet.
Diese beiden Kategorien von Tests umfassen unterschiedliche Tests.
Zu den funktionalen Tests zählen folgende Tests und Aufgaben:
- Verifizierung der funktionalen Anforderungen
- Blackbox-Test, d.h. der Tester kennt die Software, die im Hintergrund abläuft nicht. Ein Blackbox-Test ist gewissermaßen das Gegenstück oder Gegenteil eines Whitebox-Tests.
nicht-funktionalen Tests zählen folgende Tests:
- Performancetest
- Lasttest
- Stresstest
- Benutzbarkeitstest
- Wartbarkeitstest
- Zuverlässigkeitstest
- Portabilitätstest
Tests der Softwarearchitektur dienen dazu, zu prüfen, wie spezifiziert diese umgesetzt wurde.
Wenn man die Auswirkungen von Änderungen an der Software testen möchte nutzt man Regressionstests, um zu prüfen, ob alles noch wie bisher funktioniert. Nachtests dienen währenddessen dazu, wenn man einen Fehler behoben hat zu prüfen, ob dieser nun tatsächlich erfolgreich behoben wurde.
Was sind manuelle Tests und was bedeutet Testautomatisierung?
Manuelle Tests sind Tests, die man händisch durchführt. Du kannst dir das in etwa folgendermaßen vorstellen:
- Es gibt Anforderungen, was die Software können muss, diese Anforderungen werden analysiert.
- Diese Anforderungen werden in einen oder mehrere Testfälle überführt, die aus mehreren kleinen Schritten bestehen.
- Diese Testfälle werden gereviewed und bei Bedarf überarbeitet und dann für die Testdurchführung freigegeben.
- Nun führt man jeden Schritt des jeweiligen Testfalls aus. Ein Testfall könnte z.B. folgende Schritte enthalten:
Anmeldung am System:
- Melde dich am System an.
- Verwende folgende Benutzerdaten für die Anmeldung.
- Ergebnis: Du bist am System angemeldet.
Öffne den Messenger-Dienst des Programms.
- Klicke auf das Messenger-Symbol.
- Ergebnis: Messenger öffnet sich.
Wähle Kontakt X an den du eine Nachricht schreiben sollst.
- Klicke auf das Empfänger Feld und gib dem Namen des Kontaktes x ein.
- Ergebnis: Kontakt wird als Empfänger angezeigt.
Schreibe eine Nachricht an einen deiner Kontakte.
- Gib die Nachricht: „Hallo X“ in das Nachrichtenfeld des Messengers ein.
- Ergebnis: Nachricht „Hallo X“ wird im Nachrichtenfeld des Messengers angezeigt.
Versende die Nachricht an X.
- Klicke auf Senden.
- Ergebnis: Nachricht wurde versendet.
Melde dich vom System ab.
- Klicke auf Logout.
- Ergebnis: Du wirst vom System abgemeldet.
Dieser Testfall wird manuell durchgeführt, wenn du all dieses Schritte durchführst und du sozusagen die einzelnen Schritte durchklickst. Würdest du diesen Testfall automatisieren, würdest du mit einer Automatisierungs-Software wie CBTA für SAP oder z.B. Tricentis Tosca oder Selenium, den Testfall aufzeichnen. Das heißt du würdest die Schritte im Idealfall einmal händisch ausführen und während dieser Ausführung jeden Schritt aufzeichnen. Anschließend kannst du den Testfall beliebig oft automatisiert per Knopfdruck ausführen und musst nicht jedes Mal alle Schritte einzeln durchklicken. In der Praxis muss man bei der Testautomatisierung allerdings häufig etwas nachbessern, wenn z.B. ein Button bei der Aufzeichnung nicht richtig erfasst wurde, IDs nicht richtig registriert wurden oder sich das Programm generell ändert und deswegen Buttons auf dem Bildschirm verrutschen, so dass das Programm diesen nicht wiederfinden kann. Das ist jetzt eine sehr stark vereinfachte Darstellung manueller und automatisierter Software-Tests.
Letztlich ist der Unterschied, dass du bei manuellen Tests jedes Mal die einzelnen Schritte manuell durchführst und bei der Automatisierung dein Fall einmal aufgezeichnet wird und solange es keine Änderungen am Programm gibt, diese dann theoretisch beliebig oft ausgeführt werden kann, indem du auf den entsprechenden Start-Button klickst. Neben dem Ergebnis, ob der Testfall erfolgreich ausgeführt wurde oder ob Fehler auftraten, kannst du teils auch für mehrere Testfälle eine gemeinsame Auswertung über die Ausführungen erstellen. Gerade bei Tests, die immer wieder ausgeführt werden müssen, z.B. Regressionstests, bietet sich Testautomatisierung an, da man sich dadurch meist Zeit und damit Geld spart.
Wie sieht der fundamentale Testprozess aus?
Der fundamentale Testprozess besteht aus folgenden Schritten:
- Testplanung und Teststeuerung
- Testanalyse und Testentwurf
- Testrealisierung und Testdurchführung
- Bewertung von Endekriterien und Bericht
- Abschluss der Testaktivitäten
Diese Schritte können überlappend stattfinden.
Aber was genau macht man jetzt bei den jeweiligen Schritten?
Im ersten Schritt , der Testplanung und Steuerung definiert man die Testziele und legt fest, welche Testaktivitäten notwendig sind, um die Testziele erreichen zu können. Bei der Teststeuerung geht es darum fortlaufend den aktuellen Testschritt mit dem Testplan abzugleichen und den Status sowie mögliche Abweichungen zu melden. Bei Bedarf werden dann auch Korrekturmaßnahmen eingeleitet. Man ermittelt hierbei geeignete Fortschrittsdaten, damit man die Tests steuern kann. Es ist wichtig, dass die Testplanung das Feedback aus solchen Aktivitäten der Steuerung und Testüberwachung berücksichtigt und die Pläne entsprechend anpasst bzw. weiterschreibt.
Im zweiten Schritt, der Testanalyse und dem Testentwurf, werden die generellen Testziele zu konkreten Testbedingungen verfeinert. Dieser zweite Schritt untergliedert sich hierbei in den Review der Testbasis, die Bewertung der Testbarkeit der Testbasis und der Testobjekte, Entwurf und Priorisierung abstrakter Testfälle, die Identifizierung und Priorisierung des Testbedingungen abhängig von der Testobjektanalyse, der Spezifikation des Verhaltens sowie der Struktur der Software. Anschließend muss man die nötigen Testdaten identifizieren, den Aufbau der Testumgebung entwerfen und eruieren welche Infrastruktur und welche Werkzeuge für die Testdurchführung benötigt werden. Schließlich sorgt man dafür, dass man sowohl von der Testbasis zu den Testfällen als auch umgekehrt alles zurückverfolgen kann.
Im dritten Schritt, der Testrealisierung und Testdurchführung, spezifiziert man die Testabläufe und Testskripte. Hierfür kombiniert man die Testfälle in einer bestimmten Reihenfolge, wobei man alle relevanten Informationen für die Testdurchführung berücksichtigt, und konfiguriert und nutzt die Testumgebung.
Im vierten Schritt, der Bewertung der Endekriterien und dem Bericht, untersucht man die Testaktivitäten hinsichtlich ihrer Ziele. Das sollte man an sich in jeder Testphase machen. Der Testbericht und die Testauswertung umfasst dabei folgende Aufgaben: Auswertung der Testprotokolle hinsichtlich der im Testkonzept definierten Endekriterien Entscheidung, ob weitere Tests durchgeführt werden oder die Testendekriterien adaptiert werden müssen Erstellung eines Testabschlussberichts für die Stakeholder
Im fünften Schritt geht es um den Abschluss der Testaktivitäten. Man sammelt die Daten der vorangegangenen Testphasen und konsolidiert bzw. sichert sie. Meist hat man hierfür Projektmeilensteine. Zum Abschluss der Testaktivitäten zählen die Kontrolle, ob und welche geplanten Ergebnisse geliefert wurden, die Schließung der Fehler- und Abweichungsberichte sowie bei Bedarf das Erstellen von Änderungsanforderungen. Diese Abnahmen muss dabei immer genauestens dokumentiert werden. Auch die Testmittel, die Infrastruktur und die Testumgebung werden im fünften Schritt dokumentiert und archiviert um sie wieder nutzen zu können. Schließlich übergibt man alle Testmittel an die Wartungszuständigen und macht eine lesson learned Session, um für die Zukunft zu lernen. Im Idealfall nutzt man diese Informationen, um die Testreife zu verbessern.
Fazit
Wir hoffen, dieser Bericht konnte dir einen ersten Ein- und Überblick in das Thema Software-Testing bieten. Wenn du praktisch Software testen möchtest, kannst du dir einfach selbst überlegen, welche Funktion ein Programm hat und wie du es testen kannst oder du versuchst es gegen ein (kleines) Entgelt auf Seiten wie https://www.testbirds.de . Um offiziell in gewissen Firmen als Software-Tester arbeiten zu dürfen, benötigt man entsprechende Testing-Zertifikate wie z.B. von ISTQB. Auch für unterschiedliche Automatisierungstools gibt es Zertifikate, die man machen kann und die einem den Berufseinstieg bzw. die Jobchancen erhöhen können.
Du suchst die perfekten Lernunterlagen für deinen Studiengang? Dann schau doch mal auf Studydrive vorbei.
Hier findest du viele, viele kostenlose Lernunterlagen, Übungsblätter, Altklausur-Lösungen und kannst dich mit anderen Studis austauschen.