Direkt zu
 

Übungsaufgaben und Lösungen


Hinweis

Diese Übungsaufgaben und Lösungen sind ausschließlich als Übungsmaterial und Beispiele zu verstehen. Sie entsprechen nicht den offiziellen Prüfungsfragen zum Erwerb des Zertifikats Certified Tester - Foundation Level.

Übungsaufgaben zu Kapitel 2

2.1 Definieren Sie die Begriffe Fehlerwirkung, Fehlerzustand, Fehlhandlung. Antwort

2.2 Was ist Fehlermaskierung? Antwort

2.3 Erläutern Sie den Unterschied zwischen Testen und Debugging. Antwort

2.4 Erläutern Sie, warum jeder Test eine stichprobenartige Prüfung ist. Antwort

2.5 Nennen Sie die Hauptmerkmale der Softwarequalität nach ISO 9126. Antwort

2.6 Definieren Sie den Begriff Zuverlässigkeit eines Systems. Antwort

2.7 Erläutern Sie die Phasen des fundamentalen Testprozesses. Antwort

2.8 Was ist ein Testorakel? Antwort

2.9 Warum sollte ein Entwickler nicht seine eigenen Programme testen? Antwort

zu allen Lösungen von Kapitel 2


Übungsaufgaben zu Kapitel 3

3.1 Erläutern Sie die einzelnen Phasen des allgemeinen V-Modells. Antwort

3.2 Definieren Sie die Begriffe Verifikation und Validierung. Antwort

3.3 Begründen Sie, warum Verifikation sinnvoll ist, auch wenn eine sorgfältige Validierung stattfindet (und umgekehrt). Antwort

3.4 Charakterisieren Sie die typischen Testobjekte im Komponententest. Antwort

3.5 Nennen Sie die Testziele des Integrationstests. Antwort

3.6 Welche Integrationsstrategien lassen sich unterscheiden? Antwort

3.7 Welche Gründe sprechen dafür, Tests in einer separaten Testumgebung durchzuführen? Antwort

3.8 Erläutern Sie anforderungsbasiertes Testen. Antwort

3.9 Definieren Sie Lasttest, Performanztest, Stresstest. Was sind die Unterscheidungsmerkmale? Antwort

3.10 Worin unterscheiden sich Fehlernachtest und Regressionstest? Antwort

3.11 In welcher Projektphase nach allgemeinem V-Modell sollte das Testkonzept erstellt werden? Antwort

zu allen Lösungen von Kapitel 3


Übungsaufgaben zu Kapitel 4

4.1 Beschreiben Sie die grundlegenden Schritte die bei einem Review durchzuführen sind. Antwort

4.2 Welche Reviewarten werden unterschieden? Antwort

4.3 Welche Rollen wirken an einem technischen Review mit? Antwort

4.4 Warum sind Reviews ein effizientes Mittel zur Qualitätssicherung? Antwort

4.5 Erklären Sie den Begriff statische Analyse. Antwort

4.6 Wie stehen statische Analyse und Reviews in Zusammenhang? Antwort

4.7 Warum kann statische Analyse nicht alle in einem Programm enthaltenen Fehlerzustände aufdecken? Antwort

4.8 Welche Arten von Datenflussanomalien werden unterschieden? Antwort

zu allen Lösungen von Kapitel 4


Übungsaufgaben zu Kapitel 5

5.1 Was ist ein dynamischer Test? Antwort

5.2 Wozu dient ein Testrahmen? Antwort

5.3 Wodurch unterscheiden sich Black-Box- und White-Box-Testverfahren? Antwort

5.4 Erklären Sie das Verfahren der Äquivalenzklassenbildung. Antwort

5.5 Was ist ein Repräsentant? Antwort

5.6 Wie ist das Testendekriterium Äquivalenzklassenüberdeckung definiert? Antwort

5.7 Warum ist die Grenzwertanalyse eine gute Ergänzung zur Äquivalenzklassenbildung? Antwort

5.8 Nennen Sie weitere Black-Box-Verfahren. Antwort

5.9 Erläutern Sie den Begriff Anweisungsüberdeckung. Antwort

5.10 Worin unterscheiden sich Anweisungs- und Zweigüberdeckung? Antwort

5.11 Wozu dient eine Instrumentierung? Antwort

zu allen Lösungen von Kapitel 5


Übungsaufgaben zu Kapitel 6

6.1 Welche grundsätzlichen Modelle einer Aufgabenteilung zwischen Entwicklung und Test lassen sich unterscheiden? Antwort

6.2 Welche Rollen sind beim Testen auszufüllen und mit speziell qualifizierten Mitarbeitern zu besetzen? Antwort

6.3 Welche Aufgaben hat der Testmanager? Antwort

6.4 Welche Arten von Metriken zur Überwachung des Testfortschritts lassen sich unterscheiden? Antwort

6.5 Welche Informationen sollte ein Teststatusbericht enthalten? Antwort

6.6 Welche Daten sollte eine Fehlermeldung enthalten? Antwort

6.7 Was ist der Unterschied zwischen Fehlerpriorität und Fehlerklasse? Antwort

6.8 Wozu wird ein Fehlerstatusmodell benötigt? Antwort

6.9 Welche Aufgabe hat ein Änderungskontrollausschuss? Antwort

6.10 Welche Anforderungen aus Sicht des Tests stellen sich an das Konfigurationsmanagement? Antwort

6.11 Welche grundsätzlichen Arten von Normen und Standards lassen sich unterscheiden? Antwort

zu allen Lösungen von Kapitel 6


Übungsaufgaben zu Kapitel 7

7.1 Welche grundlegenden Funktionen bieten Testplanungswerkzeuge? Antwort

7.2 Welche Typen von Testdatengeneratoren werden unterschieden? Antwort

7.3 Welcher Typ von Testdatengenerator kann auch Sollwerte generieren? Warum können die anderen Typen das nicht? Antwort

7.4 Erläutern Sie die prinzipielle Funktionsweise eines Capture&Replay-Tools. Antwort

7.5 Aus welchen Schritten besteht der Prozess zur Auswahl eines Testwerkzeugs? Antwort

7.6 Welche Schritte sind bei der Werkzeugeinführung zu beachten? Antwort

zu allen Lösungen von Kapitel 7



