Softwaretest

Ein Softwaretest ist die einzelne Prüfung einer Anwendung und fester Bestandteil des Software-Testings. Anhand einer Teststrategie wird der Ablauf festgelegt. Es existieren beim Software-Testing verschiedene Methoden, um zu überprüfen, ob funktionale und nichtfunktionale Anforderungen einer Anwendung erfüllt werden. Dieses Thema ist sehr komplex. Der folgende Text soll grundlegendes Basiswissen zum Softwaretest vermitteln.
Ein Angler sitzt mit seiner Angelrute im Wohnzimmer vor einem Fernseher.
© Ljupco Smokovski

Was ist ein Softwaretest?

Oft wird der Begriff Softwaretest mit der Bezeichnung Software-Testing gleichgesetzt. Die Definition wird jedoch zumeist von Anwendungsentwicklern und IT-Experten unterschiedlich aufgefasst.

Bei einem Softwaretest werden verschiedene Eigenschaften einer Software geprüft. Dazu gehören zum Beispiel:

  • Funktion
  • Usability
  • Design

Ziel ist es, durch das Testen eventuelle Fehler einer Anwendung zu finden. Diese Fehler werden anschließend entsprechend der jeweiligen Teststrategie analysiert und korrigiert. Fehler liegen nicht nur dann vor, wenn die Funktion der Anwendung beeinträchtigt wird oder Code falsch programmiert wurde. Von Fehlern kann bei einem Softwaretest per Definition auch dann gesprochen werden, wenn eine Software funktioniert, aber nicht den Anforderungen des Nutzers bzw. des Auftraggebers entspricht.

Jedes Testen trägt zur Verbesserung der Qualität einer Anwendung bei. Dennoch kann bei keiner der Testarten sicher nachgewiesen werden, dass ein System überhaupt keine Fehler enthält. Das liegt daran, dass bei den Tests einer Software nur bekannte Parameter geprüft werden können. Das Testing dient also dazu, nachzuweisen, dass zuvor definierte Anforderungen erfüllt werden.

Um sämtliche Fehler nachweisen zu können, müssten bei einem Testen sämtliche Werte und Daten aller vorhandenen Programmfunktionen inklusiver ihrer Abhängigkeiten und Beziehungen untersucht werden. Selbst für erfahrene Entwickler und Softwaretester ist das nahezu unmöglich. Aus diesem Grund werden im Laufe der Entwicklung einer Software mehrere Tests mit teilweise unterschiedlicher Teststrategie durchgeführt. Diese können sich in Art und Form unterscheiden. So wird zum Beispiel abhängig von Anforderungen und Entwicklungsstand entweder

  • die gesamte Anwendung (System-Test)
  • das Zusammenwirken verschiedener voneinander abhängiger Komponenten (Integrations-Test)
  • oder nur ein Einzelteil der Software (Unit-Test)

getestet.

Softwareentwickler sind bestrebt, durch eine möglichst große Testabdeckung Zeit zu sparen. Durch die Erprobung verschiedener Teststrategien und Software-Testing-Methoden wird versucht, die Anzahl der Tests auf ein Minimum zu reduzieren.

Was ist Software-Testing?

Die Bezeichnung Software-Testing wird in der IT in verschiedenen Klassifikationen genutzt. Zum einen wird sie manchmal mit der Definition „Softwaretest“ gleichgesetzt. Gleichzeitig kann mit dem Begriff Testing jedoch auch die praktische Durchführung des Tests gemeint sein. Darüber hinaus ist Software-Testing ein Überbegriff, der die Summe aller Maßnahmen in der Peripherie von Softwaretests beschreibt. Dazu gehören zum Beispiel:

  • Anforderungsanalysen
    Sie definieren die Anforderungen, die Kunden im Zuge der Beauftragung einer Softwareentwicklung an eine Software stellen. Diese Anforderungen dienen als Auflage für die Entwicklung und als Grundlage für jeden Test.
  • Dokumentation
    Sämtliche Arbeitsschritte werden dokumentiert. Das gilt sowohl für die Entwicklung als auch für die Tests unabhängig von der Art der Software-Testing-Methoden. Eine lückenlose Dokumentation kann beim Suchen nach Fehlern und zum Auswerten von Daten sehr hilfreich sein.
  • Validierung
    Unter Validierung verstehen wir die Prüfung einer Software auf die Eignung für den durch die Anforderungen definierten Einsatzzweck.

Software-Testing ist ein fester Bestandteil des Qualitätsmanagements einer Software-Agentur.

