"Hefte raus, wir schreiben einen Test!"

Früher hat uns dieser Satz Gänsehaut beschert, heute finden wir Tests richtig gut. Denn wir wollen Deinen und unseren Qualitätsansprüchen gerecht werden. Daher nehmen Tests zur Qualitätssicherung bei der devlix GmbH einen besonderen Stellenwert ein. Softwareentwicklung ist ein komplexer Prozess, da kommt man ohne eine umfassende Prüfung des Arbeitsergebnisses nicht weit.

Standards und Ziele

Mit ISO/IEC/IEEE 29119 wurde ein internationaler Standard geschaffen, welcher vorangegangene Normen berücksichtigt und ersetzt. Selbstgesetztes Ziel des Standards für Softwaretests ist das Messen der Qualität des Softwaresystems. Grundlage für ein zielgerichtetes Testen kann zum Beispiel eine dokumentierte Anforderungsspezifikation sein, die Informationen über Funktionen und rechtliche Aspekte beinhaltet.

In diesem Zusammenhang setzen wir so viele Testschritte wie möglich automatisiert um.

Teststufen

Stufen des Softwaretests orientieren sich immer am jeweiligen Entwicklungsstand. Die wird vor allem beim Betrachten des <Link: V-Modells> klar, welches die Teststufen der jeweiligen Entwicklungsstufe gegenüberstellt.

Je nach Projekt und verfügbarem Projektteam werden Stufen und Arten der durchzuführenden Tests bestimmt.

Komponenten-/Modul-/Unittest

Die niedrigste Stufe des Softwaretests fokussiert sich auf Funktionalitäten in Teilen der Software, zum Beispiel in Modulen. Diese Stufe läuft weitestgehend automatisiert ab, in dem wir Prüfroutinen gegen erwartete Ergebnisse ablaufen lassen. Die Prüfungen werden im Normalfall durch den Entwickler erstellt und durchgeführt.

Integrationstest

Wir prüfen auch, ob sich Entwicklungen im Zusammenspiel mit anderen Teilen der Software behaupten. Der Fokus liegt in dieser Stufe auf den Schnittstellen der Komponenten und der Prüfung des korrekten Verhaltens im Kontext voneinander abhängiger Komponenten.

Systemtest

Soll die Funktionstüchtigkeit und die korrekte Bereitstellung von Anforderungen geprüft werden, testen wir das komplette System. Diese Tests werden meist in einer eigenen Umgebung durchgeführt, die im besten Fall ein produktionsnahes Abbild darstellt. Typischerweise führen wir Systemtests mit vorbereiteten Testdaten durch, die bei jedem Testlauf auf den ursprünglichen Zustand zurückgesetzt werden können.

Diese Stufe wird im Normalfall durch das Team durchgeführt, welches mit der Entwicklung betraut ist.

Abnahme-/Verfahrens-/Akzeptanztest

Jetzt kommst du ins Spiel. Ein Produktiveinsatz der Software setzt meist eine Abnahme durch den Auftraggeber voraus, der eine korrekte Funktionsweise und die Einhaltung rechtlicher Aspekte bescheinigt. Zum Einsatz kommt hierbei, wie beim Systemtest auch, eine produktionsnahe Umgebung. Gängiges Vorgehen ist hierbei das Testen mit Echtdaten, die zu diesem Zweck vor dem Test kopiert und in das System eingespielt werden.

Der Fokus in der Teststufe liegt primär auf dem Verhalten der vorliegenden Software und der Erfüllung der zugrundeliegenden Anforderungen.

Testarten

Statischer Test

Reviews von Dokumentation bzw. Textartefakten und auch die statische Code-Analyse zählen zu den statischen Tests. Diese Testart umfasst alle Tätigkeiten, die nicht auf dynamische Informationen oder Abläufe und Programmausführungen angewiesen sind.

Dynamischer Test

Im Gegensatz zu den statischen Tests prüft man bei dynamischen Tests zum Beispiel Abläufe in Prozessen und Datenflüssen, Positiv- und Negativabläufe und weitere. Diese Tests setzen eine aktive Programmausführung voraus und werten das Ergebnis dieser Ausführung aus.

Perspektive

Hilfreich ist es, Funktionen aus der Sicht verschiedenen Anwendergruppen oder Personas zu prüfen. Die verschiedenen Anwender, die die Software bedienen sollen, haben unterschiedliche Schwerpunkte und schätzen Funktionen sehr wahrscheinlich unterschiedlich wichtig ein.

Tests aus unterschiedlichen Perspektiven helfen auch dabei Testfälle identifizieren zu können.

Black-Box- und White-Box-Test

Geht es um die Akzeptanz einer Software ist man auf fachliche Prüfungen angewiesen, die das korrekte Verhalten bescheinigen sollen. Diese Black-Box-Tests werden meist ohne Wissen über den Aufbau der technischen Systeme durch einen Fachbereich durchgeführt.

Einen anderen Ansatz verfolgen die White-Box-Tests, da sie das Wissen über den Aufbau der Software voraussetzen. Daher sind Entwicklertests meist als White-Box-Tests anzusehen.

Regressionstests

Wird Software weiterentwickelt und in regelmäßigen Zyklen aktualisiert, müssen wichtige Funktionen immer wieder getestet werden, um auch weiterhin die Funktionalität gewährleisten zu können. Um den zeitlichen Aufwand dafür nicht mit jedem Release zu erhöhen, automatisieren wir diese Tests wann immer möglich.

Teststrategie und Testplan

Vor den ersten Testläufen steht die Strategie. Sie beschreibt unter anderem auch Ansätze wie top-down, bottom-up und andere Ausprägungen. Informationen zur Testintensität in Bezug auf die einzelnen Systemkomponenten sowie die zu verwendenden Techniken, die ebenfalls Bestandteil einer Strategie sind.

Der Testplan umfasst letztendlich sämtliche Informationen, also auch die Strategie, welche für eine erfolgreiche Qualitätssicherung notwendig sind. Wichtige Pfeiler sind hierbei die Beschreibung des Testumfangs, der Zeitplanung und die eigentlichen Testgegenstände.

Tooling

Für die unterschiedlichen Testarten stehen umfangreiche Tools zur Verfügung, auf die zurückgegriffen werden kann. Viele der genannten Testarten lassen sich zum Beispiel als Teil der Deployment-Pipeline automatisieren und garantieren somit schon vor der Bereitstellung der Software umfangreiche Prüfungen.