• Keine Ergebnisse gefunden

Testeinschränkungen

Im Dokument Das Praxishandbuch für den Test (Seite 78-86)

3 Objektorientierte Testplanung

3.3 Inhalt des Testplans

3.3.5 Testeinschränkungen

Testeinschränkungen umreißen die Grenzen des Tests. Hier wird darauf verwiesen, welche Funktionen nicht zu testen sind, welche Mittel nicht zur Verfügung stehen und welche Qualitätsziele nicht erreicht werden können. Einschränkungen ergeben sich aus größtenteils wirtschaftlichen Zwängen. Die größte Einschränkung ist das Geld. Das Testbudget sollte hier zu Beginn des Testprojekts fixiert sein. Es dürfte zwischen 30% und 60% des Gesamtprojektbudgets betragen, je nachdem, wie viel Software wiederverwendet wird. Falls die Wiederverwendungsrate bzw. der Anteil vorgefertigter Klassen und Komponenten hoch ist, wird der Testanteil eher bei 60%

eines insgesamt kleineren Budgets liegen. Falls die Wiederverwendungsrate niedrig ist, d.h. alles von Grund auf neu kodiert werden muss, wird der Testanteil eher bei 30% eines insgesamt größeren Budgets liegen [Jon97].

In diesem Zusammenhang ist nochmals zu betonen, dass Testkosten weniger von der Qualität als von der Quantität und Komplexität eines Software-Systems abhän-gen. Der Testaufwand kann anhand der Anzahl der Testgegenstände geschätzt wer-den. Für jede Testobjektart wird ein mittlerer Testaufwand in Personentagen ermit-telt. Dieser wird mit der Anzahl der Testgegenstände dieser Art multipliziert, um zum geschätzten Aufwand zu kommen (Abbildung 3.5).

Testplanung Testentwurf Testspezifikation Testausführung Testauswertung

10%

15%

30%

30%

15%

Abbildung 3.5 Aufteilung der Testaufwände

3.3 Inhalt des Testplans _________________________________________________65

3.3.6 Teststrategie

Mit der Teststrategie ist die Vorgehensweise und Reihenfolge bei der Ausführung der Tests gemeint. Eine Teststrategie kann z.B. eine Top-Down- oder Bottom-Up-Integration vorsehen. Sie kann auch ein Big Bang – alles auf einmal – oder einen iterativen, stückweisen Test vorsehen. Die Strategie bestimmt also, in welcher Rei-henfolge die Klassen, Komponenten und Teilsysteme zu testen sind. Darüber hinaus bestimmt sie den allgemeinen Testansatz. Es sind hier die Teststufen wie z.B. Klas-sentest, Integrationstest, Systemtest und Abnahmetest (Abbildung 3.6), sowie die Testmethodik wie z.B. regelbasierter, nachrichtenbasierter oder nutzungsbasierter Test, vorzugeben. Dieser Abschnitt wird gewöhnlich einer der längsten im Testplan sein.

Klassentest

Integrationstest

Systemtest

Abnahmetest Abbildung 3.6 Festlegung der Teststufen

3.3.7 Testendekriterien

Testendekriterien sind die Erfolgskriterien für jede einzelne Teststufe und haben mit Testmetriken zu tun. Ein endloser Test ist kein Test! Um ein Ende zu erreichen, muss ein Test messbar sein, d.h. man muss das Erreichen eines Ziels quantifizieren.

Dazu werden Testüberdeckungsmaße herangezogen. Ein Klassentest könnte ein Endekriterium wie z.B. 100% Funktions- und 90% Zweigüberdeckung haben. Der Integrationstest könnte ein Endekriterium wie 100% aller Nachrichten und 80%

aller Ausnahmebehandlungen haben. Beim Systemtest wird das Endekriterium etwas wie 99% aller Anwendungsfälle und 90% aller Fehlerfälle sein.

Ein weiteres Testendekriterium ist die Fehlerrate. Eine fehlerlose Software wird es nie geben, aber eine Fehlerrate von 1 Fehler pro 1000 Transaktionen wäre erreich-bar. Man könnte auch die Fehleranzahl schätzen oder hochrechnen und so lange testen, bis man diese Anzahl aufgedeckt hat. Messbare quantitative Testendekrite-rien sind auf jeden Fall eine Voraussetzung für einen erfolgreichen Test [BaSe87].

