Software-Qualität
Testen, Analysieren und Verifizieren von Software
Michael Zeller
14. Juli 2011
Gliederung
1.
Einführung und Motivation
2.
Wichtige Begriffe und Definitionen
3.
Prozesse und Organisation
4.
Test- und Prüftechniken
5.
Dynamische Testverfahren
6.
Statische Analysen
7.
Werkzeuge
Motivation
1.
SW-Kosten steigen gegenüber HW-Kosten
2.
Kosten während der Wartungsphase größter Anteil der SWEntwicklungskosten
Ursache:
Fehler der SW-Entwicklung, werden erst bei der Produktnutzung
entdeckt
Fehlerkorrektur besonders zeitaufwändig wenn:
•
•
•
SW schlecht strukturiert
unzureichend dokumentiert
schwer verständlich
= Ausdruck unzureichender SW-Qualität
Motivation
Hauptprobleme:
•
Vermeintliche Fehlerkorrekturen können zu Folgefehlen führen
Wechselwirkungen mit anderen Teilen der SW, besonders wenn SW
schlecht strukturiert
•
Ursache des Fehlers geht auf Frühphase der SW-Entwicklung zurück
(z.B. Anforderungsdefinition)  umfangreiche Änderungen nötig

Ziele:
•
Methoden, die die Erstellung zuverlässiger, verständlicher und leichter
änderbarer SW ermöglichen
•
Neben konstruktiven Verfahren wird die Qualität mit analytischen
Mitteln geprüft
Motivation
Prinzip der integrierten Qualitätssicherung
Voraussetzung: Der SW-Entwicklungsprozess ist in Phasen unterteilt.
•
Während jeder Phase werden konstruktive Methoden eingesetzt
z.B. Structured Design (SD), Unified Modeling Language (UML)
•
Am Ende jeder Phase wird mit analytischen Mittel die Qualität des
entstandenen Zwischenprodukts beurteilt.

•
frühzeitige Erkennung von Fehlern, Korrektur mit geringem Aufwand
möglich.
Motivation
Integrierte Qualitätssicherung
•
Q-Sicherung setzt mit dem erstem
Zwischenprodukt ein
•
Verzahnung von Konstruktions- und
Prüfschritten
•
Möglichst viele Fehler erkennen, die
auf den Konstruktionsschritt folgen,
in denen die Fehler entstanden sind
•
Test nur des fertigen Programms
nicht ausreichend
Motivation
Qualitätszielbestimmung
•
Verschiedene SW-Eigenschaften ergeben die SW-Qualität
•
Sind unterschiedlich wichtig (für Hersteller u. Benutzer)
•
Stehen teilweise in Wechselwirkung