Antworten zu den Übungsaufgaben


Antworten zu den Übungsaufgaben zu Kapitel 2

 

2.1 Definieren Sie die Begriffe Fehlerwirkung, Fehlerzustand, Fehlhandlung.

Fehlerwirkung (failure)
1. Wirkung eines Fehlerzustandes, die bei der Ausführung des Testobjekts nach "außen" in Erscheinung tritt.
2. Abweichung zwischen (spezifiziertem) Sollwert und (beobachtetem) Istwert (bzw. Soll- und Ist-Verhalten).

Fehlerzustand (fault)
1. Inkorrektes Teilprogramm, inkorrekte Anweisung oder Datendefinition, die Ursache für einen äußeren Fehler ist.
2. Zustand eines (Software)produktes oder einer seiner Komponenten, der unter spezifischen Bedingungen (z.B. bei einer hohen Belastung) eine geforderte Funktion des Produkts beeinträchtigen kann, bzw. zu einer Fehlerwirkung führt.

Fehlhandlung (error)
1. Die menschliche Handlung (des Entwicklers), die zu einem Fehlerzustand in der Software führt.
2. Eine menschliche Handlung (des Anwenders), die ein unerwünschtes Ergebnis (im Sinne von Fehlerwirkung) zur Folge hat (Fehlbedienung).
3. Unwissentlich, versehentlich oder absichtlich ausgeführte Handlung oder Unterlassung, die unter gegebenen Umständen (Aufgabenstellung, Umfeld) dazu führt, dass eine geforderte Funktion eines Produktes beeinträchtigt ist.

(s.a. Kap. 2.1.1 Fehlerbegriff)

zurück zur Frage

 

2.2 Was ist Fehlermaskierung?

Ein vorhandener Fehlerzustand wird durch einen oder mehrere andere Fehlerzustände in anderen Teilen des Testobjekts kompensiert, so dass dieser Fehlerzustand keine Fehlerwirkung hervorruft

(s.a. Kap. 2.1.1 Fehlerbegriff)

zurück zur Frage

 

2.3 Erläutern Sie den Unterschied zwischen Testen und Debugging.

Testen dient dem Nachweis der korrekten Umsetzung der Anforderungen und der Aufdeckung von Fehlerwirkungen. Debugging dient der Lokalisierung der Ursache der Fehlerwirkung, der Fehlerzustand wird ermittelt. Das Debugging wird in der Regel von den Entwicklern durchgeführt.

(s.a. Kap. 2.1.2 Testbegriff)

zurück zur Frage

 

2.4 Erläutern Sie, warum jeder Test eine stichprobenartige Prüfung ist.

Beim dynamischen Test wird das Testobjekt mit Eingabedaten versehen und zur Ausführung gebracht. Aussagen lassen sich nur bezüglich der durchgeführten Testfälle treffen. Ein vollständiges Testen mit allen möglichen Testdaten und Kombinationen ist praktisch nicht durchführbar. Jeder Test ist somit eine Stichprobe. Diese Stichproben sollen gewählt werden, dass das Spektrum der Eingaben möglichst umfassend berücksichtigt wird. Testintensität und -umfang sollen in Abhängigkeit vom erwarteten Risiko im Fehlerfall festgelegt werden.

(s.a. Kap. 2.1.4 Testaufwand)

zurück zur Frage

 

2.5 Nennen Sie die Hauptmerkmale der Softwarequalität nach ISO 9126.

Funktionalität, Zuverlässigkeit, Benutzbarkeit, Effizienz, Änderbarkeit und Übertragbarkeit.

(s.a. Kap. 2.1.3 Softwarequalität)

zurück zur Frage

 

2.6 Definieren Sie den Begriff Zuverlässigkeit eines Systems.

Zuverlässigkeit beschreibt die Gesamtheit der Eigenschaften eines Systems, die sich auf die Eignung zur Erfüllung gegebener Erfordernisse unter gegebenen Bedingungen für ein gegebenes Zeitintervall beziehen.

(s. a. Kap. 2.1.3 Softwarequalität)

zurück zur Frage

 

2.7 Erläutern Sie die Phasen des fundamentalen Testprozesses.

Die Phasen des fundamentalen Testprozesses sind:
a) Testplanung
b) Testspezifikation
c) Testdurchführung
d) Testprotokollierung
e) Auswertung und Bewertung des Testendes

a) Testplanung
umfasst folgende Aktivitäten
- Planung von Umfang und Vorgehensweise beim Test, Planung der Ressourcen (Mitarbeiter, Hilfsmittel, Hard- und Software, …) und der zeitlichen Festlegung der intendierten Tests, dokumentiert im Testkonzept.
- Festlegung der Teststrategie und der Überdeckungsgrade der einzusetzenden Testmethoden
- Priorisierung der Tests
- ggf. Auswahl und Beschaffung von benötigten Werkzeugen

(s. a. Kap. 2.2.1 Testplanung)

b) Testspezifikation
Spezifikation der logischen und konkreten Testfälle.

(s.a. Kap. 2.2.2 Testspezifikation)

c) Testdurchführung
Nach der Prüfung der prinzipiellen Start- und Ablauffähigkeit der Testobjekts (ggf. in einem Testrahmen) werden die Hauptfunktionen getestet. Wenn keine gravierenden Fehler auftreten werden danach die spezifizierten Testfälle durchgeführt.

(s.a. Kap. 2.2.3 Testdurchführung)

d) Testprotokollierung
Exakte und vollständige Protokollierung der durchgeführten Testfälle. Aus dem Protokoll muss hervorgehen, welche Teile wann, von wem, wie intensiv und mit welchem Ergebnis getestet wurden.

(s.a. Kap. 2.2.4 Testprotokollierung)

c) Auswertung und Bewertung des Testendes
umfasst folgende Aktivitäten
- Feststellung, ob eine Fehlerwirkung vorliegt oder die Fehlerursache in einer ungenauen Testspezifikation, einer fehlerhaften Testinfrastruktur, einem fehlerhaften Testlauf liegt.
- Ist ein Fehler erkannt, ist die Fehlerklasse festzulegen und damit die Priorität der Fehlerbehebung.
- Es ist zu ermitteln, ob das Überdeckungskriterium erfüllt ist.
- Ggf. sind weitere Testendekriterien heranzuziehen.

