Testen von Softwaresystemen

Dr. Christoph Steindl Fr 10:15 - 11:45 T212 Beginn: 10.3.2000

Ergebnisse der Klausur vom 30.6.2000


Nachklausur am 13.10.2000 um 16 h im BA9908


Zuerst ein Witz

Man erzählt eine Mathematiker, einem Physiker und einem Techniker: "Alle ungeraden Zahlen sind Primzahlen."
Der Mathematiker sagt: "Das ist Blödsinn. 9 ist ungerade und trotzdem keine Primzahl."
Der Physiker sagt: "Schauen wir einmal: Drei ist eine Primzahl, 5 ist eine, 7 ist eine - das dürfte also wahr sein."
Der Techniker sagt: "Schauen wir einmal: Drei ist eine Primzahl, 5 ist eine, 7 ist eine, 9 ist eine, 11 ist eine..."

Beim Testen ist es genauso: Der Tester bekommt eine falsche Aussage ("Das Programm funktioniert.") und muss aus den unendlich vielen Möglichkeiten diejenige Eingabe auswählen, die die Aussage widerlegt.
Der Tester muss dabei den Fehler des Physikers (nicht die richtigen Werte auszuprobieren) vermeiden und den des Technikers (den richtigen Wert auszuprobieren, aber den Widerspruch nicht zu erkennen). Der Tester möchte am liebsten - wie der Mathematiker - ohne unnötigen Testaufwand das richtige Beispiel finden, das die Aussage widerlegt.

Wie man das macht, lernen Sie in dieser Lehrveranstaltung.

Organisatorisches

Diese zweistündige KV (kombinierte Lehrveranstaltung) ist ein Teil der Projektorienterten Wahlfachgruppe Komponentenbasierte Softwareentwicklung des Instituts für Praktische Informatik. Sie besteht aus 3 Teilen:
  • Im ersten Teil (5 Einheiten) werden allgemeine Grundlagen und Testmethoden vorgestellt.
  • Im zweiten Teil (3 Einheiten) werden in Studentenvorträgen und Gastvorträgen aus der Wirtschaft spezielle Probleme erarbeitet.
  • Im dritten Teil (2 Einheiten) werden kompliziertere Methoden und diffizilere Probleme besprochen.

Hausübungen

Im Laufe des Semesters werden einige Hausübungen ausgeteilt, die auf freiwilliger Basis durchgeführt werden und der Vertiefung und Anwendung des Gelernten dienen. Man bekommt gemeinsam mit der Angabe auch schon die Beispiellösung ausgeteilt, bestimmt also selbst, wieviel Aufwand man investiert.

Unterlagen

Für jede Einheit, bei der Stoff vorgetragen wird, gibt es Vorlesungsunterlagen. Die Unterlagen für die erste Einheit gibt es im Sekretariat zu kaufen, Restexemplare werden auch in der ersten Einheit selbst verkauft. Später werden die Unterlagen direkt in der Lehrveranstaltung verkauft.

Inhaltsübersicht

Kapitel 1: Grundlagen Testen im Software-Life-Cycle
White-Box-Testen und Black-Box-Testen
Unit-Test, Integration-Test, System-Test
Kapitel 2: Einfache Testverfahren Schreibtischtest, Code-Inspektion, Walkthrough, Peer-Rating
Vorgehensweise nach Myers (The Art of Software Testing)
Vorgehensweise nach Marick (The Craft of Software Testing)
Kapitel 3: Kontrollflusstesten Kontrollflussgraphen usw.
Kapitel 4: Datenflusstesten Datenflussanomalien, Zustandsgraph dafür usw.
Kapitel 5: Weitere Testverfahren Transaktionsflusstesten
Syntaxtesten
Logik-basiertes Testen
Zustandstesten - Testen mit endlichen Automaten
Kapitel 6: Regressionstesten
Kapitel 7: Testen von OO-Software Probleme mit Vererbung, Polymorphismus
und dynamischer Bindung
Regressionstesten
Spezifikation und Verifizierung von Methodensequenzen
Kapitel 8: Program Slicing
Kapitel 9: Alternativen zum Testen Personal Software Process
Anhang: Software Process Models Wasserfallmodell
Evolutionäres Modell
Transformationsmodell
Spirallenmodell
Capability Maturity Model for Software

Studentenvorträge

