Nebeninhalt

Materialien

Testmethoden für sequentielle und nebenläufige Software-Systeme
Dr. Eike Hagen Riedemann

Hinweis:

Dr. Eike Hagen Riedemann ist inzwischen aus dem Dienst der TU Dortmund ausgeschieden und der Lehrstuhl 10 wurde aufgelöst. Daher stellen wir nun diese Seite bereit.

Einleitung

Mein Buch ist im Buchhandel vergriffen. Man kann es aber in der Bereichsbibliothek Informatik (3406/Ried) und in der Uni-Bibliothek/Lehrbuchsammlung (L Sr 366, fünfmal) ausleihen.
Ausserdem ist es jetzt vollständig (als PDF-Dateien) vorhanden zum Herunterladen (s. unten).

Kapitel

# Thema
Vorwort & Inhalt Download
I Einführung Download
01 Beispiele für den Programmtest
02 Grundlegende Probemstellungen und Lösungsansätze
03 Qualitätsmanagement-, Prüf- und Testmethoden im Überblick
II Spezifikationsorientiertes Testen Download
04 Datenbereichsbezogenes und funktionsbezogenes Testen
05 Testen von Reihenfolgebedingungen und algebraischen Spezifikationen
06 Bewertung des spezifikationsorientierten Testens
III Implementationsorientiertes Testen Download
07 Kontrollflußbezogenes Testen
08 Datenflußbezogenes Testen
09 Ausdrucks-, anweisungs- und datenbezogenes Testen
10 Bewertung der implementationsorientierten Testkriterien
11 Testdatenerzeugung und Testwirksamkeitsmessung
IV Weitere Aspekte des Testens Download
12 Statische Anayse und symbolische Ausführung
13 Testen "im Großen"
14 Testen nebenläufiger Systeme Download
15 Fehlerlokalisierung und -korrektur Download
16 Management des Testens und Prüfens
17 Zusammenfassung und Ausblick
Anhang Download
Literaturverzeichnis Download
Sachverzeichnis Download

Visueller Überblick über die Testmethoden

TestmethodenbaumDownload: Testmethodenbaum als PDF

Fehler im gedruckten Buch

(schwerwiegende) sind die folgenden, wobei die berichtigten Passagen kursiv geschrieben sind (in den obigen PDF-Dateien sollten die Fehler berichtigt sein!):

  • S. 159, Def. 6.3.1: Bei Punkt 1 muss es lauten: "A hat einen Sequenzfehler g.d.w. A einen Ausgabefehler, einen Transferfehler ...".
  • S. 200, Def. 7.2.7, zweite Zeile: Statt "Segmenten" muss der Begriff Entscheidungs-Entscheidungs-Wegen verwendet werden.
  • S. 203, Def. 7.2.8 und 7.2.9: Hier fehlt jeweils, dass schleifenfreie Wege identisch sein müssen, um als k-äquivalent zu gelten.
  • S. 222, Beispiel 8.3.2, erste und zweite Zeile: "... wäre nach Def. 8.3.2 die Folge (A,x,F,y,C) eine 3-DR-Interaktion ...".
  • S. 318/319: In Beispiel 12.2.2 sind die Werte von P(A;5->) und P(A;->3) falsch angegeben worden. Sie müssen lauten:
    P(A;5->) = k(g(ng)* + n)k (also ohne "n" am Anfang!)
    P(A;->3) = P(A;5,4) = nk (also nicht P(A;5,4,3) = nkn) und somit:
    P_r(A;->3) = P_r(A;5,4) = k
  • S. 319 Mitte: Berechnung von live(l) und avail(l) für alle Knoten l:
    Dort in der 6. und 8. Zeile muss es /N/-1 statt /N/ heissen.
  • S. 322 Mitte: "Die folgende algebraische Methode nach Forman zur Bestimmung ...".
  • S. 459 unten unter Punkt 2., zweite Zeile: "Dazu ist die Fehleraufdeckungsrate ... zu ermitteln ..." sowie in der zweitletzten Zeile "... und die Fehleraufdeckungsrate schon sehr klein ..." (Statt "Fehlerfindungsrate" ist der Begriff "Fehleraufdeckungsrate" zu verwenden und sollte auch in den Index - wie der Begriff von S. 68!)
  • !!!! Weitere entdeckte schwerwiegende Fehler bitte an mich per E-Mail schicken!!!

Ergänzungen zum Buch