Wer ist verantwortlich dafür, die Software zu testen?

Gesamtverantwortlich für das Software-Testing und die Auswahl der Software-Testing-Methoden ist in der Regel der zuständige Chefentwickler oder die Projektleitung, die für das Management der Entwicklung zuständig ist. Alternativ kann diese Aufgabe auch Testmanagern oder Testanalysten zufallen. Der Verantwortliche für das Testmanagement erstellt Pläne für das Testen. Auf Grundlage der Anforderungsanalyse erstellt der die Teststrategie und übernimmt die Auswertung der Tests. Diese Aufgaben werden unter dem Begriff Testmanagement zusammengefasst.

In der Regel sind Entwickler selbst in das Testing ihrer Software eingebunden. Vor allem dann, wenn es darum geht, ein System auf Fehler im Code zu überprüfen. Diese Aufgabe kann jedoch auch ganz oder teilweise durch einen Computer übernommen werden, wenn die Software durch Testautomatisierung getestet wird. Auch beim Integrieren einer Anwendung in ein bestehendes System kann es in den Verantwortungsbereich der Programmierer fallen, die Software zu testen.

Softwaretester und User Acceptance Tests

Häufig kommen während der Entwicklung einer Anwendung Softwaretester zum Einsatz. Sie werden meistens extern in das Projekt eingebunden, da ihre Aufgabe allein in der Prüfung einer Anwendung oder bestimmter Komponenten (Komponententest) besteht. Sie sind also selten Mitglieder des Teams, das die Software entwickelt. Softwaretester ist ein eigenes Berufsbild, für das es allerdings keine spezifische Ausbildung gibt. Aufgabe der Tester ist es, durch die Anwendung individueller Software-Testing-Methoden den jeweils aktuellen Entwicklungsstand der Software zu überprüfen. Dazu werden in einigen Fällen Software-Testing-Tools eingesetzt. Gefundene Fehler werden akribisch durch alle Teststufen hindurch dokumentiert. Die Aufzeichnungen stellen die Grundlage für die Fehlerkorrektur als letzte Teststufe dar. Diese erfolgt individuell entweder durch den Entwickler oder durch den Tester selbst.

Entwickelt ein Unternehmen eine Software im Auftrag eines Kunden, ist es in der Regel vertraglich verpflichtet, die Anforderungen des Kunden als Auflage zu erfüllen. Führt der Hersteller der Software keine oder unzureichende Tests durch, riskiert er somit die Nichteinhaltung des Vertrages. Daher lässt der Hersteller oft noch vor der Installation der Software einen Validierungstest durchführen. Zumeist wird als geschützter Bereich ein Testserver genutzt, um die Software zu testen. Häufig erden End-to-End-Tests angewendet. Dabei werden nach Möglichkeit sämtliche Funktionen einer Software geprüft. Daher stellen sie eine vergleichsweise sichere Methode der Validierung dar.

Im Zuge der Auslieferung der Software an den Kunden wird diese in den meisten Fällen durch den Hersteller auf dem System des Auftraggebers installiert. Danach findet der sogenannte User Acceptance Test (UAT) statt. Dabei handelt es sich um den Abnahmetest durch das beauftragende Unternehmen. In der Regel wird bei diese Teststufe mit Kopien von Echtdaten gearbeitet. Erst wenn dieser Test ergeben hat, dass die Software den Anforderungen entspricht, gilt die Anwendung als abgenommen und die vertraglich vereinbarte Herstellung als erfüllt.

Grundlegende Software-Testing-Methoden

Je nach Art und Umfang der zu testeten Software wird ein Softwaretest in verschiedene Teststufen und Testphasen unterteilt. Darüber hinaus existieren verschiedene differenzierte Software-Testing-Methoden, die sich in zwei Klassifikationen unterteilen lassen:

  • Testing nach dem V-Modell
  • Die agile Teststrategie

Testing nach dem V-Modell

Beim V-Modell handelt es sich um ein Vorgehensmodell zur Entwicklung von Software, in das die Prozesse des Testings integriert sind. Dabei werden die Arbeitsschritte in Phasen unterteilt, die einem festen Ablauf folgen. Das Modell trägt seinen Namen, weil die einzelnen Phasen in V-Form dargestellt werden. Zentrum der Entwicklung ist das Programmieren der Software. Diese Phase bildet die untere Spitze des Vs. Die Phasen vor der Programmierung dienen der Planung und dem Entwurf vom System und von der Software-Achitektur. Die Phasen nach der Programmierung bestehen aus Tests, der Integration der Software in das System des Kunden und schlussendlich der Abnahme. Anzahl und Bezeichnung der einzelnen Phasen weichen in der Fachliteratur voneinander ab. Nachfolgend ein Beispiel für den V-Prozess:

