Benutzer-Werkzeuge

Webseiten-Werkzeuge


se:softwaretest

**Dies ist eine alte Version des Dokuments!**

Sofware-Test

Beispiele für Softwarefehler

  • F-16 Kampfjet fliegt ab Äquator kopfüber weiter
  • Patriot-Abwehrsystem verfehl feindliche Rakete
  • Airbus A320 rast in Warschau über die Landebahn hinaus
  • Eröffnung des Denver International Airport muss verschoben werden
  • Mars Orbiter geht verloren
  • Jahr 2000-Problem
  • Sprengung der Ariane 5

Begriffe

  • Test ist ein organisierter Prozess
    • der mindestens aus Planung, Vorbereitung und Durchführung besteht,
    • zum systematischen Nachweis, dass ein System sich exakt so verhält, wie erwartet und
    • der sicherstellt, dass Abweichungen zwischen tatsächlichem und erforderlichem Systemverhalten so früh wie möglich identifiziert werden.
  • Ein Tester ist eine am Testprozess beteiligte Person. Er kann verschiedene Rollen annehmen: Testmanager, Testarchitekt, Testdesigner, Testsoftware-Entwickler, Testausführender
  • Testbasis: Ja nach Art des Tests etwa Kundenanforderungen, System- und Architekturspezifikationen, Quelltexte, UML-Diagramme etc. Aus der Testbasis werden Testfälle mit einzelnen Testschritten und erwarteten Ergebnissen abgeleitet.
  • Ein System realisiert im Zusammenspiel von Hardware und Software das Systemverhalten, wie es den Kundenanforderungen entspricht.
    * Kunden sind Käufer eines Systems.
  • Anwender/Benutzer benutzen das System.

Grenzen von Tests

  • Komplette Tests sämtlicher Verzweigungen eines Programms sind nicht möglich (→ Kombinatorik)
  • Fehlerfreiheit kann nicht nachgewiesen werden.
  • Test ist ein Optimierungsproblem zwischen Zeit, Geld und Qualität → Maßstab: Kundenzufriedenheit

Test im Verlauf des Entwicklungsprozesses

  • Produktentwicklung nach V-Modell
    • konstruktive Phasen
      • Kundenanforderungen
      • Systementwurf
      • Systemarchitektur
      • Modulspezifikation
      • Implementierung
    • analytische Phasen / Testphasen / -stufen
      • Modultest
      • Integrationstest
      • Systemtest
      • Abnahmetest
  • Modul- / Komponententest
    • Testbasis: Modulspezifikation
    • strenge Trennung der Module beim Test → alle Module werden für sich allein getestet
  • Schnittstellen müssen simuliert werden → Testtreiber
  • üblicherweise vom Entwickler selbst durchgeführt: Compiler, Debugger, Emulator/Simulator, statische Analyse, Automatisierungswerkzeuge
  • Integrationstest
    • Testbasis: Systemarchitektur
    • Durchführung durch spezialisierte Testgruppe <> Entwickler
    • Strategien
      • inkrementelle Integration
        • Top-Down (anwender-/betriebssystemnahe Komponenten zuerst)
        • Bottom-Up (zuletzt aufgerufene Komponenten zuerst)
        • Ad-hoc (Integration sofort nach Fertigstellung von Komponenten)
        • Backbone (Erstellen eines Programmskeletts, in das die Komponenten nach Fertigstellung integriert werden)
      • Big Bang (alle Komponenten werden gleichzeitig integriert)
  • Systemtest
    • Testbasis: Systementwurf / Anforderungen / Normen etc.
    • Ziel: Prüfen, ob das System den Anforderungen entspricht
    • Testumgebung sollte Produktivumgebung entsprechen (sonst Simulation)
    • Durchführung wieder durch spezialisiertes Testteam
    • Evtl. Test bei Pilotkunden: Betatest, Feldtest, Pilotbetrieb, controlled introduction
    • Qualitätsmerkmale nach ISO 9126
      • Funktionalität (Functionality)
        • Angemessenheit, Richtigkeit, Interoperabilität, Ordnungsmäßigkeit, Sicherheit
      • Zuverlässigkeit (Reliability)
        • Reife, Fehlertoleranz, Wiederherstellbarkeit
      • Benutzbarkeit (Usability)
        • Verständlichkeit, Erlernbarkeit, Bedienbarkeit
      • Effizienz (Efficiency)
        • Zeitverhalten, Verbrauchsverhalten
        • Lasttest, Stresstest, Volumen-/Massentest, Performanztest
      • Wartungsfreundlichkeit (Maintainability)
        • Analysierbarkeit und Modifizierbarkeit, Stabilität, Prüfbarkeit
      • Übertragbarkeit (Portability)
        • Anpassbarkeit, Installierbarkeit, Konformität, Austauschbarkeit
  • Abnahmetest
    • Ziel: Zusicherung an Kunden, dass Anforderungen erfüllt werden
    • Testbasis: zugesicherte Anforderungen des Kunden, Verträge, Produktdokumentation
    • Wird für jeden Kunden individuell vor Ort durchgeführt
  • Regressionstest
    • Regression: Funktionierende Funktionalität wird durch Änderung/Erweiterung beeinträchtigt
    • Änderungen/Erweiterungen: Fehlerbehebung in Entwicklung/Wartung, Hinzufügen von Feature(s) (in einem, mehreren Modulen)
    • Strategien
      • Auswahl repräsentativer Testfälle
      • Automatisierung
      • Regelmäßige Ausführung von Teiltests
      • Kompletter Test vor Auslieferung neuer Versionen
      • Austausch der Testfälle für die nächste Produktversion