(s.a. Kap. 2.2.5 Auswertung und Bewertung des Testendes)

zurück zur Frage

 

2.8 Was ist ein Testorakel?

Informationsquelle zur Ermittlung der jeweiligen Sollergebnisse eines Testfalls (kann beispielsweise die Anforderungsdefinition sein).

(s. a. Kap. 2.3 Sollwerte und Testorakel)

zurück zur Frage

 

2.9 Warum sollte ein Entwickler nicht seine eigenen Programme testen?

Weil der Entwickler "blind" gegenüber seinen eigenen Fehlern ist, er dem eigenen Produkt gegenüber nicht kritisch genug ist und meist auch Test-Fachwissen nicht in ausreichendem Maß vorhanden ist.

zurück zur Frage

 


 

Antworten zu den Übungsaufgaben zu Kapitel 3

 

3.1 Erläutern Sie die einzelnen Phasen des allgemeinen V-Modells.

Die Phasen des allgemeinen V-Modells sind:

a) Anforderungsdefinition
Wünsche und Anforderungen des Auftraggebers oder späteren Systemanwenders werden gesammelt, spezifiziert und verabschiedet. Zweck und gewünschte Leistungsmerkmale des zu erstellenden Softwaresystems liegen damit fest.

(s.a. Kap. 3.1 Das allgemeine V-Modell)

b) funktionaler Systementwurf
Abbildung aller Anforderungen auf Funktionen und Dialogabläufe.

(s.a. Kap. 3.1 Das allgemeine V-Modell)

c) technischer Systementwurf
Definition der Schnittstellen zur Systemumwelt und die Zerlegung des Systems in überschaubarere Teilsysteme (Systemarchitektur) die möglichst unabhängig voneinander entwickelt werden können.

(s.a. Kap. 3.1 Das allgemeine V-Modell)

d) Komponentenspezifikation
Definition der Aufgabe, Verhalten, innerer Aufbau einer jeden Komponente und deren Schnittstellen zu anderen Komponenten bzw. Teilsystemen.

(s.a. Kap. 3.1 Das allgemeine V-Modell)

e) Programmierung
Programmierung jedes spezifizierten Bausteins in einer Programmiersprache.

(s.a. Kap. 3.1 Das allgemeine V-Modell)

f) Komponententest
Prüfung, ob jede Komponente für sich den Vorgaben seiner Spezifikation entspricht.

(s.a. Kap. 3.2 Komponententest)

g) Integrationstest
Prüfung, ob Gruppen von Komponenten, wie sie im technischen Systementwurf vorgesehen sind, zusammen spielen.

(s.a. Kap. 3.3 Integrationstest)

h) Systemtest
Prüfung ob das implementierte System den spezifizierten Anforderungen entspricht.

(s.a. Kap. 3.4 Systemtest)

i) Abnahmetest
Prüfung, ob das System aus Kundensicht die vertraglich vereinbarten Leistungsmerkmale aufweist.

(s.a. Kap. 3.5 Abnahmetest)

zurück zur Frage

 

3.2 Definieren Sie die Begriffe Verifikation und Validierung.

Verifikation:
1. Prüfung, ob die Ergebnisse einer Entwicklungsphase die Vorgaben der Phaseneingangsdokumente erfüllen.
2. Mathematisch formaler Beweis der Korrektheit eines Programm(teil)s.

Validierung:
Prüfung, ob ein Entwicklungsergebnis die individuellen Anforderungen bezüglich einer speziellen beabsichtigten Nutzung erfüllt.

(s.a. Kap. 3.1 Das allgemeine V-Modell)

zurück zur Frage

 

3.3 Begründen Sie, warum Verifikation sinnvoll ist, auch wenn eine sorgfältige Validierung stattfindet (und umgekehrt).

Beim Validieren bewertet der Tester, ob ein (Teil-)Produkt eine festgelegte (spezifizierte) Aufgabe tatsächlich löst und deshalb für seinen Einsatzzweck tauglich bzw. nützlich ist. Mit diesen Tests wird aber nicht sichergestellt, dass die Spezifikationen korrekt umgesetzt wurden. Dazu sind zusätzliche Verifikationstests notwendig.

Verifikation ist im Gegensatz zur Validierung auf eine einzelne Entwicklungsphase bezogen und soll die Korrektheit und Vollständigkeit eines Phasenergebnisses relativ zu seiner direkten Spezifikation (Phaseneingangsdokumente) nachweisen. Mit diesen Tests wird aber nicht sichergestellt, dass das Produkt im Kontext der beabsichtigten Produktnutzung sinnvoll ist. Dazu sind zusätzliche Validierungstests notwendig.

(s.a. Kap. 3.1 Das allgemeine V-Modell)

zurück zur Frage

 

3.4 Charakterisieren Sie die typischen Testobjekte im Komponententest.

Kennzeichnend für den Komponententest ist, dass jeweils ein einzelner Softwarebaustein überprüft wird, und zwar isoliert von anderen Softwarebausteinen des Systems. Die Isolierung hat dabei den Zweck, komponentenexterne Einflüsse beim Test auszuschließen. Deckt der Test eine Fehlerwirkung auf, lässt sich deren Ursache dann klar der getesteten Komponente zuordnen (es sei denn, die Fehlerursache liegt im Testrahmen oder in einem fehlerhaften Testfall).

(s.a. Kap. 3.2.2 Testobjekte)

zurück zur Frage

3.5 Nennen Sie die Testziele des Integrationstests.

a) Schnittstellenfehler aufdecken
Probleme können schon beim Versuch der Integration zweier Bausteine auftreten, wenn diese sich nicht zusammenbinden lassen, weil ihre Schnittstellenformate nicht passen, weil einige Dateien fehlen oder die Entwickler das System in ganz andere Komponenten aufgeteilt haben, als spezifiziert war.

