Testautomatisierung - Anforderung
Eine Testautomatisierung sollte gegenüber den unterschiedlichen Akteuren und Stakeholdern folgende Anforderungen erfüllen:
- Berichte gegenüber Projektleitung
- Anwendungsabdeckung gegenüber Fachbereiche und Projektleitung
- technisch passend hinsichtlich dem Testobjekt
- einfache Testspezifikation in Terstfällen für fachliche Testanalyse und -spezifikation
- automatische Durchführung
- Ablaufdokumentation für Recherche, um ggf. Fehler nachzuweisen
- Wiederholbarkeit für Regressionen
- automatisierte Auswertung
Berichtswesen
Von Managementseite aus ist eine kontinuierliche Rückmeldung über den Stand des Testfortschritts wichtig, um ggf. nachsteuern zu können. Nachsteuern heißt dann, Qualitätsabstriche vornehmen (Risikobasiertes Testen), zusätzliche Zeit oder Mittel.
Die wesentlichen, management-relevanten Zahlen sind dabei, wie viel Tests erforderlich sind, wie viele davon spezifiziert, automatisiert, durchgeführt und fehlerfrei getestet sind, um die jeweilige Anforderung zu qualitätssichern. Die Anforderung wird dabei oft in einem Projektmedium (z.B. Scrum-Board) oder in einem Testmedium (z.B. Testframework) festgehalten.
Projektmanagement-relevante Daten
Folgende Fragen sind Projekt-relevant:
- ist die gestellte Anforderung erfüllt?
- vollständig erfüllt
- teilweise erfüllt mit welchen akzeptierten Einschränkungen und ggf. mit welchen Erfordernissen
- kritisch erfüllt mit welchen Risiken und ggf. mit welchen gefundenen Fehlern
- nicht erfüllt mit welchem Status und ggf. mit welchen gefundenen Fehlern
Testmanagement-relevante Daten
Folgende Fragen sind Test-relevant::
- ist die Anforderung testbar
- ist die Anforderung fachlich vollständig verstanden und was ist ggf. erforderlich
- ist die Anforderung technisch testbar und was ist ggf. erforderlich
- mit wie vielen Testfällen wird die Anforderung abgedeckt
- wie viele Testfälle sind für welchen Abdeckungsgrad erforderlich
- wie viele Testfälle sind bearbeitet
- fertig abgenommen
- ausgewertet und ggf. mit neuen/bekannten Fehlern
- in Auswertung und ggf. mit welchen Hindernissen
- durchgeführt und mit welcher Durchlaufzeit
- in Durchführung
- automatisiert
- in Automatisierung und ggf. mit welchen Hindernissen
- spezifiziert
- in Spezifierung und ggf. mit welchen Hindernissen
- unbearbeitet
Anwendungsabdeckung - Kombinatorik und Generation von Testfällen und Testdaten
Für den Test bedeutet die Testabdeckung vor allen die Kombinatorik mittels Äquivalenzklassen und Grenzwertanalysen. Das Erstellen der Kombinationen zu Testfällen kann eine Testautomation erfüllen, optimalerweise mit unterschiedlichen Strategien:
Kreuzprodukt
Jede Ausprägung wird mit jeder Ausprägung kombiniert, d.h. es gibt allein bei 6 Feldern mit jeweils 3 Ausprägungen: 3 x 3 x 3 x 3 x 3 = 36 = 759 Kombinationen/Testfälle. Eine solche Testreihe lässt sich im Systemtest nicht sinnvoll testen. Das ließe sich im Komponententest/Unittest zeitlich ausführen, müsste aber anschließend noch ausgewertet werden, was wiederum einen großen Aufwand bedeuten würde. Ob sich dieser Aufwand lohnt, wird man sich schnell stellen.
Paarweise Kombination
Wenn die 6 Felder in drei voneinander unabhängigen Gruppen unterteilt werden können, reichen je Gruppe 3 x (3 x 3) = 33 = 27 Kombinationen/Testfälle aus. Da die 3 Gruppen zusammen getestet werden, reichen die jeweils 9 nötigen Testfälle aus, wenn alle Gruppen sich jeweils mit den anderen getestet werden (tf1.1. mit tf2.1 und tf3.1, tf1.2. mit tf2.2 und tf3.2, ...).
Orthogonale Kombination
Wenn die 6 Felder als gänzlich unabhängig voneinander angesehen werden, reicht es, wenn jede Ausrägung nur einmal getestet wird, also max(3, 3, 3) = 3 Kombinationen/Testfälle.
Sonderfälle
Neben den generierten Testfällen wird es erforderlich sein, dass wegen Produktionsproblemen oder für angeforderten typischen Testfälle zusätzliche Testfälle erstellt werden müssen. Dafür muss nach der Generierung Testfälle ergänzt werden können. Die generierte Testfallmenge muss also manuell erweiterbar sein.
Technik - Schnittstellen
Beim Test werden Schnittstellen des Testobjektes, um über diese das Testobjekt in spezifizierter Weise mit spezifizierten Daten zu testen. Das Testobjekt muss dabei in einem wohldefinierten Zustand sein, weshalb Vorbereitungen erforderlich sind.
Folgende Grundaufgaben muss eine Automatisierungen bereitstellen:
- Präparieren des Testobjektes durch
- Anwendungskonfigurationen
- Anwendungsschnittstellen - höhere Durchlaufzeit wegen vorhergehender Prozesse
- Datenbankschnittstelle - ggf. höhere Komplexität, da das Resultat vorhergehender Prozesse synthetisch ermittelt werden muss
- Spezifizierte Daten aufbereiten und in technisches Format übersetzen
- Test einspielen
Automatisierung - Anpassung an neue Testfälle
Eine Automatisierung sollte so modelliert sein, dass weitere ähnliche Testfälle nachspezifiziert werden können, ohne dass dadurch weiterer Automatisierungsaufwand erforderlich ist.
Deshalb sollten:
- Testfallobjekte mittels Testdaten erstellt werden
- Teilobjekte des Testfalls hinterlegt und katalogisiert bereitgestellt werden, so dass auf diese bei der Spezifikation zurückgegriffen und referenziert werden können
- Testdaten sollten änderbar sein, möglichst auch allgemein (Speicherung in relationaler DB wünschenswert)