In Bezug auf den Softwaretest sind die Vorteile dieses Modells, dass es klar strukturiert, einfach nachzuvollziehen und gut etabliert ist.

Das agile Software-Testing

Agiles Software-Testing findet im Rahmen der Agilen Softwareentwicklung anhand von Parametern des Agilen Manifests Anwendung. Vorteile der agilen Entwicklung sind u.a. größere Transparenz gegenüber den Auftraggebern und regelmäßiges Kundenfeedback. Auf diese Weise können Fehler früh erkannt und auf Änderungen in den Anforderungen flexibel reagiert werden. Hauptsächliche Unterschiede zum klassischen Testen nach dem V-Modell sind:

  • Zumeist wird auf externe Projektmanager und Tester verzichtet
  • Ein Entwickler führt selbst Softwaretests durch
  • Das Testing erfolgt unter Berücksichtigung des gesamten Teams
  • Kunden werden stärker in das Softwaretest-Vorgehen einbezogen
  • Die Tests werden parallel zur Entwicklung durchgeführt
  • Höhere Testhäufigkeit

Agile Software-Testing-Methoden haben sich in den letzten Jahren mehr und mehr durchgesetzt. Auch wenn die Häufigkeit der Tests höher ist, lässt sich in der Regel bei diesen Testarten Zeit sparen, da Fehler schneller erkannt werden. Sind Entwickler selbst in das Management der Softwaretests eingebunden, können sie zum Beispiel Probleme in der Usability einer Software besser zuordnen. Darüber hinaus können durch flexible Software-Testing-Methoden auch sich ändernde Anforderungen des Marktes individuell in der Entwicklung berücksichtigt werden.

Wie wird eine Software getestet?

Neben den grundsätzlichen Software-Testing-Methoden wird zwischen zwei Arten der Klassifikation von Softwaretests unterschieden:

  • Statischer Softwartest
  • Dynamische Teststrategie

Beide Testing-Arten werden auf Grundlage konstruktiver Maßnahmen ausgeführt, zu denen u.a. die Anforderungsanalyse, das Prototyping und die Erstellung von Lasten- und Pflichtenheften gehört.

Der statische Softwaretest

Im Verlauf von einem statischen Test wird die Software beim Testen nicht ausgeführt. Getestet werden Algorithmen und Daten im Quellcode auf Fehler und Konflikte. Zumeist wird dieser Test während der Übersetzungszeit durchgeführt. Das ist die Zeit, in der ein Compiler den Code aus der Programmiersoftware in Maschinensprache übersetzt. Das Testing erfolgt entweder manuell oder als automatisierter Test.

Der dynamische Softwaretest

Die Bezeichnung dynamisches Software-Testing ist ein Überbegriff für eine Vielzahl an Prüfmethoden. Im Gegensatz zum statischen Softwaretest werden diese Tests während der Ausführung (also während der Laufzeit) einer Software vorgenommen. Im Grundprinzip beruhen sie auf der Kontrolle sogenannter Testfälle. Dabei werden im Vorfeld im Zuge der konstruktiven Maßnahmen einzugebende Daten und die daraus resultierenden Ausgabedaten definiert. Stimmt das Testergebnis nicht mit den vordefinierten Daten überein, muss es an ein oder mehreren Stellen Fehler geben.

Die Testverfahren bei der dynamischen Teststrategie lassen sich in drei Kategorien einteilen:

  • Spezifikationsorientierter Softwaretest
    Dieses Verfahren wird auch Black-Box-Test genannt. Getestet werden bestimmte Spezifikationen. Diese können unterschiedliche Softwareelemente (z. B. Module oder Schnittstellen) betreffen. Die Spezifikation ergibt sich aus der Anforderung des Kunden an die Software und den sich daraus ergebenden Anforderungen an die einzelnen Elemente der Anwendung.
  • Strukturorientierter Softwaretest
    Diese sogenannten White-Box-Tests werden im Zusammenspiel mit spezifikationsorientierten Verfahren angewandt. Getestet wird ausschließlich der Quellcode während der Laufzeit der Anwendung mit dem Ziel, Fehler in Teilkomponenten ausfindig zu machen.
  • Diversifizierende Software-Testing-Methoden
    Beim diversifizierenden Softwaretest werden unter Anwendung diverser Testtechniken verschiedene Versionen einer Software vergleichend geprüft. Spezifikationen finden dabei keine Beachtung. Der Tester prüft im Grunde, ob die ausgegebenen Daten einer Software-Version den Ausgabedaten einer anderen Version entsprechen.