b) Fehlerzustände im Datenaustausch bzw. in der Kommunikation zwischen den Komponenten aufdecken
Eine Komponente übermittelt keine oder syntaktisch falsche Daten, so dass die empfangende Komponente nicht arbeiten kann oder abstürzt (funktionaler Fehler einer Komponente, inkompatible Schnittstellenformate, Protokollfehler). Die Kommunikation funktioniert, aber die beteiligten Komponenten interpretieren übergebene Daten unterschiedlich (funktionaler Fehler einer Komponente, widersprüchliche oder fehlerhaft interpretierte Spezifikationen). Die Daten werden richtig übergeben, aber zum falschen oder verspäteten Zeitpunkt (Timing-Problem) oder in zu kurzen Zeitintervallen (Durchsatz- oder Lastproblem).

(s.a. Kap.

zurück zur Frage

3.6 Welche Integrationsstrategien lassen sich unterscheiden?

a) Top-down-Integration
Der Test beginnt mit der Komponente des Systems, die weitere Komponenten aufruft, aber selbst (außer vom Betriebssystem) nicht aufgerufen wird. Die untergeordneten Komponenten sind dabei durch Platzhalter ersetzt. Sukzessive werden die Komponenten niedrigerer Systemschichten hinzu integriert. Die getestete höhere Schicht dient dabei jeweils als Testtreiber.

b) Bottom-up-Integration
Der Test beginnt mit den elementaren Komponenten des Systems, die keine weitere Komponenten aufrufen (außer Funktionen des Betriebssystems). Größere Teilsysteme werden sukzessive aus getesteten Komponenten zusammengesetzt, mit anschließendem Test dieser Integration.

c) Ad-hoc-Integration
Die Bausteine werden z. B. in der (zufälligen) Reihenfolge ihrer Fertigstellung integriert (s. o.).

(s.a. Kap. 3.3.5 Integrationsstrategien)

zurück zur Frage

3.7 Welche Gründe sprechen dafür, Tests in einer separaten Testumgebung durchzuführen?

a) Im Test werden Fehlerwirkungen auftreten. Dabei besteht immer die Gefahr, dass die Produktivumgebung des Kunden beeinträchtigt wird. Teure Systemausfälle und Datenverluste im produktiven Kundensystem können die Folge sein.

b) Die Tester haben keine oder nur geringe Kontrolle über Parameter und Konfiguration der Produktivumgebung. Durch den gleichzeitig zum Test weiter laufenden Betrieb der anderen Kundensysteme werden die Testbedingungen unter Umständen schleichend verändert. Die durchgeführten Systemtests sind schwer oder gar nicht mehr reproduzierbar.

(s.a. Kap. 3.4.2 Testobjekt und Testumgebung)

zurück zur Frage

3.8 Erläutern Sie anforderungsbasiertes Testen.

Das freigegebene Anforderungsdokument wird als Testbasis herangezogen. Zu jeder Anforderung wird mindestens ein Systemtestfall abgeleitet und in der Systemtestspezifikation dokumentiert. Auch die Systemtestspezifikation wird durch ein Review verifiziert. In der Regel wird mehr als nur ein Testfall benötigt, um eine Anforderung zu testen. Sind die einmal definierten Testfälle (bzw. eine in der Testspezifikation definierte Mindestanzahl davon) im Systemtest fehlerfrei gelaufen, wird das System als validiert (in Bezug auf den anforderungsbasierten Test) betrachtet.

(s.a. Kap. 3.4.4 Test funktionaler Anforderungen)

zurück zur Frage

3.9 Definieren Sie Lasttest, Performanztest, Stresstest. Was sind die Unterscheidungsmerkmale?

Lasttest:
Messung des Systemverhaltens in Abhängigkeit steigender Systemlast (z. B. Anzahl parallel arbeitender Anwender, Anzahl Transaktionen).

Performanztest:
Messung der Verarbeitungsgeschwindigkeit bzw. Antwortzeit für bestimmte Anwendungsfälle, in der Regel in Abhängigkeit steigender Last.

Stresstest:
Beobachtung des Systemverhaltens bei Überlastung.

(s.a. Kap. 3.4.5 Test nicht funktionaler Anforderungen)

zurück zur Frage

3.10 Worin unterscheiden sich Fehlernachtest und Regressionstest?

Fehlernachtest:
Wiederholung aller Tests, die Fehlerwirkungen erzeugt haben, deren Ursache der korrigierte Defekt war.

Regressionstest:
Erneuter Test eines bereits getesteten Programms nach dessen Modifikation mit dem Ziel nachzuweisen, dass durch die vorgenommenen Änderungen keine neuen Defekte eingebaut oder bisher maskierte Fehlerzustände freigelegt wurden.

(s.a. Kap. 3.6.3 Regressionstest)

zurück zur Frage

3.11 In welcher Projektphase nach allgemeinem V-Modell sollte das Testkonzept erstellt werden?

Die zugehörige Testvorbereitung wird parallel zu den Entwicklungsschritten durchgeführt, d.h. parallel zum funktionalen Systementwurf.

(s.a. Kap. 3.8.2 Testkonzept)

zurück zur Frage

 


Antworten zu den Übungsaufgaben zu Kapitel 4

 

4.1 Beschreiben Sie die grundlegenden Schritte die bei einem Review durchzuführen sind.

Grundlegende Schritte sind:
a) Planung
b) Einführung
c) Vorbereitung
d) Reviewsitzung
e) Nachbereitung

a) Planung
Vom Management ist zu entscheiden, welche Dokumente des Softwareentwicklungsprozesses welchem Reviewverfahren unterzogen werden sollen. Der zu veranschlagende Aufwand ist einzuplanen.

b) Einführung
Die Einführung kann in Form einer Vorbesprechung erfolgen. Die benötigten Dokumenten werden an die beteiligten Personen verteilt.

c) Vorbereitung
Die Personen des Reviewteams bereiten sich individuell auf die Sitzung vor. Nur bei guter Vorbereitung ist eine erfolgreiche Reviewsitzung überhaupt möglich. Die Gutachter setzen sich intensiv mit dem zu prüfenden Dokument auseinander und verwenden dabei die zur Verfügung gestellten Dokumente als Prüfgrundlage.

d) Reviewsitzung
Die Reviewsitzung wird von einem Moderator geführt. Sie ist auf einen festen Zeitrahmen (maximal 2 Stunden) beschränkt. Ziel ist die Beurteilung des Prüfobjektes in Bezug auf die Einhaltung und Umsetzung der Vorgaben und Richtlinien. Die Bewertung der einzelnen Befunde und die Gesamtbeurteilung soll von allen Gutachtern getragen werden. Das Ergebnis der Sitzung wird protokolliert.

