software-qualität testen, analysieren und verifizieren von software michael zeller 14. juli 2011
TRANSCRIPT
![Page 1: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/1.jpg)
Software-Qualität
Testen, Analysieren und Verifizieren von Software
Michael Zeller
14. Juli 2011
![Page 2: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/2.jpg)
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
![Page 3: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/3.jpg)
Motivation
1. SW-Kosten steigen gegenüber HW-Kosten
2. Kosten während der Wartungsphase größter Anteil der SW-Entwicklungskosten
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
![Page 4: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/4.jpg)
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
![Page 5: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/5.jpg)
Motivation
Prinzip der integrierten Qualitätssicherung
Voraussetzung: Der SW-Entwicklungsprozess ist in Phasen unterteilt.
• Während jeder Phase werden konstruktive Methoden eingesetztz.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.
![Page 6: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/6.jpg)
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
![Page 7: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/7.jpg)
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
![Page 8: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/8.jpg)
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.“
![Page 9: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/9.jpg)
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
Begriffe und Definitionen
![Page 10: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/10.jpg)
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
![Page 11: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/11.jpg)
Prozesse u. OrganisationProzesse
• 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
![Page 12: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/12.jpg)
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
![Page 13: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/13.jpg)
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
![Page 14: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/14.jpg)
Dynamische Tests
Funktionsorientiert, dynamisch
• Bewertet die Testvollständigkeit und Korrektheit der Testergebnisse anhand der Spezifikation
• Wichtigste Verfahren:
• Äquivalenzklassenbildung
• Zustandstest
• Ursache-Wirkungs-Analyse
![Page 15: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/15.jpg)
Dynamische Tests
Strukturorientiert, dynamisch
• Testfälle werden auf Basis des Softwarequellcodes bestimmt
• Unterschieden werden:
• Kontrollflussorientierter Test
• Datenflussorientierter Test
![Page 16: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/16.jpg)
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
![Page 17: Software-Qualität Testen, Analysieren und Verifizieren von Software Michael Zeller 14. Juli 2011](https://reader035.vdocuments.mx/reader035/viewer/2022062512/55204d6549795902118bad9b/html5/thumbnails/17.jpg)
• 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
Werkzeuge