Der Funktionstest dient der umfassenden Überprüfung, ob ein System oder Produkt die funktionalen Anforderungen erfüllt, die aus den Geschäftsprozessen der Anwender abgeleitet wurden. Diese Anforderungen definieren die erwarteten Fähigkeiten des Systems, die benötigt werden, um fachliche Probleme zu lösen.
Typischerweise wird dieser Test durchgeführt, um die korrekte Funktionsweise des Gesamtsystems nachzuweisen, und er umfasst sowohl die Überprüfung der Einzelfunktionen als auch das Zusammenspiel dieser Funktionen innerhalb des Gesamtsystems.
Der Funktionstest evaluiert, ob die implementierten Funktionen die ihnen zugewiesenen Aufgaben gemäß den fachlichen Spezifikationen und Kundenanforderungen erfüllen. Es wird dabei nicht nur geprüft, ob das System das tut, was es soll, sondern auch, ob es nichts tut, was es nicht tun sollte. Dazu gehört die Prüfung auf korrekte Verarbeitung von korrekten Eingaben sowie die angemessene Reaktion auf fehlerhafte oder unerwartete Eingaben.
Die Testfälle für den Funktionstest werden typischerweise aus den funktionalen Spezifikationen abgeleitet und können sowohl manuell als auch automatisiert durchgeführt werden. Der Umfang der Testabdeckung wird durch den Überdeckungsgrad bestimmt, der angibt, wie vollständig die funktionalen Anforderungen durch die Tests abgedeckt werden.
In der Praxis beinhaltet der Funktionstest nicht nur das Ausführen der definierten Testfälle, sondern auch die gründliche Dokumentation der Testergebnisse. Diese Dokumentation ist entscheidend für die nachfolgende Analyse der Testergebnisse und für die Entscheidungsfindung bezüglich der Systemfreigabe. Sie hilft dabei, die Transparenz des Testprozesses zu gewährleisten und bietet eine solide Grundlage für die Abnahmeentscheidung durch die Fachbereiche.
Unter einen Negativtest versteht man einen funktionalen Testfall mit Eingabewerten, die laut Spezifikation des Testobjekts unzulässig sind. Das Testobjekt sollte robust reagieren, in dem es die Werte abweist und eine geeignete Ausnahmebehandlung durchführt.
Ein Negativtest soll zeigen, dass ein Softwaresystem oder eine Komponente nicht funktioniert. Bei dieser Testvorgehensweise wird mit ungültigen Eingabewerten oder Ausnahmen getestet. |
Der Funktionstest ist eine zentrale Phase im Testprozess von Software, die nach den Komponenten- und Integrationstests stattfindet. In dieser Phase wird die Gesamtfunktionalität des Systems unter Betrachtung aller relevanten Bankprozesse überprüft. Der Test basiert auf den funktionalen Designs oder Fachkonzepten, die spezifische Anforderungen und erwartete Funktionalitäten der Anwendung beschreiben. Diese Dokumente dienen als Grundlage für die Erstellung der Testfälle.
Die Ergebnisse des Funktionstests werden detailliert dokumentiert, um eine gründliche Analyse und Bewertung der Systemfunktionalität zu ermöglichen. Diese Dokumentation unterstützt die Entscheidung über die Freigabe des Systems und die Vorbereitung auf den UAT.
Der Funktionstest, oft auch als User Acceptance Test (UAT) bezeichnet, überprüft das System als Ganzes – sowohl aus technischer als auch aus fachlicher Sicht. Die Zielsetzung ist, zu bestätigen, dass die entwickelte Software oder Anwendung die definierten Anforderungen erfüllt und für die Inbetriebnahme bereit ist. Der Fokus liegt auf der Verifizierung der End-to-End-Prozesse und der Gewährleistung, dass die Software für den tatsächlichen Einsatz geeignet ist.
Der Funktionstest soll den Nachweis erbringen, dass die fachlichen Anforderungen
an die Anwendung korrekt umgesetzt wurden. Der Funktionstest beinhaltet das
Testen einzelner Funktionen. Eine Funktion ist eine fachlich abgeschlossene Aufgabe, die selbständig durch den Fachbereich (Online) bzw. automatisch (Batch) ausgeführt werden kann. Dabei ist es unerheblich wie die Funktionen DV-technisch realisiert sind.
Einzelkriterium |
Bewertung Testobjekt |
||
Hoch |
Mittel |
Gering |
|
Lebensdauer |
> 6 Jahre |
3 - 6 Jahre |
< 3 Jahre |
Außenwirkung |
groß |
mittel |
gering |
Einsatzbreite |
unternehmensweiter Einsatz |
mehrere Organisationseinheiten |
Eine Organisationseinheit |
Einsatzintensität |
hoch |
mittel |
gering |
Bedeutung für Unternehmen |
zwingend erforderlich |
mittel |
nice to have |
Abhängigkeit zu anderen Anwendungssystemen |
Vorgänger und/oder Nachfolger mehrerer Anwendungen |
Vorgänger und/oder Nachfolger einer Anwendung |
keine Abhängigkeit |
Schnittstellen |
Nutzung einer gemeinsamen Datenbasis |
Übergabeschnittstellen |
keine Schnittstelle zu anderen Anwendungen |
Schadensrisiko bei Ausfall/Störung |
Hoch |
mittel |
niedrig |
Maximale Ausfallzeit |
< 1 Std |
< 4 Std |
< 24 Std |
Testobjekt-Kritikalität |
Bewertungsregel |
|
A |
hoch |
Mindestens 4 Einzelkriterium hat den Wert hoch |
B |
mittel |
Mindestens 2 Einzelkriterien haben den Wert HOCH und 3 Einzelkriterien |
oder |
||
Mindestens 1 Einzelkriterium hat den Wert HOCH und 4 Einzelkriterien haben den Wert MITTEL |
||
oder |
||
Mindestens 5 Einzelkriterien haben den Wert MITTEL |
||
C |
gering |
Alle übrigen Kombinationen |
Nr. |
Beschreibung |
Kritikalität des Projektes |
Abdeckung |
||
Hoch |
Mittel |
Gering |
|||
10 |
Unzulässige Kombinationen |
A |
|
|
Hoch |
9 |
Zulässige Kombinationen |
|
A |
|
Hoch |
8 |
Unzulässige Äquivalenzklassen |
B |
|
|
Hoch |
7 |
Zulässige Äquivalenzklassen |
|
B |
|
Mittel |
6 |
Kann- Felder: unzulässiger Wertebereich |
|
|
A |
Mittel |
5 |
Pflicht- Felder: unzulässiger Wertebereich |
|
|
|
Mittel |
4 |
Kann Felder: zulässiger Wertebereich |
C |
|
B |
Mittel |
3 |
Pflicht Felder: zulässiger Wertebereich |
|
C |
|
Niedrig |
2 |
Intuitive Testfallermittlung |
|
|
|
Offen |
1 |
Ad-hoc Testfallermittlung |
|
|
C |
Offen |
Stufen 3 bis 6: hier werden die Testfälle auf Feldebene mit den Methoden der Äquivalenzklassenanalyse gebildet, jedoch wird das Verfahren eingeschränkt, so dass in Stufe 3 so viele Testfälle gebildet werden, dass zumindest jedes Pflichtfeld aus dem zulässigen Wertebereich abgedeckt wird. In Stufe 4 wird der Umfang der zu betrachtenden Felder um die Kannfelder ergänzt, d.h. über die Testfälle wird sicher gestellt, dass die Positivverarbeitung der Funktionalität zumindest über jedes Feld mindestens einmal mit einem positiven Wert ausgeführt wurde.
Stufen 5 und 6 erweitern den Abdeckungsumfang der Äquivalenzklassenanalyse um Fehlertestfälle, d.h. es wird sichergestellt, dass Pflichtfeld- und Kannfeldprüfungen auf Wertebereichsebene korrekt funktionieren.
Bei der Dokumentation der Testfälle muss die eindeutige Nachvollziehbarkeit und Wiederholbarkeit der Testfälle gewährleistet sein.
Nr. |
Beschreibung |
Kritikalität des Projektes |
Abdeckung |
||
Hoch |
Mittel |
Gering |
|||
5 |
Abdeckung von Critical-Dates |
A |
|
|
Hoch |
4 |
Abdeckung von Mittelwerten |
|
A |
|
Mittel |
3 |
Abdeckung von Grenzwerten |
B |
|
A |
Mittel |
2 |
Abdeckung von Standardwerten |
C |
B/C |
|
Niedrig |
1 |
Ad-hoc Testfallermittlung |
|
|
B/C |
Offen |
Es gibt 5 Methoden in der Testdatendefinition. Die unterste Stufe der Ad-hoc Testdatendefinition bildet die einfachste Form ab und folgt keiner Systematik. Willkürlich werden Werte entsprechend den vorgegebenen Testfällen belegt.
Jede höhere Stufe der Skalierung ist eine Form der systematischen Testdatendefinition. Auch hier gilt wieder, dass entsprechend der Skalierungsstufen die Methoden aufeinander aufbauen, sodass die Sicherheit im Test auch während der Testdurchführung erhöht (oder verringert) werden kann.
Minimalanforderung ist die Abdeckung von Standardwerten (jede weitere Stufe ist als Ergänzung zu sehen). Nächsthöhere Sicherheit bietet die zusätzliche Abdeckung von Grenzwerten, also den Ober- und Untergrenzen eines Feldes, bzw. einer Äquivalenzklasse. Ergänzend dazu kann der Testfall zusätzlich mit Mittelwerten und in der obersten Methode mit sog. Critical Dates belegt werden.
Es gilt: Je höher die Skalierungsstufe, umso elaborierter die Methode und damit die Sicherheit. Bei der Bildung von Ad-hoc- Testdaten ist der Sicherheitsfaktor nicht bewertbar, da er abhängig ist vom Fachwissen und Einfallsreichtum des Testers.
Es wird empfohlen für Teilprojekte mit der Kritikalität hoch die Methode 2, für Testobjekte mit geringer Kritikalität, für Testobjekte mit mittlerer Kritikalität die Methode 3 und für Testobjekte mit hoher Kritikalität die Methode 5 zu wählen.
Für Teilprojekte mit der Kritikalität mittel wird für gering bis mittel-kritische Testobjekte die Abdeckung von Standardwerten empfohlen, für kritische Testobjekte die Abdeckung von Mittelwerten.
In Teilprojekten mit geringer Kritikalität gilt als Empfehlung für Testobjekte mit hoher Kritikalität die Abdeckung von Grenzwerten, für gering bis mittel-kritische Testobjekte ist die ad-hoc Testdatendefinition normalerweise ausreichend.
Für die Testausführung müssen Techniken angewandt werden, die die Testausführung nachvollziehbar, was eine gesetzliche Grundanforderung ist, Re-Test fähig (Bestands- und Bewegungsdaten müssen reproduzierbar sein) und wenn möglich automatisiert ablaufen lassen.
Für die Testausführung gibt es Hilfsmittel für die Testablaufsteuerung, d.h. der gesamte Testablauf kann durch ein Tool unterstützt in einem Schritt ablaufen (z.B. Laden der Datenbank, Ausführung einer Batch-Kette, Sichern der Ergebnisse und Durchführen von Vergleichen). Bei der Ausführung von Online-Funktionalitäten können Capture-/Replay-Tools unterstützen.
Nr. |
Methode |
Kritikalität des Projektes |
Effizienz |
||
Hoch |
Mittel |
Gering |
|||
5 |
Capture/ Replay |
A |
|
|
Hoch |
4 |
Soll-Ist Vergleich |
|
A |
|
|
3 |
Sichern der Testergebnisse |
B |
|
A |
Mittel |
2 |
Bereitstellen von Testdaten |
C |
B/C |
|
|
1 |
Keine Testprozeduren; manuelle Testausführung |
|
|
B/C |
Niedrig |
Die Effizienz der Testausführung kann durch verschiedene Schritte in Richtung Automatisierung erhöht werden. Das beginnt mit der automatisierten Bereitstellung von Testdaten für die manuelle Testausführung und geht bis zu einer Vollautomatisierung aller Aktivitäten in der Testdurchführung.
Bezogen auf die Testergebnisse sollten Techniken bereitgestellt werden, die |
» Archivierung erzeugter Ist-Ergebnisse |
» Bereitstellung von synthetisch erstellten Soll-Ergebnissen |
» Verwendung korrekter Ist-Ergebnisse als Soll-Ergebnisse für den späteren Vergleich nachfolgender Ist-Ergebnisse |
sicherstellen. |
Nr. |
Beschreibung |
Kritikalität des Projektes |
Sicherheit |
||
Hoch |
Mittel |
Gering |
|||
6 |
Kontrolle der gesamten Sekundärdatenbasis |
|
|
|
Hoch |
5 |
Kontrolle der testrelevanten Datenbankinhalte |
A |
|
|
|
4 |
Kontrolle der Druckoutputs |
|
A |
|
Mittel |
3 |
Onlinekontrolle, z.B. mittels Anzeigefunktionen |
B |
|
A |
|
2 |
Visuelle Begutachtung einer Stichprobe der Testergebnisse |
C |
B/C |
|
|
1 |
Kontrolle des Ablaufs, z.B. anhand von Protokollen |
|
|
B/C |
Niedrig |
Für die Kontrolle und den Vergleich der Testergebnisse ist eine Technik anzuwenden, die bei der manuellen Auswertung bzw. der automatisierten Auswertung unterstützen.
Bei der Testauswertung können, mit Hilfe der IT, folgende Hilfsmittel unterstützen: |
» Vergleichstools zum Auswerten von Ergebnisdateien (SOLL-/IST-Vergleiche), |
» Coverage Tools helfen bei der statischen und dynamischen Analyse. Einerseits kann in der statischen Analyse z.B. die Einhaltung von Programmierrichtlinien überprüft und andererseits durch die Abdeckungsmessung in der dynamischen Analyse gemessen werden, wie hoch die Programmabdeckung nach der Testausführung mit den erstellten Testdaten ist. |
» Werkzeuge zur Fehleranalyse sind z.B. Debugger. |
Die Testfallermittlung kann begonnen werden, sobald abgenommene Fachkonzepte vorliegen. Für die Testdatendefinition sollten die DV-Konzepte erstellt und abgenommen sein.
Für den Beginn der Testdurchführung müssen die Testobjekte erfolgreich durch den Schnittstellentest gelaufen sein, d.h. die definierten Testende Kriterien wurden nachgewiesen.
Die Testende Kriterien ergeben sich im Wesentlichen durch die Risikoanalyse und die daraus folgend gewählten Testmethoden.
Erreichen eines spezifizierten Testabdeckungsgrades: |
Mindestens einmaliges korrektes Durchlaufen aller geänderten / implementierten Funktionen |
Mindestens einmaliges Erreichen aller Fehlermeldungen |
Mindestens einmaliges Erreichen aller Verarbeitungsergebnisse (Reports, Druckoutput,..) |
Mindestens einmalige Überprüfung aller implementierten Benutzerschnittstellen
auf |
|
Oder bezogen auf ein systematisches Vorgehen in der Testvorbereitung: |
Vollständige Abdeckung aller Eingaben (Äquivalenzklassenmethode) |
Vollständige Überprüfung aller Wirkungen (Ursache-Wirkungsgraph-Methode) » Verarbeitungsregeln |
Vollständige Abdeckung von Grenzwerten |
Erfolgreiche Ausführung aller definierten Testfälle (unter Zeitdruck kann eine Einschränkung bezüglich der Kritikalität der Testobjekte getroffen werden, z.B. alle C-Testfälle werden nicht ausgeführt) |
Es sollte noch festgelegt werden, was mit erfolgreich gemeint ist. Bei größeren Projekten kann es schwer werden, wenn erfolgreich = keine offenen Fehler bedeutet. Daher sollte, unter Berücksichtigung der Fehlergewichtung, ein Schwellwert festgelegt werden, wann ein Test erfolgreich absolviert wurde.
So kann folgendes festgelegt werden: |
» Keine Fehler der Gewichtung 1 |
» Weniger als 10 Fehler der Gewichtung 2 |
» Beliebige Fehler der Gewichtung 3 |
Diese Festlegung ist jedoch auch von der jeweiligen Kritikalität des Projektes und den Qualitätsanforderungen abhängig