e) Nachbereitung
Der Autor beseitigt auf Grundlage der Reviewergebnisse die Mängel im überprüften Dokument. Bei schwerwiegenden Mängeln kann ein weiteres Review zur Kontrolle der Überarbeitung angesetzt werden. Wiederkehrende oder häufig vorkommende Fehlerarten weisen auf Defizite im Softwareentwicklungsprozess oder im Fachwissen der jeweiligen Personen hin. Notwendige Verbesserungen des Entwicklungsprozesses sind entsprechend zu planen und umzusetzen. Mangel an Fachwissen ist durch Schulung auszugleichen.

(s.a. Kap. 4.1.3 Grundlegende Vorgehensweise)

zurück zur Frage

 

4.2 Welche Reviewarten werden unterschieden?

Walkthrough, Inspektion, technisches Review und informelles Review.

(s.a. Kap. 4.1.5 Reviewarten)

zurück zur Frage

 

4.3 Welche Rollen wirken an einem technischen Review mit?

Moderator, Autor, Gutachter und Protokollant. Beim technisches Review ist darauf zu achten, dass die Gutachter über ausreichende Fachkompetenz verfügen (meist direkte Kollegen des Autors).

(s.a. Kap. 4.1.4 Rollen und Verantwortlichkeiten und Kap. 4.1.5 Reviewarten)

zurück zur Frage

 

4.4 Warum sind Reviews ein effizientes Mittel zur Qualitätssicherung?

Mängel können frühzeitig, direkt nach ihrem Entstehen, erkannt und beseitigt werden. Reviews tragen somit zur Qualitätssteigerung bei und helfen Kosten zu sparen.

(s.a. Kap. 4.1.2 Reviews)

zurück zur Frage

 

4.5 Erklären Sie den Begriff statische Analyse.

Überprüfung, Vermessung und Darstellung eines Programms oder einer Komponente (bzw. eines Dokuments, das eine formale Struktur hat).

(s.a. Kap. 4.2. Statische Analyse)

zurück zur Frage

 

4.6 Wie stehen statische Analyse und Reviews in Zusammenhang?

Statische Analyse wird oft als Obergriff für alle Prüfverfahren verwendet, bei denen keine Ausführung des Testobjekts erfolgt. Besitzt das zu prüfende Dokument eine formale Struktur, so sollte vor dem Review eine werkzeuggestützte statische Analyse durchgeführt werden, da sich dadurch der Reviewaufwand verringert. So sollte vor einem Review eines Programmtextes ein Compilerlauf durchgeführt und die eventuellen Syntaxfehler beseitigt werden.

(s.a. Kap. 4 Statischer Test)

zurück zur Frage

 

4.7 Warum kann statische Analyse nicht alle in einem Programm enthaltenen Fehlerzustände aufdecken?

Weil einige Fehlerzustände erst bei der Ausführung entstehen. Ein Divisor kann beispielweise bei der Ausführung den Wert null annahmen und somit einen Laufzeitfehler verursachen, der durch Sichtung des Programmtextes nicht ermittelt werden kann.

(s.a. Kap. 4.2 Statische Analyse und Kap. 5. Dynamischer Test)

zurück zur Frage

 

4.8 Welche Arten von Datenflussanomalien werden unterschieden?

Drei Arten werden unterschieden:

ur-Anomalie:
Ein undefinierter Wert (u) einer Variablen wird auf einem Programmpfad gelesen (r).

du-Anomalie: Die Variable erhält einen Wert (d) der allerdings ungültig (u) wird, ohne das er zwischenzeitlich verwendet wurde.

dd-Anomalie: Die Variable erhält auf einem Programmpfad ein zweites Mal einen Wert (d), ohne dass der erste Wert (d) verwendet wurde.

(s. a. Kap. 4.2.3 Durchführung der Datenflussanalyse)

zurück zur Frage

 


 

Antworten zu den Übungsaufgaben zu Kapitel 5

 

5.1 Was ist ein dynamischer Test?

Die Prüfung des Testobjektes durch Ausführung auf einem Rechner.

(s.a. Kap. 5 Dynamischer Test)

zurück zur Frage

 

5.2 Wozu dient ein Testrahmen?

Ein Testrahmen wird benötigt, um ein Testobjekt, das kein vollständiges Programm ist, ausführen zu können. Der Testrahmen umfasst aller das Testobjekt umgebenden Programme (u.a. Testtreiber und Platzhalter), die notwendig sind, um Testfälle auszuführen, auszuwerten und Testprotokolle aufzuzeichnen.

(s.a. Kap. 5 Dynamischer Test)

zurück zur Frage

 

5.3 Wodurch unterscheiden sich Black-Box- und White-Box-Testverfahren?

Bei den Black-box-Verfahren wird das Testobjekt als schwarzer Kasten angesehen. Über den Programmtext und den inneren Aufbau sind keine Informationen notwendig. Beobachtet wird das Verhalten des Testobjektes von außen (PoO - Point of Observation liegt außerhalb des Testobjekts). Es ist keine Steuerung des Ablaufs des Testobjekts außer durch die entsprechende Wahl der Eingabetestdaten möglich (auch der PoC - Point of Control liegt außerhalb des Testobjekts). Die Überlegungen zu den Testfällen beruhen auf der Spezifikation bzw. den Anforderungen an das Testobjekt.

Bei den White-box-Verfahren wird auch auf den Programmtext zurückgegriffen. Während der Ausführung der Testfälle wird der innere Ablauf im Testobjekt analysiert (Point of Observation liegt innerhalb des Testobjektes). Ein Eingriff in den Ablauf des Testobjektes ist in Ausnahmefällen möglich, z. B. wenn Negativtests durchzuführen sind und über die Komponentenschnittstelle die zu provozierende Fehlbedienung nicht ausgelöst werden kann (Point of Control kann innerhalb des Testobjekts liegen). Testfälle können auf Grund der Programmstruktur des Testobjekts gewonnen werden.

(s.a. Kap. 5 Dynamischer Test, Kap. 5.1 Black-box-Verfahren, Kap. 5.2 White-box-Verfahren)

zurück zur Frage

 