Ein vernünftiges Beispiel für eine Hemmungstäuschung (S. 39, Punkt 3) ist das Überlesen des folgenden Fehlers in einem C-Programm: Wenn bei einem Vergleich das einzelne Zeichen '=' statt des doppelten Zeichens '==' verwendet wird, fällt das einem ehemaligen Pascal-Programmierer oft nicht auf, da in Pascal '=' das richtige Zeichen für einen Vergleich ist (und nicht als Zuweisung interpretiert wird wie in C).

Als Zeitschriftenartikel ist einer (nicht beide!) der folgenden zwei Artikel aus den Softwaretechnik-Trends (STT) interessant, dessen Inhalt mit den entsprechenden Beiträgen im Buch verglichen werden kann (was ist gleich/ähnlich, was ist neu).
Die Zeitschrift STT gibt es in der Bereichsbibliothek Informatik, die Artikel von P. Liggesmeyer und M. Winter aber auch über das Internet (s. unten):

Hinweis: Eine schöne Zusammenstellung von Fragen und Antworten hat Michael Gregorius erstellt.
Es fehlen allerdings Fragen zum spezifikationsorientiertes Testen, weil das nicht zu seiner Prüfung gehörte; dazu jetzt Fragen von mir weiter unten.

Zu finden ist die Zusammenstellung auf seiner Homepage unter der Rubrik "Lernzusammenfassungen" und dort im Teil "Hauptstudium". (Ich übernehme keine Gewähr für die Richtigkeit aller Antworten, aber auf den ersten Blick scheint es o.k. zu sein.)