Zweigüberdeckung = 0,85 Methodenüberdeckung = 0,95 Schnittstellenüberdeckung = 0,99 Anwendungsfallüberdeckung = 1,00 Oberflächenüberdeckung = 0,95 Ausnahmeüberdeckung = 0,80 Abbildung 3.7 Testendekriterien

3.3.8 Regressionstestkriterien

Bei einer zyklischen iterativen Software-Entwicklung, so wie sie für objektorien-tierte Projekte vorgesehen ist, kommt dem Regressionstest eine besondere Rolle zu.

Der Test jeder zusätzlichen Schicht von Klassen erbt den Test der darüberliegenden Schichten, die bereits getestet worden sind. D.h. bis auf den ersten Test der Basis-klassen an der Spitze der Klassenhierarchie sind alle weiteren Testzyklen auch ein Regressionstest. Neben den neuen Testfällen für die neuen Klassen werden die alten Testfälle für die alten Klassen wiederholt. In diesem Zusammenhang sind die Er-kenntnisse von Perry und Kaiser einzubeziehen, nämlich dass alle geerbten Metho-den nochmals im neuen Kontext zu testen sind [PeKa90].

Umso wichtiger ist es, Kriterien für den Regressionstest vorzugeben, Kriterien wie der Grad, zu dem bereits getestete Funktionen nochmals getestet werden, wie die Testprozeduren aufzubewahren sind und wie die Regressionstestüberdeckung zu messen ist. Messziele für einen Regressionstest sind z.B.:

• der prozentuale Anteil der alten Testfälle,

• der prozentuale Anteil der neuen Testfälle,

• die Testüberdeckung der alten Klassen und

• die Testüberdeckung der neuen Klassen.

3.3 Inhalt des Testplans _________________________________________________67

3.3.9 Testergebnisse

Die Testergebnisse sind die Dokumente bzw. Berichte und Programme, die vom Testprojekt erzeugt werden. Laut ANSI-Norm 829 sind es mindestens die acht in Abbildung 3.8 dargestellten Ergebnisse [IEEE829]:

• der Testplan,

• der Testentwurf,

• die Testfallspezifikation,

• die Testprozeduren,

• das Testobjektverzeichnis,

• der Testlog,

• der Testvorfallsbericht und

• der Testabschlussbericht.

Testfall-spez.

Testfall-spez.

Testergebnis-protokoll

Testergebnis-protokoll

Test-entwurf Test-entwurf

Testvorfall-berichte

Testvorfall-berichte Testplan

Testplan

Testabschluss-bericht

Testabschluss-bericht

Testobjekt-verzeichnis Testobjekt-verzeichnis

Testlog Testlog

Test-prozeduren Test-prozeduren

Test-objekte

Test-objekte Abbildung 3.8 Testergebnisse

3.3.9.1 Testplan

Der Testplan ist das Dokument, das hier in diesem Kapitel beschrieben wird.

3.3.9.2 Testentwurf

Der Testentwurf ist das Ergebnis der Entwurfsphase. Er umfasst die Testarchitektur, die Teststufen und die Szenarien für jeden Test. Er wird im vierten Kapitel be-schrieben.

3.3.9.3 Testfallspezifikation

Die Testfallspezifikation enthält eine Definition jedes einzelnen Testfalls mit den Vorbedingungen und Nachbedingungen sowie die zu testenden Funktionen. Die Testfälle können strukturiert, halbformal oder streng formal beschrieben werden.

Testfälle gibt es für jede Teststufe, wobei eine Stufe Testfälle von anderen Stufen erben kann. Die Testfallspezifikation wird im fünften Kapitel beschrieben.

3.3.9.4 Testprozeduren