5.4 Erklären Sie das Verfahren der Äquivalenzklassenbildung.

Die Menge der möglichen konkreten Eingabewerte für ein Eingabedatum wird in Äquivalenzklassen unterteilt. Die zugrunde liegende Idee dabei ist, dass das Testobjekt sich bei allen Eingabedaten, die zu einer Äquivalenzklasse gehören, gleich verhält. Der Test eines Repräsentanten einer Äquivalenzklasse wird als ausreichend angesehen, da davon ausgegangen wird, dass das Testobjekt für alle anderen Eingabewerte derselben Äquivalenzklasse keine andere Reaktion zeigt. Neben den Äquivalenzklassen, welche gültige Eingaben umfassen, sind auch solche für ungültige Eingaben zu berücksichtigen. Das gleiche Vorgehen kann auch für Ausgabewerte angewendet werden.

(s.a. Kap. 5.1.1 Äquivalenzklassenbildung)

zurück zur Frage

 

5.5 Was ist ein Repräsentant?

Ein Repräsentant repräsentiert die Menge der Daten einer Äquivalenzklasse. Es wird davon ausgegangen, dass das Testobjekt sich bei allen Daten einer Äquivalenzklasse gleich verhält und der Test mit einem Repräsentanten ausreicht.

(s.a. Kap. 5.1.1 Äquivalenzklassenbildung)

zurück zur Frage

 

5.6 Wie ist das Testendekriterium Äquivalenzklassenüberdeckung definiert?

Äquivalenzklassen-Überdeckung = (Anzahl getestete ÄK / Gesamtzahl ÄK) * 100 %

(s.a. Kap. 5.1.1 Äquivalenzklassenbildung)

zurück zur Frage

 

5.7 Warum ist die Grenzwertanalyse eine gute Ergänzung zur Äquivalenzklassenbildung?

Fehlerzustände in Programmen treten häufig an den Grenzbereichen der Äquivalenzklassen auf, da hier fehlerträchtige Fallunterscheidungen in den Programmen vorzusehen sind. Ein Test mit Grenzwerten deckt daher oft Fehlerwirkungen auf.

(s.a. Kap. 5.1.2 Grenzwertanalyse)

zurück zur Frage

 

5.8 Nennen Sie weitere Black-Box-Verfahren.

Zustandsbezogener Test, Ursache-Wirkungs-Graph-Analyse, Syntaxtest, Zufallstest und Smoke-Test

(s.a. Kap. 5.1.3 Zustandsbezogener Test, Kap. 4.1.5 Allgemeine Bewertung der Black-box-Verfahren)

zurück zur Frage

 

5.9 Erläutern Sie den Begriff Anweisungsüberdeckung.

Die einzelnen Anweisungen (statements) des Testobjekts stehen im Mittelpunkt der Untersuchung. Es sind Testfälle zu identifizieren, die eine zuvor festgelegte Mindestquote oder auch alle Anweisungen des Testobjekts zur Ausführung bringen. Die Anweisungsüberdeckung gehört zu den White-box-Verfahren.

(s.a. Kap. 5.2.1 Anweisungsüberdeckung)

zurück zur Frage

 

5.10 Worin unterscheiden sich Anweisungs- und Zweigüberdeckung?

Leere Else-Zweige bleiben bei der Anweisungsüberdeckung unberücksichtigt, da der Else-Zweig ja keine Anweisung enthält. Die Zweigüberdeckung fordert die Durchführung von Tests, bei denen die Bedingungen im Testobjekt jeweils den Wert wahr und falsch annehmen.

(s.a. Kap. 5.2.1 Anweisungsüberdeckung, Kap. 5.2.2 Zweigüberdeckung)

zurück zur Frage

 

5.11 Wozu dient eine Instrumentierung?

Eine Instrumentierung dient zur Ermittlung der durch die durchgeführten Testfälle erreichten Überdeckung und damit zur Feststellung, ob ein definiertes Testendekriterium erfüllt ist (bei den White-box-Verfahren).

(s.a. Kap. 5.2.6 Instrumentierung)

zurück zur Frage


 

Antworten zu den Übungsaufgaben zu Kapitel 6

6.1 Welche grundsätzlichen Modelle einer Aufgabenteilung zwischen Entwicklung und Test lassen sich unterscheiden?

Modelle zur Aufgabenteilung zwischen Entwicklung und Test:

1. Testen liegt ausschließlich in der Verantwortung des einzelnen Entwicklers. Jeder Entwickler testet seine eigenen Programmteile.

2. Testen liegt in der Verantwortlichkeit des Entwicklungsteams. Die Entwickler testen ihre Programmteile gegenseitig.

3. Mindestens ein Mitglied des Entwicklerteams ist für Testarbeiten abgestellt. Es erledigt alle Testarbeiten des Teams.

4. Es gibt ein oder mehrere dedizierte Testteams innerhalb des Projekts (die nicht an der Entwicklung beteiligt sind).

5. Eine separate Organisation (Testabteilung, externer Testdienstleister, Testlabor) übernimmt das Testen.

(s.a. Kap. 6.1 Organisation von Testteams)

zurück zur Frage

 

6.2 Welche Rollen sind beim Testen auszufüllen und mit speziell qualifizierten Mitarbeitern zu besetzen?

Folgende Rollen sind zu besetzen:
a) Testmanager
b) Testdesigner
c) Testautomatisierer
d) Testadministrator
e) Tester

a) Testmanager
Experte(n) für Testplanung und Teststeuerung mit Know-how/Erfahrung in den Bereichen Softwaretest, Qualitätsmanagement, Projektmanagement, Personalführung.

b) Testdesigner
Experte(n) für Testmethoden und Testspezifikation mit Know-how/Erfahrung in den Bereichen Softwaretest, Software Engineering und (formalen) Spezifikationsmethoden.

c) Testautomatisierer
Experte(n) für Testautomatisierung (Testgrundlagenwissen, Programmiererfahrung und mit sehr guter Kenntnis der eingesetzten Testwerkzeuge).

d) Testadministrator
Experte(n) für Installation und Betrieb der Testumgebung (Systemadministrator-Know-how).

e) Tester
Experte(n) für Testdurchführung und Fehlerberichte (IT-Grundlagen, Testgrundlagenwissen, Bedienung der eingesetzten Testwerkzeuge, Verständnis des Testobjekts).