Auswahl von Fragen zum spezifikationsorientierten Testen

  1. Welche Äquivalenzklassen (Ä-Klassen) sind zu bilden, wenn für drei Eingabeparameter A, B, C eines Programms z.B. folgende Bedingungen für den Normalfall gelten sollen: (1): 18 <= A <= 67; (2): 1< B < 10; (3): C > 8.
    (Antwort, falls Integer-Werte: gültige: (1): A={18,19,20,....,67}, ungültige: (1a): {MIN_INT,....,16,17}, (1b): {68,69,....,MAX_INT}.
    Entsprechendes für B, bei C gibt es nur eine gültige und eine ungültige Klasse.)
  2. Geben Sie konkrete Testdaten an, welche die Äquivalenzklassen nach 1. abdecken. Wie viele Tests brauchen Sie dabei für die gültigen Ä-Klassen und wie viele Tests für die ungültigen Ä-Klassen?
    (Antwort z.B. t1: A=20, B=7, C= 11 deckt alle gültigen Ä-Klassen ab, t2: A=10, B=7,C=11 deckt die ungültige Klasse (1a) ab und z.B. t3: A=70, B=7,C=11 deckt (1b) ab. Entsprechend braucht man noch 2 Tests für die ungültigen Ä-Klassen von B und 1 Test für die ungültige Klasse {MIN_INT, ...., 7, 8} von C. Insgesamt braucht man also 1 Test für die gültigen und u Tests für die ungültigen Ä-Klassen (hier u=5 und stets u = Anzahl der ungültigen Klassen!).
  3. Was ist die Minimalzahl von Tests für gültige Äquivalenzklassen (best case)?
    (Antwort: siehe Formel (6.5) auf S. 145.)
  4. Ist ein Test mit Äquivalenzklassen immer besser als ein Test mit Zufallswerten bzw. unter welchen Bedingungen ist der Test mit Äquivalenzklassen besser (am Beispiel von z.B. 10 Ä-Klassen und einem Zufallstest mit ebenfalls 10 Testdaten).
    (Antwort: Siehe Diskussion/Gedankenexperiment in Abschnitt 6.3.1.2.)
  5. Was ist wg. der Antwort zu 4. also eine Verbesserung der Äquivalenzklassenmethode bzgl. der Auswahl der konkreten Testdaten aus den Ä-Klassen?
    (Antwort: siehe Abschn. 6.3.1.3, drittletzter Satz.)
  6. Was ist eine Verbesserung der Äquivalenzklassenmethode bzgl. der Kombination von Testwerten aus den Ä-Klassen und bzgl. der Einbeziehung der Abhängigkeit der Ausgaben von den Eingaben?
    (Antwort: siehe Abschn. 6.3.1.3, zweitletzter Satz.)
  7. Was für Werte haben die Ursachen eines UWG? Zahlwerte oder logische Werte?
    (Antwort: s. Schritt 2, Seite 86)
  8. Welche verschiedenen Beziehungen/Verknüpfungen kann es zwischen den Ursachen und Wirkungen geben?
    (Antwort: Abb. 4.1 und Abb. 4.2 auf S. 87)
  9. Welche Testfälle werden laut UWG-Methode für einen UWG gebraucht, der nur aus einer ODER-Verknüpfung mit 4 Ursachen x1 bis x4 besteht? Warum nur diese 5 Testfälle? Welche Fehler werden damit erkannt/beobachtet?
    (Antwort: Schritt 5 auf S. 92/93, insbesondere Tab. 4.8 und Absatz danach.)
  10. Wie viele Testfälle braucht man bei der UWG-Methode für eine ODER- und eine UND-Verknüpfung mit je n Ursachen und wie viele mögliche Testfälle (Eingangskombinationen) gibt es dazu im Vergleich? Was ist der Unterschied in der Größenordnung?
    (Antwort: Seite 93 letzter Satz und Größenordnung von "2 hoch n" und "n+1" anders ausdrücken!)
  11. Welcher Implementierungsfehler kann bei einer ODER-Verknüpfung mit der UWG-Methode nicht erkannt werden, obwohl doch fehlerhafte Implementierungen, die den logischen Wert der Ursachen verändern (D- und Dquer-Fehler), erkannt werden?
    (Antwort: Überlegen Sie sich eine logische Verknüpfung, die bei höchstens einer 1 bei den Ursachen dasselbe Verhalten wie ODER hat, aber bei mehr als einer 1 (was ja nicht getestet wird laut Tab. 4.8) ein anderes Verhalten als ODER hat. Kandidaten dafür sind z.B. UND und EXOR.)
  12. Welche Kompositionsarten werden beim funktionsbezogenen Testen betrachtet?
    (Antwort: Kompositionsarten 1 bis 3 von Seite 100 genauer nennen.)
  13. Reihenfolgebedingungen für Methodenaufrufe können bei objektorientierten Systemen eine Rolle spielen. Wie haben wir diese Reihenfolgebedingungen spezifiziert bzw. durch welche Ausdrücke kann man sie angeben?
    (Antwort: Seite 114 oben, erster Satz.)
  14. Wie sieht die Syntax und Semantik der Pfadausdrücke aus?
    (Antwort: Definition 5.1.1, Seite 114)
  15. Als was lassen sich Pfadausdrücke interpretieren (womit sind sie vergleichbar) und was kann man daher auch angeben, um dieselben zulässigen Reihenfolgen/Funktionssequenzen zu beschreiben?
    (Antwort: Seite 115, letzter Absatz)
  16. Geben Sie den Automaten zum Pfadausdruck A = p;q an.
    (Antwort: vgl. Abb. 5.2, Seite 116)
  17. Um leicht festzustellen, was unerlaubte (Funktions-)Sequenzen/Reihenfolgen sind, sollte der Automat noch vervollständigt werden. Was ist zu tun? (Antwort: Siehe Seite 117 unten, Automat Av(P). Beispiel analog zu Abb. 5.4 <--> Abb. 5.3 erweitern.)
  18. Welcher Test ist eigentlich auszuführen, um alle (Sequenz-)Fehler des Automaten festzustellen? (Antwort: Automatenäquivalenztest)
  19. Was sind die Probleme beim Automatenäquivalenztest?
    (Antwort: Problem 1: Annahme 2 bei Satz 6.3.1, S. 159, wobei "des korrekten Automaten" durch "des nicht vorliegenden Automaten" (das ist meistens der gedachte Automat, der die Implementierung repräsentiert, wenn man vom spezifizierenden Automaten ausgeht) zu ersetzen ist. Problem 2: Exponentieller Aufwand gemäß Formel (6.17) oder mindestens kubisch (für z=e) gemäß Formel (6.18), Seite 149.)
  20. Welcher Test ist also eher praktikabel und warum (bzgl. Aufwand)?
    (Antwort: Formel (6.19) und Text davor auf S. 149)
  21. Was ist der Nachteil des Tests "alle Transitionen" bzgl. der Fehleraufdeckung?
    (Antwort: Alle drei Sequenzfehlerarten nennen (Def. 6.3.1, S. 159), Satz 6.3.2 nennen und Gegenbeispiel 6.3.3 nur zitieren - für unerkannten Transferfehler.)

(F)AQ: (frequently) asked questions ... und auch Beispiele

Die Texte findet man auf der Seite FAQ.