Die Testprozeduren sind im Grunde genommen Programme für die Ausführung des Tests. Sie werden in einer Testskriptsprache verfasst, oder sie werden von einem Tool generiert. Sie können nachher kompiliert oder interpretiert werden. Durch die Testprozeduren werden die Testfälle ausgeführt, d.h. die Vorbedingungen gesetzt, und die Nachbedingungen geprüft. Es gibt viele Arten von Testskripten in Abhän-gigkeit vom eingesetzten Testwerkzeug, denn leider gibt es keine normierte Test-skriptsprache. Testprozeduren werden in den Kapiteln 6 bis 8 behandelt.

3.3.9.5 Testobjektverzeichnis

Das Testobjektverzeichnis ist ein Test aller aktuellen Testgegenstände. Dazu gehö-ren die zu testenden Klassen, Module, Komponenten, Schnittstellen und Teilsyste-me.

3.3.9.6 Testlog

Der Testlog ist eine Reihe automatisch generierter Testprotokolle. Protokolliert wird der Ablauf des Testgegenstands sowie die Zwischen- und Endergebnisse. So werden z.B. die erzeugten Objekte, die ausgeführten Methoden, die abgesendeten Nachrichten und die betätigten Oberflächenfunktionen registriert. Außerdem wer-den Objektzustände, Zusicherungsverletzungen, Soll/Istabweichungen und Daten-bankinhalte festgehalten. Schließlich soll ein Testprotokoll die Testüberdeckung

3.3 Inhalt des Testplans _________________________________________________69

berichten. Der Testlog dient der Fehlerfindung und der Testauswertung. Er wird im 9. Kapitel behandelt.

3.3.9.7 Testüberdeckungsbericht

Der Testüberdeckungsbericht dokumentiert, zu welchem Grade die Testgegenstän-de durch Testgegenstän-den Test überTestgegenstän-deckt und die Testfunktionen erfüllt wurTestgegenstän-den. Diese Auskunft ist notwendig, um die Qualität und den Fortschritt des Tests beurteilen zu können.

Auch die Testüberdeckungsmessung steht im Mittelpunkt von Kapitel 9.

3.3.9.8 Testvorfallsbericht

Der Testvorfallsbericht ist eine Zusammenfassung sämtlicher Fehlerberichte für einen Testzyklus. Jede Meldung bezieht sich auf eine Fehlererscheinung mit einer Beschreibung des Fehlers und der Umstände, unter denen der Fehler auftritt. Jeder Fehler ist auch nach Schwere und Risiko zu bewerten. In dem Vorfallsbericht wird eine Tabelle aller Fehler mit einer Fehlerstatistik aufgebaut. In der Fehlerstatistik geht es darum, das Verhältnis Fehler pro Kilo-Codezeilen, pro Testfall und pro Komponente aufzuzeigen. Die Fehlerberichtserstattung wird ebenfalls im 9. Kapitel behandelt.

3.3.9.9 Testabschlussbericht

Der Testabschlussbericht ist das letzte Dokument des Testprojekts. Er wird zum Abschluss des Tests geschrieben und fasst alle bisherigen Testergebnisse zusam-men. Zum Abschlussbericht gehört die zuletzt erreichte Testüberdeckung, die end-gültige Fehlerrate und die Restfehlerwahrscheinlichkeit. Auf die Gestaltung dieses Berichts wird ebenfalls in Kapitel 9 eingegangen.

3.3.10 Testaufgaben

Die Testaufgaben sind die Arbeiten, die in jeder Testphase zu erledigen sind. Typi-sche Aufgaben sind der Entwurf der Testszenarien, die Spezifikation der funktiona-len Testfälle, die Spezifikation der Integrationstestfälle, die Generierung der Test-prozeduren und die Durchführung eines Komponententests. Im Allgemeinen lassen sich Testaufgaben gliedern in

• Testvorbereitungsaufgaben,

• Testausführungsaufgaben und

• Testauswertungsaufgaben.

Testvorbereitungsaufgaben sind Aktivitäten, die vor dem eigentlichen Test stattfin-den. Dazu gehören die Planung, der Entwurf, die Testfallspezifikation, die Testpro-zedurerstellung und der Aufbau der Testdatenbanken.

Testausführungsaufgaben sind Aktivitäten, die während des Tests anfallen, z. B.

Auslösung, Verfolgung und Aufzeichnung der Testläufe.