(s.a. Kap. 6.2 Mitarbeiterqualifikation)

zurück zur Frage

 

6.3 Welche Aufgaben hat der Testmanager?

Ein Testmanager hat die Aufgabe Testzyklen zu initiieren, zu überwachen und zu steuern. Dabei kann je nach Projektgröße für jede Teststufe ein eigener Testmanager zuständig sein.

(s.a. Kap. 6.3 Management der Testarbeiten)

zurück zur Frage

 

6.4 Welche Arten von Metriken zur Überwachung des Testfortschritts lassen sich unterscheiden?


a) Fehlerbasierte Metriken:
Anzahl gefundener Fehlerzustände bzw. erstellter Fehlermeldungen (pro Testobjekt) im jeweiligen Release, in Abhängigkeit der Fehlerklasse und des Fehlerstatus, ggf. bezogen auf Größe des Testobjekts (lines of code),
Testdauer o. Ä.

b) Testfallbasierte Metriken:
Anzahl spezifizierter oder geplanter Tests, Anzahl blockierter Tests (z. B. wegen nicht beseitigter Fehlerzustände), Anzahl gelaufener, nicht Fehler aufdeckender Testfälle, Anzahl gelaufener Fehler aufdeckender Testfälle.

c) Testobjektbasierte Metriken:
Codeabdeckung, Dialogabdeckung, abgedeckte Installationsvarianten, Plattformen usw.

(s.a. Kap. 6.3.3 Testzyklusüberwachung)

zurück zur Frage

 

6.5 Welche Informationen sollte ein Teststatusbericht enthalten?

Ein Teststatusbericht sollte folgende Informationen enthalten:
- Testobjekt(e)
- Teststufe
- Testzyklus-Datum von ... bis
- Testfortschritt (geplante/gelaufene/blockierte Tests)
- Fehlerstatus (neue/offene/korrigierte Fehler)
- Risiken (neue/veränderte/bekannte Risiken)
- Ausblick (Planung des nächsten Testzyklus)
- Gesamtbewertung (Beurteilung der Freigabereife des Testobjekts)

(s.a. Kap. 6.3.3 Testzyklusüberwachung)

zurück zur Frage

 

6.6 Welche Daten sollte eine Fehlermeldung enthalten?

Eine Fehlermeldung sollte Angaben zur Identifikation und zur Klassifikation des Fehlers beinhalten und die Problembeschreibung selbst.

Identifikation:
- Nummer: laufende, eindeutige Meldungsnummer
- Testobjekt: Bezeichnung des Testobjekts
- Version: Identifikation der genauen Version des Testobjekts
- Plattform: Identifikation der HW-/SW-Plattform bzw. der Testumgebung
- Entdecker: Identifikation des Testers (ggf. mit Teststufe)
- Entwickler: Name des für das Testobjekt verantwortlichen Entwicklers oder Teams
- Erfassung: Datum, ggf. Uhrzeit, an dem das Problem beobachtet wurde

Klassifikation:
- Status: Bearbeitungsfortschritt der Meldung; möglichst mit Kommentar und Datum des Eintrags
- Klasse: Klassifizierung der Schwere des Problems
- Priorität: Klassifizierung der Dringlichkeit einer Korrektur
- Anforderung: Verweis auf die (Kunden-)Anforderung, die wegen der Fehlerwirkung nicht erfüllt oder verletzt ist
- Fehlerquelle: Soweit feststellbar, die Projektphase, in der die Fehlhandlung begangen wurde (Analyse, Design, Programmierung); nützlich zur Planung prozessverbessernder Maßnahmen

Problembeschreibung:
- Testfall: Beschreibung des Testfalls (Name, Nummer) bzw. der Schritte, die zur Reproduktion der Fehlerwirkung führen
- Problem: Beschreibung der Fehlerwirkung; erwartete vs. tatsächliche Ergebnisse bzw. Verhalten
- Kommentar: Stellungnahmen der Betroffenen zum Meldungsinhalt
- Korrektur: Korrekturmaßnahmen des zuständigen Entwicklers
- Verweis: Querverweise auf andere zugehörige Meldungen

(s.a. Kap. 6.4.2 Fehlermeldung)

zurück zur Frage

 

6.7 Was ist der Unterschied zwischen Fehlerpriorität und Fehlerklasse?

Fehlerpriorität:
Festlegung der Dringlichkeit von Korrekturmaßnahmen unter Berücksichtigung der Fehlerklasse, des erforderlichen Korrekturaufwands und der Auswirkungen auf den gesamten Entwicklungs- und Testprozess.

Fehlerklasse:
Einteilung der aufgedeckten Fehlerwirkungen nach Schwere der Fehlerwirkung aus Sicht des Anwenders (z.B. Grad der Behinderung des Produkteinsatzes).

(s.a. Kap. 6.4.3 Fehlerklassifikation)

zurück zur Frage

 

6.8 Wozu wird ein Fehlerstatusmodell benötigt?

Das Fehlerstatusmodell wird benötigt, um eine kontinuierliche Verfolgung des Fehleranalyse- und Korrekturprozesses über alle Stadien hinweg sicher zu stellen. Diese Verfolgung geschieht anhand des Fehlerstatus. Dabei durchläuft jede Fehlermeldung eine Reihe festgelegter Stati, die alle Schritte von der erstmaligen Erfassung bis zur erfolgreichen Fehlerkorrektur beinhalten.

(s.a. Kap. 6.4.4 Fehlerstatus)

zurück zur Frage

 

6.9 Welche Aufgabe hat ein Änderungskontrollausschuss?

Im Fehlermanagement wird eine Instanz benötigt, die Änderungsanforderungen genehmigt oder ablehnt. Diese Instanz heißt Änderungskontrollausschuss (change control board) und wird üblicherweise von Vertretern folgender Interessengruppen gebildet:
- Produktmanagement
- Projektmanagement
- Testmanagement
- Kundenvertreter

(s.a. Kap. 6.4.4 Fehlerstatus)

zurück zur Frage

 

6.10 Welche Anforderungen aus Sicht des Tests stellen sich an das Konfigurationsmanagement?