•
Die „beste“ SW-Qualität gibt es nicht, es gibt nur die „richtige“
•
Berücksichtigung von Zeit- u. Kostenaspekten
Begriffe und Definitionen
Qualität
„Die Beschaffenheit einer Einheit bezüglich ihrer Eignung, festgelegte und
abgeleitete Erfordernisse (Qualitätsanforderungen) zu erfüllen.“ (DIN 55350-11
95)
Qualitätsanforderung
„Bezeichnet die Gesamtheit der Einzelanforderungen an eine Einheit.“
Begriffe und Definitionen
Qualitätsmerkmale
„Ermöglichen die konkrete Festlegung und Beurteilung von Qualität. Sie stellen
Eigenschaften einer Funktionseinheit dar, anhand derer ihre Qualität
beschrieben und beurteilt wird.“
•
•
•
•
•
•
•
•
•
Sicherheit
Zuverlässigkeit
Verfügbarkeit
Robustheit
Speicher- u. Laufzeiteffizienz
Änderbarkeit
Portierbarkeit
Prüfbarkeit
Benutzbarkeit
Prozesse u. Organisation
Organisation der Prüfung
•
Software muss während der Entwicklung u. abschließend geprüft werden
•
Die Prüfung sollte vor Arbeitsbeginn eingeplant werden, um Effizienz und
sichere Prüfung zu gewährleisten
•
Zeitpunkte, Methoden und Verantwortliche sollten festgelegt werden
(Programmierer, Projektleiter, speziell eingerichtete Organisationseinheit)
•
Die Entwicklung muss auf Randbedingungen abgestimmt werden (wird in
Phasen getestet, muss die Software in entkoppelten Modulen
programmiert werden)
Prozesse u. Organisation
Prozesse
•
Qualität, Sicherheit und Dokumentation müssen vordefinierte
Anforderungen und Standards erfüllen
•
Entwicklungsprozesse sind nötig, um Einhaltung dieser Standards sicher
zu stellen (sind organisatorischer Rahmen der Entwicklungsphase)
•
Prüfung findet in Phasen statt, um Komplexität großer Systeme
beherrschbar zu machen
•
Unterscheidung:
•
Modultest: Überprüft einzelne Komponenten
•
Integrationstest: Überprüft Interagieren über Schnittstellen
•
Systemtest: Überprüft Funktion, Leistung und Qualität des fertig integrierten
Systems
Test- und Prüftechniken
1. Dynamische Testverfahren
•
Setzt Ausführbarkeit des Programms voraus
•
Ausführung mit konkreten Eingabewerten, denen bestimmte, erwartete
Ausgabewerte zugeordnet sind  Stichprobenverfahren
•
Ziel der Testtechniken: Erzeugung von Testfällen, die repräsentativ,
fehlersensitiv, redundanzarm, ökonomisch sind
•
Fehler können demonstriert werden, ihre Abwesenheit aber nicht bewiesen
•
Universell anwendbar, daher von großer praktischer Bedeutung
Test- und Prüftechniken
2. Statische Analysen
•
Code (statisch) wird noch vor Ausführung des Programms geprüft
•
Erkennt inhaltliche Fehler
•
Entweder durch Entwickler (manuell) oder durch Programm (automatisch)
•
Klassisches Programm: Lint („linten“) erkennt nur funktionale Fehler
•
Neuere Programme erkennen auch qualitative Fehler (z.B. Flawfinder)
•
Besonders wichtig bei älteren Programmiersprachen
•
Oft größtenteils durch Compiler durchgeführt
Dynamische Tests
Funktionsorientiert, dynamisch
•
Bewertet die
Testvollständigkeit und
Korrektheit der
Testergebnisse anhand der
Spezifikation
•
Wichtigste Verfahren:
•
•
•
Äquivalenzklassenbildung
Zustandstest
Ursache-Wirkungs-Analyse
Dynamische Tests
Strukturorientiert, dynamisch
•
Testfälle werden auf Basis des
Softwarequellcodes bestimmt
•
Unterschieden werden:
•
Kontrollflussorientierter Test
•
Datenflussorientierter Test
Dynamische Tests
Strukturorientierter Test
•
Vollständige Abdeckung der Struktur, aber keine garantierte
Abdeckung der Spezifikation.
•
Das Fehlen von Programmcode wird nur zufällig erkannt.
Funktionsorientierter Test
•
Vollständige Abdeckung der Spezifikation und aussagefähige
Testfälle
•
Aber keine garantierte Vollständigkeit der Abdeckung der
Programmstruktur
Werkzeuge
•
Sind zahlreich für die gängigen dynamischen u. statischen
Prüfmethoden verfügbar
•
Ziele für die Nutzung:
•
Bereitstellung von Informationen über die Prüfung
•
Durchführung von Messungen
•
Erhöhung der Effizienz  Übernahme einfacher, sich
wiederholender oder schwieriger (mathematischer) Tätigkeiten
•
Erzeugen von Prüfprotokollen  dienen als Nachweis gegenüber
Auftraggeber oder Prüfbehören

Software-Qualität