Testauswertungsaufgaben sind Aktivitäten, die nach dem Test folgen. Dazu gehört die Testauswertung, die Testdokumentation und die Fehlerberichtserstattung. Hier erscheint also eine Liste sämtlicher Aufgaben mit einer kurzen Beschreibung und einer aufgabenbezogenen Aufwandsschätzung. Dies entspricht einem z.B. mit der Netzplantechnik strukturierten Projektplan.

Windows NT - Client

Windows NT - Clients Windows NT - Clients

Windows NT - Client

RS 6000 Server RS 6000

Server

IBM Host 3090

DCOM

DCOM

CICS CICS

Abbildung 3.9 Aufbau der Testumgebung

3.3.11 Testumgebungsanforderungen

Die Anforderungen an die Testumgebung (Abbildung 3.9) sind an dieser Stelle aufzulisten. Hier geht es um die Zuteilung der Betriebsmittel. Für den Test werden Hardware, Software und Menschen benötigt (Abbildung 3.10). Unter Hardware sind die Rechner, Netze, Arbeitsplätze und sonstige Geräte zu verstehen, welche die Testkonfiguration ausmachen. Hierzu gehört auch die Speicherkapazität für die Testdaten. Unter Software sind die Basissoftwaresysteme wie Datenbanksysteme, Betriebssysteme, Middleware-Produkte und Dienstprogramme sowie die Testwerk-zeuge zu verstehen. Unter Menschen ist das Testpersonal zu verstehen. In der Regel wird eine Mischung aus technischen und fachlichen Mitarbeitern benötigt. Es

3.3 Inhalt des Testplans _________________________________________________71

kommt hier darauf an, den Personalbedarf sowie den Hardware- und Software-Bedarf zu dokumentieren.

Serverkapazität

Arbeitsplätze Netzverbindung

Tester Tester

Entwickler Entwickler

Datenbanken

Klassen-bibliotheken Mittelware

Middleware

System Dienste System Dienste

Abbildung 3.10 Zuteilung der Testbetriebsmittel

3.3.12 Testverantwortlichkeiten

In diesem Abschnitt wird geregelt, wer für welche Teststufen verantwortlich ist.

Normalerweise sind die Entwickler für den Klassen- und Modultest zuständig, aber die Testgruppe ist dafür verantwortlich, eine Klassentestumgebung bereitzustellen.

Für den Integrationstest liegt die Verantwortung bei der Testgruppe, aber die Ent-wickler sind beteiligt. Der Systemtest und alle weiteren Teststufen wie Belastungs-test und AbnahmeBelastungs-test liegen im Verantwortlichkeitsbereich der Testgruppe. Wich-tig ist die Fixierung der Verantwortung vor dem Start des Projekts.

3.3.13 Testaufgabenteilung

Die Verteilung der Testaufgaben auf das Testpersonal soll hier dokumentiert wer-den. Es ist eindeutig zu klären, wer welche Aufgaben wahrzunehmen hat. Natürlich wird dies zu Beginn des Projekts nicht immer vollständig möglich sein, sodass dieser Abschnitt meistens später eingefügt wird, wenn das Personal zur Verfügung steht und alle Testaufgaben bekannt sind. Eine persönliche Verantwortung für Test-aufgaben ist eine wichtige Voraussetzung für den Erfolg des Testprojekts.

3.3.14 Testzeitplan

Der Testzeitplan ist ein Balkendiagramm für die Zuordnung der Testaktivitäten auf der Zeitachse bzw. auf dem Kalender. Hier kommt es darauf an, für jede Testaufga-be die Start- und Endzeit zu fixieren. Es versteht sich, dass das Testprojekt als ei-genständiges Projekt auch einen eigenen Projektplan haben muss. Dieser Plan lässt sich mit den üblichen Projektplanungswerkzeugen erstellen.

Zeiteinheiten

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12

Testaktivitäten

Tests planen

Tests entwerfen

Testfälle spezifizieren Klassen testen

System testen Integrationstesten

Abnahmetesten Tests auswerten

Abbildung 3.11 Testzeitplan

Im Dokument Das Praxishandbuch für den Test (Seite 78-86)