a) Versionenverwaltung:
Katalogisieren, Speichern und Wiederabrufen von unterschiedlichen Versionen eines Konfigurationsobjekts (z. B. Version 1.0 und 1.1 einer Datei). Hierzu gehört auch das Mitführen von Kommentaren, aus denen der jeweilige Änderungsgrund hervorgeht.

b) Konfigurationsverwaltung:
Bestimmung und Verwaltung aller Dateien (Konfigurationsobjekte) in der jeweils passenden Version, die zusammen ein Teilsystem bilden (Konfiguration). Voraussetzung hierfür ist eine Versionenverwaltung.

c) Statusverfolgung von Fehlern und Änderungen:
Aufzeichnung von Problemberichten und Änderungsanforderungen und die Möglichkeit, deren Umsetzung an den Konfigurationsobjekten nachzuvollziehen.

(s.a. Kap. 6.5 Anforderungen an das Konfigurationsmanagement)

zurück zur Frage

 

6.11 Welche grundsätzlichen Arten von Normen und Standards lassen sich unterscheiden?

a) Firmenstandards
Firmeninterne Richtlinien und Verfahrensanweisungen.

b) Best Practises
Nicht standardisierte, aber fachlich bewährte Vorgehensweisen und Verfahren, die den Stand der Technik in einem Anwendungsgebiet darstellen.

c) Qualitätsmanagementstandards
Branchenübergreifende Standards, die Mindestanforderungen an Prozesse spezifizieren, ohne konkrete Anforderungen bezüglich der Umsetzung zu formulieren.

d) Branchenstandards
Branchenspezifische Standards, die für eine bestimmte Produktkategorie oder ein Einsatzgebiet u. a.. festlegen, in welchem Mindestumfang Tests durchzuführen oder nachzuweisen sind.

e) Softwareteststandards
Prozessstandards, die produktunabhängig festlegen, wie Softwaretests fachgerecht durchzuführen sind.

(s.a. Kap. 6.6 Relevante Normen und Standards)

zurück zur Frage

 


 

Antworten zu den Übungsaufgaben zu Kapitel 7

7.1 Welche grundlegenden Funktionen bieten Testplanungswerkzeuge?

Testplanungswerkzeuge bieten Mechanismen zur bequemen Erfassung, Katalogisierung und Verwaltung der Testfälle und zu deren Priorisierung. Sie bieten evtl. auch Unterstützung für das anforderungsbasierte Testen, d.h. Erfassen von bzw. Verknüpung an Systemanforderungen und Verknüpfung mit den Tests, die die entsprechende Anforderung prüfen.

Weitere Aufgaben können durch die Werkzeuge übernommen werden:
- die Prüfung, ob jede Anforderung durch einen Testfall geprüft wird
- Überwachung der Stati der einzelnen Testfälle
- Ressourcen- und Zeitplanung und deren Anpassung im Projektverlauf

(s.a. Kap. 7.1.1 Werkzeuge für Testplanung und Testmanagement)

zurück zur Frage

 

7.2 Welche Typen von Testdatengeneratoren werden unterschieden?

a) Datenbankbasierte Testdatengeneratoren
verarbeiten Datenbankschemata und sind in der Lage, daraus Testdatenbestände zu generieren.

b) Codebasierte Testdatengeneratoren
generieren Testdaten, indem sie den Code des Testobjekts analysieren.

c) Schnittstellenbasierte Testdatengeneratoren
analysieren die Testobjektschnittstelle, erkennen die Definitionsbereiche der Schnittstellenparameter und leiten z. B. mittels Äquivalenzklassen- und Grenzwertanalyse daraus Testdaten ab.

d) Spezifikationsbasierte Testdatengeneratoren
leiten Testdaten und zugehörige Sollwerte aus einer Spezifikation ab.

(s.a. Kap. 7.1.2 Werkzeuge zur Testspezifikation)

zurück zur Frage

 

7.3 Welcher Typ von Testdatengenerator kann auch Sollwerte generieren? Warum können die anderen Typen das nicht?

Nur spezifikationsbasierte Testdatengeneratoren können Sollwerte aus einer Spezifikation ableiten. Voraussetzung ist natürlich, dass die Spezifikation in einer formalen Notation vorliegt. Einige Generatoren nutzen formale Modelle des Testobjekts, wie sie mit CASE-Tools erstellt werden können.

(s.a. Kap. 7.1.2 Werkzeuge zur Testspezifikation)

zurück zur Frage

 

7.4 Erläutern Sie die prinzipielle Funktionsweise eines Capture-Replay-Tools.

Ein Capture-and-Replay-Tool zeichnet während einer Testsitzung alle manuell durchgeführten Bedienschritte (Tastatureingaben, Mausklicks) auf, die der Tester am Testobjekt ausführt. Dabei werden nicht nur die x/y-Koordinaten der Mausklicks aufgezeichnet, sondern auch die an der grafischen Bedienoberfläche (GUI) ausgelösten Operationen (z. B. pressButton(»Start«)) sowie die zur Wiedererkennung des angeklickten Objekts benötigten Objekteigenschaften (Objektname, Objekttyp, Farbe, Beschriftung, x/y-Position u. a.). Diese Bedienschritte speichert das Werkzeug als Testskript.

(s.a. Kap. 7.1.3 Werkzeuge zur Testdurchführung)

zurück zur Frage

 

7.5 Aus welchen Schritten besteht der Prozess zur Auswahl eines Testwerkzeugs?

Prozess zur Auswahl eines Testwerkzeugs:
1. Anforderungsspezifikation für den Werkzeugeinsatz
2. Marktstudie (Aufstellen einer Übersichtsliste der Kandidaten)
3. Vorführung von Werkzeugdemos
4. Evaluierung der Werkzeuge der engeren Wahl
5. Review der Ergebnisse und Werkzeugauswahl

(s.a. Kap. 7.2.2 Werkzeugauswahl)

zurück zur Frage

 

7.6 Welche Schritte sind bei der Werkzeugeinführung zu beachten?

Schritte bei der Werkzeugeinführung:
1. Pilotprojekt
2. Review der Pilotprojekterfahrungen
3. Prozessanpassung
4. Anwenderschulung
5. Breiteneinführung
6. Begleitendes Coaching

(s.a. Kap. 7.2.3 Werkzeugeinführung)

zurück zur Frage