Zwei Einheiten sollen mit kurzen Vorträge von Studenten gehalten werden. Man kann sich dadurch die Note um maximal 2 Grade verbessern. Die Vorträge werden auf Wunsch auf Video aufgenommen und im kleinen Kreis besprochen.
Dauer der Vorträge: 15 Minuten Vortrag + 5 Minuten Diskussion. Pro Einheit sind drei Vorträge (= 3 * 20 Minuten) + abschließende Gruppendiskussion (inkl. Eingliederung in den bisherigen Stoff) geplant.
Ziel der Vorträge: Das Thema soll sehr objektiv dargestellt werden, die Prinzipien sollen klar herausgearbeitet werden. Eine kritische und vergleichende Analyse soll eine Diskussion durch Denkanstöße vorbereiten. Das jeweilige Thema muss nicht vollständig dargestellt werden, vielmehr soll man im Vortrag auf interessante und überraschende Punkte hinweisen. Als Handout sollen 1-5 Mind Maps vorbereitet und ausgeteilt werden.
Studenten, die keinen Vortrag halten wollen, können das Thema schriftlich (max. 10 Seiten) behandeln.
Finden sich keine Studenten für die Vorträge, wird in den Einheiten weiterer Stoff behandelt.
Mögliche Themen:
  • Einteilung von Fehlern ([Bei90], pp. 27-58)
  • Testmetriken ([Bei90], pp. 213-242)
  • Testen von Schleifen ([Bei95], pp. 70-83)
  • Testen von GUIs ([Bou97], pp. 121-124)
  • Testen von Web-Anwendungen
  • Capture/Playback-Tools ([Bou97], pp. 307-351)
  • Tools für Stress-Test und Lasttest ([Bou97], pp. 353-390)
  • Testen von SQL-Datenbanken ([Bou97], pp. 415-460)
  • Testen von Sicherheit ([Bou97], pp. 561-602)
  • Buchpräsentation [PeR97]
  • Buchpräsentation [Kit95]
  • Buchpräsentation [Gar99]
  • Toolpräsentation
    • Tool von Sun: JavaScope usw.
    • Tool von Reliable Software Technologies: DeepCover
    • Tool von Compuware NuMega: TrueCoverage
    • Tool von ParaSoft: Jtest

Feedback-Auswertung

Fragebogen in erster Stunde

Literatur

[Bei90] Boris Beizer: Software Testing Techniques (2nd edition). Thomson Computer Press, 1990.
[Buz97] Tony Buzan, Barry Buzan: Das Mind- Map- Buch. Die beste Methode zur Steigerung ihres geistigen Potentials. Moderne Verlagsgesellschaft, 1997.
[Bei95] Boris Beizer: Black-Box Testing. John Wiley & Sons, 1995.
[Bou97] Kelley C. Bourne: Testing Client/Server Systems. McGraw-Hill, 1997.
[Gar99] Stewart Gardiner: Testing Safety-Related Software, A Practical Handbook. Springer, 1999.
[Kit95] Edward. Kit: SoftwareTesting in the Real World. Addison-Wesley, 1995.
[Ku+98] David C. Kung, Pei Hsia, Jerry Gao: Testing Object-Oriented Software. IEEE Computer Society, 1998.
[Mar95] Brian Marick: The Craft of Software Testing. Prentice Hall, 1995.
[McG96] John. D. McGregor: Testing Object-Oriented Components. Clemson University, Tutorial 9, ECOOP 96.
[Mye97] Glenford J. Myers: The Art of Software Testing, John Wiley, 1979.
[PaR89] Norman Parrington, Marc Roper: Understanding Software Testing. Ellis Horwood, 1989.
[PeR97] William E. Perry, Randall W. Rice: Surviving the Challanges of Software Testing. Dorset House Publishing, 1997.

Test Tools

Konferenzen

  • International Symposium on Software Testing and Analysis (ISSTA)
    Theory, academic, leading edge practitioners. Sponsored by ACM and ACM's SIGSOFT.
    http://www.ics.uci.edu/IRUS/issta/
  • International Conference on Software Engineering (ICSE)
    Spring, world-wide. Technical. Primary source after ISSTA for leading edge results.
    http://www.ul.ie/~icse2000/
  • Quality Week (QW)
    Annual, San Francisco Bay Area. Biggest Conference on Testing and QA.
    Typically 700+. Many vendors. Good balance between technical/theoretical and practitioners.
    Very broad base. Workshops. Sponsored by Software Research Institute
    http://www.soft.com/QualWeek/QW2K/index.html
  • Quality Week Europe (QWE)
    is held in Brussels, Belgium in November.
    http://www.soft.com/QualWeek/QWE00/index.html
  • Software Testing, Analysis, and Review (STAR)
    http://www.sqe.com/stareast/
    http://www.sqe.com/starwest/
  • QAI International Software Testing Conference
    More of a tutorial/workshop than a conference. Newbie orientation.
    http://www.qaiusa.com/conferences/november/

Zeitschriften

  • IEEE TSE (Transactions on Software Engineering)
    Monthly. The most prestigious journal for testing stuff.
  • ACM TOSEM (Transactions on Software Engineering Methodology)
    Quarterly. Relatively new journal (1992). Somewhat more theoretical than IEEE TSE.
  • ACM SIGSOFT Software Engineering Notes (from the Special Interest Group on Software Engineering)
    Monthly. Goes back to May 1976.
  • ISSTA conference proceedings
    Annual.
  • IEEE Software
    Six times a year. Rarely the latest stuff.
    More like surveys and overviews once a subfield has become established.
    Refereed, generally high standards. Mostly overviews, but occasionally new stuff.
  • ACM Computing Surveys
    Quarterly. Not specific to testing and QA, but contains the most prestigious survey articles in the field, typically only when a subfield is well established. The authors are usually authorities. Articles are long and comprehensive. When an ACM Survey on a topic appears, it usually means that the field has matured to the point where it is possible to write meaningful books.
  • Communications of the ACM
    Monthly. Survey articles and overviews. Sometimes (rarely) original stuff. More academic and fundational/theory oriented than IEEE Software, but generally the same level.