ToDo

  • Quellen für Softwarefehler-Beispiele suchen
  • Ariane 5-Beispiel genauer anschauen

ToRead

  • Hopf
    • Kosten von Softwarefehlern: Kapitel 6, 6.3
    • Qualitätsmerkmale: Kapitel 4.3.1

Übungen

  • Übung 1.1: Überlegen Sie für das Beispiel der Ariane 5, welche der oben beschriebenen Fehler Sie als Testmanager hätten verhindern können und durch welche Maßnahmen. Geben Sie dabei auch an, welche dieser Maßnahmen ein besonders gutes Kosten-Nutzen-Verhältnis aufweisen. Beantworten Sie die Frage spontan mit Hilfe Ihres bisherigen Vorwissens. Kehren Sie im Laufe der nächsten Kapitel immer wieder zu dieser Übung zurück und überdenken Sie Ihre Antwort anhand dessen, was Sie gelernt haben.
  • Übung 1.2: Überlegen Sie, an welchen Stellen sich in der oben angegebenen Definition von Test die hervorgehobenen Elemente der älteren Definitionen wieder finden.
  • Übung 1.3: Suchen Sie nach öffentlich bekannten Beispielen, bei denen das Optimierungsproblem zwischen Zeit, Kosten und Qualität offensichtlich nicht erfolgreich gelöst wurde.
  • Übung 2.1: Erstellen Sie für das System aus dem Beispiel in Kapitel 2.1 (PC mit Betriebsystem und zwei Anwendungen) eine grobe Planung des Testablaufs: Welches sind die einzelnen Module (gegenseitige Abgrenzung), in welcher Reihenfolge werden die Module beim Integrationstest zusammengefügt, wie muss ein Systemtest und ein Abnahmetest aussehen?

Lernziele

  • Sie können prominente Beispiele benennen, die die Folgen von unzureichenden Tests belegen.
  • Anhand der Beispiele erkennen Sie, dass neben reinen Programmierfehlern vor allem Entwurfsfehler für eine Vielzahl von tragischen Softwareausfällen eine wesentliche Rolle spielen.
  • Sie erkennen, welchen Einfluss der Zeitpunkt der Entdeckung eines Fehlers auf seine Folgekosten hat.
  • Sie kennen die wichtigsten Begriffe zum Thema Test.
  • Sie können die Definition des Begriffs "Test" angeben und erläutern.
  • Sie verstehen anhand eines einfachen Beispiels, weshalb selbst bei kleinen Systemen ein vollständiger Test nicht möglich ist.
  • Sie können die grundlegenden Zielstellungen eines erfolgreichen Tests beschreiben.
  • Sie können beschreiben, wie eine Produktentwicklung abläuft, die einem Prozess nach dem V-Modell folgt.
  • Sie kennen die Aufgaben der unterschiedlichen Testphasen und können erklären, wodurch sich die einzelnen Phasen unterscheiden.
  • Sie können die unterschiedlichen Vorgehensweisen beim Integrationstest und ihre jeweiligen Vor- und Nachteile beschreiben.
  • Sie kennen die Qualitätsmerkmale nach der ISO-Norm 9126 und können ihre Bedeutung für den Systemtest darlegen.
  • Sie können die Notwendigkeit und Wichtigkeit eines Regressionstests begründen.
se/softwaretest.1207419943.txt.gz · Zuletzt geändert: 2014-04-05 11:42 (Externe Bearbeitung)