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

Testprozess

  • Testdokumentation
    • notwendig zur internen/externen Kommunikation, teils gesetzliche Aufbewahrungsfristen
    • Test Plan (Testplanung)
    • Test Design/Case/Procedure Specification (Testspezifikation)
    • Test Incident Report (Fehlerbericht)
    • Test Log, Test Summary Report (Ergebnisdokumentation)
    • Test Item Transmittal Report (Übergabeprotokoll)
  • Testplanung
    • Start zu Beginn des Projekts (Projekt ist genehmigt, Projektleiter benannt, Test-Projektleiter benannt, Mitarbeiter benannt)
    • Nach Umfang des Projekts Testmanager für jede Phase oder Gesamtprojekt
    • Master-Testplan
      • Testaktivitäten über alle Phasen hinweg
      • zeitliche und logistische Abhängigkeiten
      • Ziele und Schwerpunkte der einzelnen Phasen (Abgrenzung)
      • Ziel: Optimierung des zeitlichen Ablaufs und des personellen/materiellen Aufwands
      • Beispiel: teures Messgerät
      • Pläne der Testphasen werden aus Master-Testplan abgeleitet
      • Rahmenbedingungen klären: Termine, Personal etc. → Zeitplan
    • Testziele / -schwerpunkte
      • Ableitung aus ISO 9126: z.B. Vollständigkeit, Verfügbarkeit, Fehlertoleranz, Ergonomie, Wartbarkeit
    • Prioritäten
      • Notwendig aufgrund von Zeitdruck
      • Werden bei Projektstart definiert und müssen bei Teststart feststehen
      • Dynamik durch externe/interne Faktoren
      • Basis für Ressourcenzuteilung
      • Ziele
        • Bestmögliches Ergebnis auch bei Zeitmangel
        • Hauptfunktionen sind früh stabil
        • Schwewigende Fehler werden früh erkannt
        • Intensiver Test kritischer Bereiche
        • Wichtige Funktionen müssen nicht abgekündigt werden
      • Ermittlung von Prioritäten
        • Festgelegte Testschwerpunkte
        • Risikoanalyse
        • Kundenanforderungen
        • Komplexität der Funktionen
        • Zentrale Funktionen zuerst
        • Erfahrungswerte aus vorherigen Projekten
        • Subjektive Einschätzung
    • Sonstige Planung
      • Start/Ende der Testphasen
      • Testumgebung, ggf. Bestellung benötigten Materials (Hard-/Software, Messgeräte etc.)
      • Umgebung der Testautomatisierung, ggf. Bestellung der nötigen Werkzeuge
      • Planung der Testautomatisierung
      • Identifikation und Analyse von Projektrisiken
    • Frühe Testaktivitäten
      • Teilnahme an Insepktionen/Reviews
      • Embedded Systems: Testwerkzeuge erstellen
      • Teilnahme an Architektur-/Designsitzungen
  • Analyse und Testspezifikation
    • Festlegen der Testbasis → Testfälle ermitteln → Testspezifikation nach IEEE 829 (inkl. Angaben zur Automatisierung)
    • Sollwerte für Testfälle ermitteln
    • Vermeidung von Lücken/Redundanzen → Test Outline mit Review
  • Vorbereitung, Realisierung
    • Aufbau und Test (!) der Testumgebung
    • Vorbereitung der Testautomatisierung
  • Testausführung, Testauswertung, Ergebnisdokumentation
    • Teststart
      • Hilfsmittel und Material sind vorhanden
      • Infrastruktur läuft
      • Testspezifikation ist fertig
      • Software zur Automatisierung ist fertig
      • Akzeptanzkriterien erfüllt (Inspektion/bestimmte Testfälle/Abnahmetest durchgeführt)
      • Übergabe: Meeting oder Protokoll
        • Test kann beginnen
        • Testobjekt wird zurückgewiesen
        • Testobjekt wird akzeptiert, Test kann dennoch nicht beginnen
        • Testobjekt wird akzeptiert, Test kann evtl. nach Risikoanalyse beginnen
        • Test ist auf einzelne Funktionen des Testobjekts beschränkt
        • Evtl. Überstimmung durch Managemententscheidung
    • Interner Abnahmetest (Sanity Test)
      • Vollständigkeit
      • Installation in Testumgebung
      • Start-/ablauffähig?
      • Hauptfunktionen, wichtige Nebenfunktionen, Testfunktionen
    • Praktische Vorgehensweise
      • Vorgehen zunächst wie beim internen Abnahmetest
      • dann systematischer Test der einzelnen Module auf Basis der Testspezifikation
      • weitere Tests je nach den ersten Ergebnissen, niedrige Priorität
      • Intution
        • Fehler sind Herdentiere
        • Vertrauen Sie Ihrer Intuition
        • Alle zusätzlich durchgeführten Tests sind zu protokollieren
    • Protokollierung, Auswertung und Ergebnisdokumentation
      • automatische Protokolle (Logs)
      • Messergebnisse aufzeichnen
      • Protokollierung der Testsoftware
      • Ergebnisse der Testfälle (bestanden/nicht bestanden)
      • Testfortschritt aus Testfallergebnissen ermitteln
      • Fehlerbericht
        • Ist die Testspezifikation korrekt?
        • Läuft die Testinfrastruktur korrekt?
        • Arbeitet die Testsoftware korrekt?
        • Wurden die Testschritte korrekt durchgeführt?
      • Ziele der Protokollierung
        • Erfassung von Daten zur Fehleranalyse
        • Nachvollziehbarkeit aller Rahmenbedingungen
        • Wiederholbarkeit der Tests
        • Nachweis der durchgeführten Tests für Kunden etc.
        • Einhaltung von gesetzlichen Vorgaben
    • Änderungsprozess, Änderungsanforderung, Fehlerbericht
      • Gründe für Änderungen
        • Fehlerbeseitigung
        • Verbesserungswünsche
        • Funktionserweiterung
        • Funktionsergänzung

ToDo

  • Quellen für Softwarefehler-Beispiele suchen
  • Ariane 5-Beispiel genauer anschauen
  • Generischer Testprozess S. 33
  • Änderungsprozess S. 49

ToRead

  • Hopf
    • Kosten von Softwarefehlern: Kapitel 6, 6.3
    • Qualitätsmerkmale: Kapitel 4.3.1
  • Einführung der Testdokumentation: IEEE829 Anhang B

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.
  • Sie können den typischen Ablauf eines Testprojekts beschreiben, das dem generischen Testprozess folgt.
  • Sie können ausführlich beschreiben, welche Aufgaben in den einzelnen Phasen des Testprozesses durchzuführen sind.
  • Sie kennen die unterschiedlichen Testdokumente, die im Standard IEEE Std 829-1998 beschrieben sind.
  • Sie können einen typischen Änderungsprozess beschreiben.

Ü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?
se/softwaretest.1207488836.txt.gz · Zuletzt geändert: 2014-04-05 11:42 (Externe Bearbeitung)