Teststufen: Strategie und Ablauf

Je nach den gewählten Testarten können Softwaretests variabel verlaufen. Der grundsätzliche Ablauf folgt jedoch einer logischen Struktur, die mit der Planung des Tests beginnt und mit dem Abschluss des Tests endet. Der strategische Ablauf lässt sich in folgende Teststufen gliedern:

Teststufe 1: Planung

Mit der Planung sollte bereits in der Frühphase der Softwareentwicklung begonnen werden. Sie wird parallel zur Entwicklung aktualisiert. Somit kann das Ergebnis eines Tests in die Planung weiterer Prüfvorhaben miteinbezogen werden. Berücksichtigt werden dabei u.a. folgende Faktoren:

  • Teststrategie
  • Risikoabschätzung
  • Kriterien für Beginn, Ende und Abbruch des Tests
  • Testarten
  • Festlegung der Testdaten
  • Hilfsmittel
  • Softwaretest-Ressourcen
  • Testmetriken

Teststufe 2: Vorbereitung

Auf Grundlage der während der Planung erhobenen Daten wird die Durchführung eines Tests vorbereitet. Die damit verbundenen Aufgaben können vielfältig sein. Sie umfassen zum Beispiel den Aufbau einer Testumgebung oder das Zurverfügungstellen von Testdaten und Werkzeugen.

Teststufe 3: Spezifikation

In dieser Phase werden die Spezifikationen eines einzelnen Softwaretests festgelegt und vorbereitet. Dazu werden zum Beispiel Eingabedaten erstellt und die Vorbedingungen in Abhängigkeit mit eventuell zuvor stattgefundenen Tests überprüft.

Teststufe 4: Testdurchführung

Auf der Basis der drei vorangegangenen Testphasen wird ein statischer oder ein dynamischer Softwaretest durchgeführt.

Teststufe 5: Auswertung

In dieser Phase werden die Ergebnisse der Durchführung ausgewertet. Es erfolgt ein Abgleich zwischen dem Ist-Ergebnis und dem Soll-Ergebnis. Entspricht das Soll-Ergebnis dem Ist-Ergebnis, gilt der Test als erfolgreich. Werden die Anforderungen an das Soll-Ergebnis nicht den Vorgaben entsprechend erfüllt, liegt ein Fehler vor. Dieser wird beschrieben und anhand verschiedener Aspekte klassifiziert. Berücksichtigt werden dabei u.a. die Fehlerursache oder die Schwere des Fehlers.

Teststufe 6: Abschluss

Beim Testabschluss wird unterschieden zwischen einem Regel-Abschluss, bei dem sämtliche Ziele erreicht wurden, oder einem durch einen Fehler unterbrochenen Test. In beiden Fällen wird das Ergebnis dokumentiert und die Planung folgender Testdurchläufe anvisiert.

TenMedia: Qualität dank flexibler Software-Testing-Methoden

Seit 2011 entwickeln wir an unserem Standort in Berlin hochwertige Softwarelösungen für Großkunden, KMU und Behörden. Wir stellen höchste Anforderungen an die Qualität unserer Produktpalette, bestehend aus Individualsoftware, Cloud-Anwendungen und Datenbanksystemen. Während der Entwicklung einer Anwendung führen wir regelmäßig Softwaretests durch. Die Software-Testing-Methoden passen wir flexibel an die Anforderungen unserer Kunden und den Entwicklungsprozess an. Dabei nutzen wir diverse erprobte Softwaretest-Verfahren. Im Vordergrund steht vor allem agiles Testmanagement.

Selbstverständlich fließt bei uns auch Userfeedback in das Testing mit ein. Jeder Komponententest wird, genauso wie jeder Entwicklungsschritt akribisch dokumentiert. Die Aufzeichnung dieser Daten erfolgt über ein Backlog, das in unser System integriert ist. Dort werden sämtliche Anforderungen und Arbeitsschritte einzeln festgehalten. Auf diese Weise bieten wir unseren Kunden höchste Transparenz in Bezug auf unser Testmanagement und die Fortschritte unserer Arbeit. Wer an einem unserer IT-Services interessiert ist, kann sich jederzeit kostenlos durch unsere Experten beraten lassen.