Qualitätsmanagement in der Software-Entwicklung Prof. Dr. Thomas Kudraß HTWK Leipzig Seminar PC-Ware AG Leipzig, 26.01.2002
Motivation Kleine Bugs Große GAUs Ein paar falsche Zahlen oder Zeilen und schon passiert‘s: Explosion Ariane 5 (1996) Verlorengegangene Venus-Sonde Mariner1 (1962) Koffer-Debakel am Flughafen Denver Bank-Bugs Neues Computer System bei US Fed (Fehlbuchungen 4 Mrd $) Kundendaten frei im Internet bei Credit Suisse (Image-Schaden) Wall-Street-Crash (1987) Spendable Geldautomaten bei Postbank-Service Card (2002)
Agenda EINHEIT 1 EINHEIT 2 EINHEIT 3 EINHEIT 4 Einführung Qualitätsmanagement EINHEIT 2 Qualitätssicherung im Software-Entwicklungsprozess (V-Modell) Beispiel EINHEIT 3 Qualitätssicherung in Analyse & Design A: Qualität von Business-Spezifikationen B: Manuelle Prüfmethoden (Reviews) mit Beispiel EINHEIT 4 Qualitätssicherung in der Programmierung: Test-Verfahren Arten von Tests
EINHEIT 1: Einführung Qualitätsmanagement Qualitätsbegriff Qualitätsmerkmale von Softwareprodukten Qualitätsmodelle Maßnahmen von Qualitätssicherung und Qualitätsmanagement Prinzipien der Software-Qualitätssicherung Organisatorische Einbettung der QS
Was ist Qualität? Fünf verschiedene Ansätze Transzendenter Ansatz Produktbezogener Ansatz Benutzerbezogener Ansatz Prozessbezogener Ansatz Kosten/Nutzen-bezogener Ansatz
Produktbezogener Ansatz Qualität = messbare, genau spezifizierbare Größe, beschreibt das Produkt Keine Berücksichtigung von subjektiven Wahrnehmungen und Beobachtungen Berücksichtigt nur das Endprodukt – nicht den Kunden! Ermöglicht Ranking von Produkten gleicher Kategorie
Benutzerbezogener Ansatz Qualität durch den Benutzer festgelegt (fitness for use) Unterschiedliche Wünsche und Bedürfnisse verschiedener Benutzer Problem für Hersteller Vage Vorstellungen der Anwender Bedürfnisse der Benutzer rechtzeitig erkennen
Prozessbezogener Ansatz Qualität des Produkts hängt ab vom richtigen Prozess der Erstellung Spezifikation und Kontrolle des Erstellungs-prozesses Ständige Anpassung des Prozess an neue Kundenbedürfnisse
Definition Qualität Qualität [DIN 55350, Teil 11] Qualität ist die Gesamtheit von Eigenschaften und Merkmalen eines Produkts oder einer Tätigkeit, die sich auf deren Eignung zur Erfüllung gegebener Erfordernisse bezieht“ Software-Qualität [DIN ISO 9126] ist die Gesamtheit der Merkmale und Merkmals-werte eines SW-Produkts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen
Aufbau von FCM-Qualitätsmodellen Software-Qualität Q-Merkmal 1 (factor 1) Q-Merkmal 2 (factor 2) Q-Merkmal n (factor n) ... Q-Teilmerkmal 1 (criterion 1) Q-Teilmerkmal 2 (criterion 2) Q-Teilmerkmal 3 (criterion 3) Q-Teilmerkmal n (criterion n) Q-Indikatoren (metrics)
Qualitätsmerkmale für Software-Produkte Funktionalität Zuverlässigkeit Benutzbarkeit Effizienz Änderbarkeit Übertragbarkeit Quelle: DIN-Norm ISO 9126
Funktionalität Richtigkeit Angemessenheit Interoperabilität Liefert richtige oder vereinbarte Ergebnisse Angemessenheit Eignung der Funktionen für spezifizierte Aufgaben Interoperabilität Zusammenwirken mit vorgegebenen Systemen Ordnungsmäßigkeit Erfüllung von Normen, Vereinbarungen, gesetzl. Vorschriften Sicherheit Unberechtigten Zugriff auf Programme und Daten verhindern
Zuverlässigkeit Reife Fehlertoleranz Wiederherstellbarkeit Geringe Versagenshäufigkeit durch Fehlerzustände Fehlertoleranz Bewahrt Leistungsniveau bei Fehlern oder Nichteinhaltung Schnittstelle Wiederherstellbarkeit Wiederherstellung des Leistungsniveaus bei einem Versagen Wiedergewinnung der betroffenen Daten Erforderliche Zeit und Aufwand berücksichtigen
Benutzbarkeit Verständlichkeit Erlernbarkeit Bedienbarkeit Aufwand für den Benutzer, Konzept und Anwendung zu verstehen Erlernbarkeit Aufwand für den Benutzer, die Anwendung zu erlernen (z.B. Bedienung, Ein-/Ausgabe) Bedienbarkeit
Effizienz Zeitverhalten Verbrauchsverhalten Antwort- und Verarbeitungszeiten sowie Durchsatz bei der Funktionsausführung Verbrauchsverhalten Anzahl und Dauer der benötigten Betriebsmittel für die Funktionen
Änderbarkeit Analysierbarkeit Modifizierbarkeit Stabilität Prüfbarkeit Aufwand zur Fehlerdiagnose oder zur Bestimmung änderungsbedürftiger Teile zu bestimmen Modifizierbarkeit Aufwand für Verbesserung, Fehlerbeseitigung, Anpassung an Umgebungsänderungen Stabilität Wahrscheinlichkeit für unerwartete Wirkungen bei Änderungen Prüfbarkeit Aufwand zur Prüfung der geänderten Software
Übertragbarkeit (Portierbarkeit) Anpassbarkeit Anpassung der Software an verschiedene, festgelegte Umgebungen (organisatorisch, Hardware, Software) Installierbarkeit Aufwand zum Installieren der SW in einer festgelegten Umgebung Konformität Erfüllung von Normen oder Vereinbarungen zur Übertrag-barkeit durch die Software Austauschbarkeit Verwendung der Software anstelle einer anderen in deren Umgebung
FURPS Qualitätsmodell Entwickelt von HP 1985 Merkmale (stark kundenorientiert definiert) Functionality Usability Reliability Performance Supportability
GQM-Ansatz: Goal-Question-Metric Vorgehensmodell Definiere die Auswertungsziele für alle zu erfüllenden Qualitätsmerkmale Leite alle Fragestellungen ab, die zu einer Quantifizierung dieser Ziele führen können Leite alle Maße ab, die Informationen zur Beantwortung der Fragestellungen beitragen Entwerfe einen Mechanismus zur möglichst genauen Erfassung der Messwerte Validiere die Messwerte bezüglich aller primitiven Maße Interpretiere die Messergebnisse zur Gesamtbewertung der Qualitätsziele
Beispiel für ein Software-Bewertungsmodell Auswertungsziele (goals) Z1 Z2 Z3 Z4 Abgeleitete Frage- stellungen(questions) F1 F2 F3 F4 F5 F6 M1 M2 M3 M4 M5 Primitive Maße (metrics)
G: Muster zur Formulierung von Zielen im GQM-Ansatz Zweck der Studie Prozess, Produkt, Modell, Maß Blickwinkel der Studie Entwickler, Manager, SW-QS, Auftraggeber, Firmenleitung Umgebung der Studie Aspekte des Prozesses, Personal, Anwendung, Methoden, Werkzeuge u.a. Faktoren
Q1: Auswertungsfragen zur Charakterisierung von Prozessen Qualität der Durchführung Anwendungsbereich Beurteile Objekte des Prozesses sowie Kenntnis des Personals darüber Aufwand der Durchführung Ergebnis der Durchführung Rückkopplung von der Durchführung
Q2: Auswertungsfragen zur Charakterisierung von Produkten Definition des Produkts Physische Eigenschaften, z.B. Umfang, Komplexität, Programmiersprache Kosten, z.B. Zeitaufwand, Entwicklungsphasen, Aktivitäten Änderungen, z.B. Fehlerursachen, Fehler, Fehlverhalten Umfeld, z.B. zu erwartendes Benutzerprofil Bewertung des Produkts Relativ zu einem bestimmten Qualitätsmerkmal, z.B. Zuverlässigkeit, Korrektheit, Zufriedenheit der Benutzer
Erweitertes GQM-Bewertungsmodell Ziel (goal) Wir untersuchen Produkte und ... Weitere Qualitätsbäume Qualitätsbäume für jedes Zwischenprodukt Qualitätsbaum-Analyse Qualitätsbaum-Quellcode ... Testbarkeit Wartbarkeit ... ... Strukturiertheit ... Innere Struktur Fragen (questions) ... Größe des Programms? Kennzahlen (metrics) Lines of Codes
Qualitätsbaum “Wartbarkeit“ SWS ist leicht wartbar WB SWS höchstmöglich standardisiert WB1 SWS leicht verständlich WB2 SWS gut änderbar WB3 SWS gut testbar TB Ist gut strukturiert WB31 Ist eindeutig interpretierbar WB21 Jede Kompo-nente in sich gut strukturiert WB311 Hält vereinbarte Standards voll-ständig ein WB11 Techniken zur Er-stellung des SWS angemessen WB32 SWS leicht verständlich WB22 Beziehungen zwischen den Komponenten einfach WB312 Ist möglichst ein-heitlich realisiert WB12 Umfang des SWS entspricht optimal der Aufgabe WB33 Ist gut dokumentiert WB23
Qualitätszielbestimmung Qualitätsstufen Wertebereich auf einer Skala zur Klassifizierung von Software entspr. Qualitätsanforderungen [ISO9126] Sehr gut Gut annehmbar Messwert Normal Schlecht nicht annehmbar Maßskala Qualitätsstufen
Qualitätsanforderungen Ergeben sich aus den Qualitätszielen Welche Qualitätsmerkmale relevant? Welche Qualitätsstufe muss erreicht werden? Auswirkungen auf den SW-Entwicklungsprozess Produktorientierte Anforderungen Einfluss auf: Methoden, Werkzeuge, Richtlinien, Checklisten im Entwicklungsprozess Prozessorientierte Anforderungen Änderung des SW-Entwicklungsprozesses
Qualitätsmanagement vs. Qualitätssicherung Alle managementbezogenen Tätigkeiten, die Qualitätspolitik, Ziele und Verantwortungen im Rahmen eines QM-Systems festlegen Mittel: Q-Planung, Q-Lenkung, Q-Sicherung, Q-Prüfung Qualitätssicherung Alle technikorientierten Aktivitäten innerhalb des QM-Systems zur Erfüllung der Qualitätsanforderungen Analytische Maßnahmen in der SW-Entwicklung
Produktorientiertes Qualitätsmanagement Inhalt Überprüfung von SW-Produkten und Zwischen-ergebnissen auf festgelegte Qualitätsmerkmale Sind Gegenstand der Zertifizierung Maßnahmen (Beispiele) Templates für Pflichtenheft (Richtlinie) Einsatz von Strukturierter Analyse (SA) (Methode) Programmierrichtlinien Kein GOTO Überprüfung aller Eingabegrößen (defensives Programmieren) Wiederverwendung von SW-Bausteinen bei OO Programmierung
Prozessorientiertes Qualitätsmanagement Inhalt Bezieht sich auf den Erstellungsprozess der Software Permanente Anpassung an dynamische Qualitätsanforderungen Maßnahmen (Beispiele) Standardisierter Entwicklungsprozess Welche Teilprodukte (deliverables) wann und von wem? Einsatz von Konfigurationsmanagement Festlegung eines Vorgehensmodells
Konstruktives Qualitätsmanagement Maßnahmen, die a priori bestimmte Qualitäts-eigenschaften von Produkt / Prozess gewährleisten Konstruktives Qualitätsmanagement Organisatorische Maßnahmen Technische Maßnahmen Methoden Sprachen Werkzeuge Richtlinien Standards Checklisten
Analytisches Qualitätsmanagement Diagnostische Maßnahmen zur Prüfung und Bewertung der Qualität der Prüfobjekte Messen vorhandenes Qualitätsniveau, Ausmaß und Ort der Defekte Klassifikation Bezug der Prüfung (Produkt- oder Prozessprüfung) Automatisierungsgrad (manuell und/oder Einsatz von Software-Werkzeugen) Nachvollziehbarkeit der Prüfung (Selbstprüfung oder Nachweisführung) Einsatzbereich der Prüfung: Definitions-,Entwurfs-,Imple
Maßnahmen zum analytischen Qualitätsmanagement Analysierende Verfahren Testende Verfahren Statische Analyse Dynamischer Test Animation Symbolischer Test Programmverifikation Simulation Review Schreibtischtest Inspektion Walkthrough Durchsprache = manuell Audit
Aktivitäten des Qualitätsmanagement Qualitätsplanung Qualitätslenkung und –sicherung Qualitätsprüfung
Qualitätsplanung Festlegung der Qualitätsanforderungen an Produkt und Prozess Auswahl und Festlegung eines Qualitätsmodells Festlegung von Soll-Qualitätsstufen für Qualitätsindikatoren z.B. Zuverlässigkeit – Anzahl Fehler pro Monat – 0.01 Festlegung von Prioritäten bei gegenläufigen Anforderungen Festlegung von allgemeinen und produkt-spezifischen Q-Lenkungs- und –Sicherungs-Maßnahmen z.B. Messpunkte im Entwicklungsprozess zur Vorhersage der Ziele, Auswahl von Methoden und Werkzeugen zur Erfassung der Messwerte
Qualitätslenkung Umsetzung der Qualitätsplanung Steuert, überwacht und korrigiert den Entwicklungsprozess, um Q-Anforderungen zu erfüllen Überwacht Qualitätsprüfung nach Plan Auswertung der Ergebnisse durch Vergleich Soll-Ist Eng verknüpft mit SW-Management
Qualitätsprüfung Führt die im Rahmen der Q-Planung festgelegten Maßnahmen durch zur Bestimmung Ist Überwacht Umsetzung der konstruktiven Maßnahmen Aktivitäten Erfassung von Messdaten über Werkzeuge, Formblätter / Interviews Test (zur Erfassung dynamischer Produktmerkmale) Inspektionen, Reviews, Walkthroughs Mängel- und Fehleranalysen auf Basis von Problemberichten
Qualitätssicherungsplan Was muss gesichert werden? Identifizierung der relevanten Q-Merkmale und ihre Quantifizierung in Form von Metriken Wann muss gesichert werden? Festlegung der Zeitpunkte für Datenerfassung während Entwicklungsprozess Wie muss gesichert werden? Auswahl der Techniken und Methoden Von wem muss gesichert werden? Festlegung von Verantwortlichkeiten (Rollen)
Prinzipien der Software-Qualitätssicherung Prinzip der produkt- und prozessabhängigen Qualitätszielbestimmung Prinzip der quantitativen Qualitätssicherung Prinzip der maximalen konstruktiven Qualitätssicherung Prinzip der frühzeitigen Fehlerentdeckung und –behebung Prinzip der entwicklungsbegleitenden, integrierten Qualitätssicherung Prinzip der unabhängigen Qualitätssicherung
Produkt- und prozessabhängige Qualitätszielbestimmung Qualitätsziele explizit und transparent vor Entwicklungsbeginn festlegen Vorteile für Auftraggeber (Kostentransparenz, Festlegung der Anforderungen) Vorteile für Lieferant Maßnahmen für Entwicklungsprozess und Q-Prüfung Wahl geeigneter Methoden und Werkzeuge Planungs- und Kalkulationssicherheit für beide
Quantitative Qualitätssicherung Messen ist zwar schwer, aber nützlich für ... besseres Verständnis unterschiedlicher Q-Merkmale (deskriptive Modelle) bessere Planung und Sicherung von Q-Merkmalen (präskriptive Modelle) Verbesserung von Entwicklungsansätze Methoden und Werkzeuge zur Planung und Durch-führung der Datenerfassung sowie zur statistischen Auswertung / Präsentation von Messdaten Metriken sind ziel- und kontextabhängig!
Maximale konstruktive Qualitätssicherung “Vorbeugen ist besser als heilen!“ Viel konstruktiv – wenig analytisch! Beispiele: Vollständige Zweigüberdeckung, wenn Verzweigungslogik nicht zu komplex Explizite Vereinbarung aller Variablen mit Typfestlegung Vorteile: Direkte Verbesserung der Produktqualität Reduziert und ermöglicht analytische Maßnahmen Vermeidung von Fehlern
Frühzeitige Fehlerentdeckung und -behebung Jede Abweichung von den Anforderungen des Auftraggebers Jede Inkonsistenz in den Anforderungen Jede Verzögerung bei Entdeckung exponentieller Kostenanstieg Ziel: QM-Maßnahmen (konstruktiv / analytisch) verstärkt am Beginn der SW-Entwicklung einsetzen Vermeidung von Summationseffekten in nach-folgenden Phasen
Summation von Fehlern und Mängeln Anforderungs- definition Korrekte Anforderungen Fehlerhafte Anforderungen System- spezifikation Korrekte Spezifikation Spezifikations- fehler Induzierte Fehler aus Anforderungen Korrekter Entwurf Entwurfs- fehler Induzierte Fehler aus Anforderungen | Spezifikation Entwurf Korrektes Programm Programm- fehler Induzierte Fehler aus Anforderungen | Spezifikation | Entwurf Realisierung Korrektes Verhalten Korrigierte Fehler Bekannte un- korrigierte Fehler Unbekannte Fehler Test und Integration
Vorzeitige Fehlerentdeckung Vorteile Vermeidung von Fehlern in späteren Phasen Reduzierung von Kosten 55% aller Fehler entstehen in der Anforderungs- und Entwurfsphase [IEEE Software, Jan.1985] 35% dieser Fehler bei Abnahme / im Betrieb gefunden Fehlerbeseitigung 100fach höher als in der Definitionsphase Mit höherer Wahrscheinlichkeit Fehlerkorrektur richtig Reduzierung der Fehlerfortpflanzung Fehler besser vermeiden – oder zumindest frühzeitig erkennen!
Entwicklungsbegleitende, integrierte Qualitätssicherung Q-Sicherung begleitet gesamte SW-Entwicklung in jeder Phase Vorteile: Einbettung der Q-Sicherung in das organisatorische Ablauf-modell der SW-Entwicklung QS findet dann statt, wenn sie angebracht ist QS natürlicher Teil der Software-Erstellung Teilprodukt erst dann in der nächster Phase verfügbar, wenn eine bestimmte Qualität gesichert ist Qualitätsniveau zu jedem Zeitpunkt sichtbar Realistische Beurteilung des Entwicklungsfortschritts
Entwicklungsbegleitende, integrierte Qualitätssicherung Software-Entwicklung Software-Entwicklung Definieren Definieren Definieren Änderungen QS- Plan Produktmodell Produktmodell Produktmodell Prüfen und freigeben Entwerfen Entwerfen Entwerfen Änderungen Produktarchitektur Produktarchitektur Produktarchitektur Prüfen und freigeben Implementieren Implementieren Implementieren Änderungen Produkt Produkt Produkt Prüfen und freigeben
Unabhängige Qualitätssicherung „testing is a destructive process, even a sadistic process,...“ [Myers, 1979] 2 Alternativen QS organisatorisch unabhängig von der Entwicklung QS ist Teil der Entwicklung Vor- und Nachteile beider Ansätze
Alternative 1: QS unabhängig von Entwicklung Vorteile Entwicklung kann keinen Druck auf die QS ausüben QS ist neutral Klare Budgetaufteilung möglich Bedeutung der QS (kein “Anhängsel“ der Entwicklung) Nachteile Gefahr der Isolierung von der Entwicklung gleichmäßige Personalauslastung schwierig
Alternative 2: QS Teil der Entwicklung Vorteile Personal kann flexibler eingesetzt werden QS nicht im Abseits, sondern bekommt alles mit Gemeinsame Teamarbeit und vertrauensvollere Zusammenarbeit leichter möglich Nachteile Entwicklungs-Management kann Druck auf die QS ausüben Mögliche Umverteilung der Budgetmittel zugunsten der Entwicklung
Personal-Alternativen Personal für die Qualitätssicherung eingestellt und nur in der QS tätig Jeder Mitarbeiter rotiert in festgelegten Abständen zwischen QS und Entwicklung Jeder Mitarbeiter arbeitet sowohl in Entwicklung als auch in der QS bei anderen Entwicklungen
Alternative 1: Nur in QS tätig Vorteile Mitarbeiter mit entsprechender Neigung und Ausbildung einstellen Hoher Spezialisierungsgrad möglich Nachteile Mitarbeiter entfernen sich von Anwendungs-problemen Mitarbeiter haben keine Erfahrung mit der Entwicklung von Software
Alternative 2: Rotation Vorteile Jeder Mitarbeiter sieht auch die Probleme der anderen Seite Systematischer Wissenstransfer sichergestellt Vermeidet schlechtes Image der QS (Motto: “Alle, die nicht gut entwickeln, kommen in die QS“) Nachteile Mitarbeiten müssen auch Tätigkeiten ausführen, zu denen sie keine Lust haben Mitarbeiter u.U, überfordert, beide Tätigkeiten professionell durchzuführen wegen der verschiedenen Spezialkenntnisse
Alternative 3: QS & Entwicklung parallel Vorteile Flexibler Personaleinsatz möglich Kein Overhead für die Qualitätssicherung Nachteile Vermischung von Entwicklungsarbeit und QS keine Arbeit wird richtig gemacht Dauernder Wechsel zwischen verschiedenen Tätigkeiten
Aufteilung der Verantwortung zwischen Entwicklung und QS QS zuständig für Überprüfung Entwickler konzentriert sich auf konstruktive Aspekte Sinkende Sorgfalt bei Entwicklung („Lass die anderen meine Fehler finden!“) Entwicklung für definierte Qualität zuständig Weitere Überprüfung durch die QS erst bei best. Qualitätsgrad Vorteile: Klar definierte Verantwortlichkeiten Entwickler muss sein eigenes Produkt überprüfen Höhere Eigenverantwortlichkeit der Entwickler Nachteil Erfordert messbare Qualitätsstufen
Quantitative Qualitätssicherung Entlastet QS, da Maße die Überprüfung der Q-Maßnahmen erleichtern z.B. Zweigüberdeckung von 80% in Programmen Alle Analyseberichte fehlerfrei (von Tool erzeugt) Zusätzliche Aktivitäten Sammlung von Daten (Maßen) Validierung dieser Daten Einrichten einer quantitativ orientierten Entwickungs- datenbank
Eigenständige Organisationseinheit “Qualitätssicherung“ Teil der Entwicklung oder eigenständige organisatorische Einheit Kritische Mitarbeiterzahl (mind. 15% der Entwicklungs-Einheit) Vorteile Objektive, unabhängige Qualitätssicherung Heilsame Wirkung auf die Entwicklung, wenn eigenes Produkt noch von der QS überprüft wird Qualitätsvergleiche über mehrere Produkte möglich
EINHEIT 2: Qualität in der SW-Entwicklung V-Modell Submodell QS im V-Modell: Aktivitäten und Produkte Beispiel-Entwicklungsprozess
V-Modell Anwendungsszenarien Validation Testfälle Verifikation Anforderungs-definition Abnahmetest Validation Testfälle Grobentwurf Systemtest Verifikation Testfälle Feinentwurf Integrationstest Testfälle Modulimple- mentation Modultest
V-Modell (Forts.) Erweiterung des Wasserfallmodells: Integration der Qualitätssicherung Bestandteile Vorgehensmodell “Was ist zu tun?“ die Methodenzuordnung “Wie ist etwas zu tun?“ funktionale Werkzeuganforderungen “Womit ist etwas zu tun?“ Entwicklung durch BMVg, BMI Anwendung auch in der Industrie regelmäßige Weiterentwicklung Öffentlich zugänglich
Die drei Ebenen der Standardisierung V-Modell Einführung Die drei Ebenen der Standardisierung
Submodelle im V-Modell Software-Erstellung (SE) erstellt das System bzw. die Software. Qualitätssicherung (QS) gibt Qualitätsanforderungen, Prüffälle und -kriterien vor und untersucht die Produkte und die Einhaltung der Standards Konfigurationsmanagement (KM) verwaltet die erzeugten Produkte Projektmanagement (PM) plant, kontrolliert und informiert die Submodelle SE, QS und KM
Zusammenwirken der 4 Submodelle
Arbeitsteilung zwischen SE und QS im V-Modell
Analytische Maßnahmen im V-Modell Prüfung Selbstprüfung Verifikation Validation Prozessprüfung Produktprüfung
Rollenverteilung bei der Durchführung von Prüfaktivitäten Produktersteller QS-Verant-wortlicher Prüfer AG/Anwender Selbstprüfung v Prozessprüfung m Produktprüfung b Validation v verantwortlich b beratend m mitwirkend
Selbstprüfungen Art der Vorgaben für den Entwickler Verpflichtungen seitens des Entwicklers Keine Vorgaben (außer generell Nachvollziehbarkeit) Dokumentation in freier Form Statistische Vorgaben (z.B. Mindestabdeckung) zur Durchführung der Prüfung Dokumentation muss den Vorgaben entsprechen Genaue Spezifikation der Vorbereitung, Durchführung und Auswertung der Prüfung Prüfprotokoll gemäß Submodell QS
Formelle Prüfung Beteiligung QS-Verantwortlicher QS-Verantw. führt formelle Prüfung selbst durch QS-Verantw. entscheidet über Annahme (“akzeptiert“) oder Ablehnung (“in Bearb.“) B2 QS-Verantw. begleitet die Durchführung der Prüfung QS-Verantw. entscheidet über Annahme der Prüfung Durchführung der Prüfung durch Entwicklungsteam-Mitglied B3 QS-Verantw. entscheidet allein aufgrund der Prüfdokumentation
Kritikalität = Bedeutung von Fehlverhalten ... bei administrativen Administrationssystemen ... bei technischen Systemen hoch macht sensitive Daten für unberechtigte Personen zugänglich, verhindert administrative Vorgänge (z.B. Gehaltsauszahlung), führt zu Fehlentscheidungen infolge fehlerhafter Daten kann zum Verlust von Menschenleben führen mittel kann die Gesundheit von Menschen gefährden oder zur Zerstörung von Sachgütern führen niedrig verhindert Zugang zu Informationen, die regelmäßig benötigt werden kann zur Beschädigung von Sachgütern führen, ohne jedoch Menschen zu gefährden keine beeinträchtigt die zugesicherten Eigenschaften nicht wesentlich gefährdet weder Gesundheit noch Sachgüter
Submodell QS Aktivitäten Produkte Planungsaktivitäten (QS1, QS2) Prüfaktivitäten (QS3, QS4) Lenkungsaktivitäten (QS5) Produkte QS-Plan Prüfplan Prüfspezifikation Prüfprozedur Prüfprotokoll
Submodell QS im Überblick QS 1 QS-Initialisierung QS 1.1 QS-Plan erstellen QS 1.2 Prüfplan erstellen QS-Plan QS 2 Prüfungsvorbereitung QS 2.1 Prüfmethoden und –kriterien festlegen QS 2.2 Prüfumgebung definieren Prüfplan QS 2.3 Prüffälle festlegen Prüfspezifikation QS 2.4 Prüfprozedur erstellen Prüfprozedur QS 3 Prozessprüfung von Aktivitäten Prüfprozedur QS 4 Produktprüfung QS 4.1 Prüfbarkeit feststellen QS 4.2 Produkt inhaltlich prüfen Prüfprotokoll QS 5 Berichtswesen Berichtsdokumente
QS 1: QS-Initialisierung
Inhalte eines QS-Plans im V-Modell Qualitätsziele und Risiken im Projekt 2.1 Qualitätsziele für Produkte und Prozesse 2.2 Qualitätsrisiken 2.3 Maßnahmen aufgrund der Qualitätsziele und -risiken QS-Maßnahmen gemäß Kritikalität und IT-Sicherheit 3.1 Verwendete Richtlinien oder Normen 3.2 Einstufungsbedingte QS-Maßnahmen Entwicklungsbegleitende Qualitätssicherung 4.1 Zu prüfende Produkte 4.2 Zu prüfende Aktivitäten Spezifische Kontrollmaßnahmen 5.1 Eingangskontrolle von Fertigprodukten 5.2 Kontrolle von Unterauftragnehmern 5.3 Ausgangskontrolle der Softwarebausteine 5.4 Änderungskontrolle 5.5 Kontrolle von Bearbeitungskompetenzen 5.6 Kontrolle des Konfigurationsmanagements
Prüfplan im V-Modell Prüfgegenstände Aufgaben und Verantwortlichkeiten bei den Prüfungen Zeitliche Planung Erforderliche Ressourcen Welche Produkte und Aktivitäten in welchem Zustand werden wann, von wem und womit geprüft?
QS 2: Prüfungsvorbereitung
Inhalte einer Prüfspezifikation im V-Modell Anforderungen 2.1 Einstufung der Funktionseinheit hinsichtlich Kritikalität und IT-Sicherheit 2.2 Prüfanforderungen Methoden der Prüfung Prüfkriterien 4.1 Abdeckungsgrad 4.2 Checklisten 4.3 Endekriterien Prüffälle 5.1 Prüffallbeschreibung 5.2 Abdeckungsmatrix 5.2.1 Architektur-Elemente und Schnittstellen 5.2.2 Fachliche und technische Anforderungen
Prüfprozedur Arbeitsseinleitung Für jeden Prüfungsgegenstand festgelegt Inhalt Genaue Anweisungen für jede einzelne Prüfung Definiert einzelne Schritte der Prüfung Festlegung der zu erwartenden Prüfergebnisse Vorschriften zur Prüfungsvor- und -nachbereitung
QS 3: Prozessprüfung Prüfung von Aktivitäten auf Einhaltung vorgegebener Vorgehensweisen und Projektstandards Umfasst: SE, QS, KM, PM (besonders Konfigurationsmanagement) Bei Prüfung von QS-Aktivitäten Rollenverteilung absichern!
QS 4: Produktprüfung
QS 4.1: Prüfbarkeit feststellen Checkliste für Produkt Ist das Produkt gut verstehbar und übersichtlich gestaltet? Sind alle Produkte, aus denen das zu prüfende Produkt hervorging, verfügbar? Sind die Anforderungen, gegen die das Produkt geprüft werden soll,alle dokumentiert, klar und verständlich? Wurden die anzuwendenden Richtlinien und Normen eingehalten?
QS 4.2: Produkt inhaltlich prüfen Prüfprotokoll Pro Prüfgegenstand Pro Prüfung Aufzeichnungen über den Verlauf der Prüfung Gegenüberstellung von Soll- und Ist-Ergebnis
QS 5: QS-Berichtswesen Auswertung der Prüfprotokolle Anzahl der Probleme Schwere der Probleme Klassifikation der Probleme (gleichartige Probleme auch woanders?) Ursache der Probleme, z.B. fehlende Ressourcen und Qualifikation, ungeeignete Tools Bewahrung von Erfahrungen über Projektgrenzen hinweg Erfahrungen mit QS-Maßnahmen Projektabschluss-bericht
EINHEIT 3: Qualität in Analyse & Design aWas sind gute Business-Spezifikationen? B: Fall-Beispiel Seminarorganisation Manuelle Prüfmethoden Reviews u.a. Methoden Verbesserung der Prozess-Qualität (Überblick)
Fall-Beispiel Seminarorganisation Die Firma Teachware veranstaltet öffentliche und firmeninterne Seminare mit externen Dozenten. Sie besteht aus: Geschäftsführer: verantwortlich für Planung und Verwaltung der Seminare und Dozenten Kundensachbearbeiter: verwaltet Kunden und Buchungen Kundenbetreuer: betreut Kunden und Dozenten vor Ort
Seminar-Organisation Pflichtenheft Ziele Produkteinsatz Produktumgebung Produktfunktionen Produktdaten Produktleistungen (nicht-funktionale Anforderungen) Benutzerschnittstelle Qualitätsziele Globale Testfälle (Use Cases) Entwicklungsumgebung
Seminar-Organisation Objektorientierte Analyse OOA-Diagramm
Manuelle Prüfmethoden Eigenschaften Produkte und Teilprodukte manuell analysiert, geprüft und begutachtet Ziel: Auffinden von Fehlern, Defekten, Inkonsistenzen und Unvollständigkeiten Überprüfung in Gruppensitzung durch kleines Team mit definierten Rollen
Manuelle Prüfmethoden Voraussetzungen Aufwand und Zeit fest einplanen Jedes Mitglied des Prüfteams muss in der Prüfmethode geschult sein Prüfergebnisse nicht zur Beurteilung von Mitarbeitern benutzen Prüfmethode schriftlich festlegen Hohe Priorität (kurzfristig durchführen nach Beantragung) Keine Vorgesetzten und Zuhörer bei den Prüfungen
Manuelle Prüfmethoden - Vorteile Einzige Möglichkeit zur Überprüfung von Semantik Effizientes Mittel zur Qualitätssicherung Notwendige Ergänzung werkzeuggestützter Prüfungen Verantwortung für Produktqualität aufs ganze Team übertragen Da Überprüfung in Gruppensitzung, wird Wissensbasis der Teilnehmer verbreitert Jedes Mitglied des Prüfteams lernt Arbeitsweise der anderen kennen Bemühen um verständliche Ausdrucksweise Mehr Prüfungen Weniger Fehler
Manuelle Prüfmethoden - Nachteile Hoher Aufwand Bis zu 20% der Erstellungskosten für das Prüfobjekt Overhead (zusätzliche Protokolle, Auswertungen) Situation für die Autoren Psychologisch manchmal schwierig “Anklagebank“
Manuelle Prüfmethoden Inspektion “formales Review“ Review Walkthrough “abgeschwächtes Review“ Stellungnahme
Reviews Definition Ziel Manuelle, semiformale Prüfmethode, um Stärken und Schwächen eines schriftlichen Dokuments anhand von Referenzunterlagen zu identifizieren und durch den Autor beheben zu lassen Ziel Feststellung von Mängeln, Fehlern, Inkonsistenzen, Unvollständigkeiten Auffinden von Verstößen gegen Vorgaben, Richtlinien, Standards, Pläne Formale Planung und Strukturierung des Bewertungs-prozesses und formale Abnahme des Prüfobjekts
Reviews (Forts.) Objekte der Prüfung Referenzunterlagen Jeder lesbare Teil von Software, z.B. Dokument, Quellcode-Modul, Spezifikation Referenzunterlagen Ursprungsprodukt Vorgaben für die Erstellung des Prüfobjekts Relevante Richtlinien und Standards Fragenkataloge mit Listen von Fragen, die im Review beantwortet werden (Checklisten) Evtl. Anleitung für Durchführung des Reviews
Reviews (Forts.) Beschreibungsform der Prüfung Ergebnisse Prüfobjekte Informal (z.B. Pflichtenheft) Semiformal (z.B. Pseudocode) Formal (z.B. OOA-Modell, Quellcode) Bezugsobjekte Informal (z.B. Richtlinien) Formal (z.B. OOA-Modell) Ergebnisse Review-Protokolle Empfehlung über Freigabe an Manager Überarbeitetes Prüfobjekt
Reviews (Forts.) Teilnehmer Durchführung Review-Team mit 4-7 Personen: Moderator, Autor, Protokollführer, 2-5 Gutachter Durchführung Eingangsprüfung Evtl. Einführungssitzung: Vorstellung von Prüfobjekt Individuelle Vorbereitung Review-Sitzung Überarbeitung des Prüfobjekts (durch den Autor) Bei gravierenden Mängeln erneute Review-Sitzung
Ablauf eines Reviews
Reviews Kosten und Nutzen 15-20% des Erstellungsaufwands des Prüfobjekts Beispiel: Dokument mit 50 Seiten 5 Gutachter (+Mod.+Autor), Vorb. 10 Seiten/Std., 2 Std. Sitzung Summe Review-Aufwand 5 Personentage, Erstellungsaufwand 25 Personentage (bei 2 Seiten/Tag) Nutzen 60-70% der Fehler in Dokument gefunden Reduktion der Fehlerkosten in der Entwicklung von ca. 75% Code-Review: ähnliche Zahlen
Fallbeispiel Seminar-Organisation Unterlagen für Review Prüfobjekt Klassen-Diagramm Seminarorganisation V1.1 Referenzunterlagen Ursprungsprodukt: Pflichtenheft Seminar-organisation V 2.2 Erstellungsregeln: OOA-Methode Checklisten: Klassen, Attribute, Operationen, Assoziation & Aggregration
Inhalt des Review-Protokolls Datum Name von Moderator und Teilnehmer Prüfobjekt Referenzunterlagen Defekte mit folgenden Angaben: Kurzbeschreibung des Defekts Ort des Defekts Bezug zu Regeln und Checklisten Fehlergrad (leicht / schwer) Wann identifiziert? (Sitzung / Vorbereitung) Verbesserungsvorschläge (z.B. für Regeln, Checklisten) Fragen an den Autor
Review-Protokoll: Beispiel Review Klassendiagramm “Seminar-Organisation“ Beispiel-Protokoll
Inspektion “formales Review“ [ANSI/IEEE Std.729-1983] Zusätzliche Eigenschaften: Verbesserung der Entwicklungsregeln und des Entwicklungsprozesses Metriken ermitteln (mit Hilfe von Statistiken über Erkennung von Defekten) Inspektionsprotokoll stärker formalisiert als beim Review Freigabe erfolgt durch Moderator
Walkthrough - Ablauf Defekte Prüfobjekt Walkthrough Individuelle Vorbereitung & Prüfung Gutachter Walkthrough-Sitzung Autor, Gutachter Prüfobjekt Protokoll
Walkthrough - Bewertung Vorteile Geringer Aufwand Auch für kleine Entwicklungsteams geeignet (<= 5Mitarbeiter) Sinnvoll für “unkritische“ Dokumente Einbeziehung von Endbenutzern als Gutachter Erkennung von Unvollständigkeiten und Missverständnissen Wissen über ein Dokument auf breite Basis stellen Nachteile Nur wenige Defekte identifiziert Autor kann Walkthrough-Sitzung dominieren und Gutachter “blenden“ Überarbeitung des Prüfobjekts im Ermessen des Autors, wird nicht nachgeprüft
Weitere Prüfmethoden Stellungnahme Round Robin Review Peer Review Kommentare zum Prüfobjekt an den Autor auf dessen Bitte hin Ungeplant, zwischen normalen Tätigkeiten Round Robin Review Review-Sitzung mit “umgekehrten Vorzeichen“ (Argumente für die Güte des Prüfobjekts suchen) Peer Review Review-Team organisiert selbst Aufgabenteilung und Vorgehensweise Ein Moderator: Sitzungsleitung, Organisation
Verbesserung der Prozessqualität (Überblick) ISO 9000-Ansatz TQM (Total Quality Management) CMM (Capability Maturity Matrix) Business Engineering
ISO 9000 Ansatz: Prozessqualität Allgemeingültige Anforderungen für Aufbau- und Ablauforganisation eines Unternehmens Definiert wichtige Dokumente und Inhalte Regelung von Zuständigkeiten, Befugnissen, Verantwortungsbereichen Orientiert sich am Auftraggeber-Lieferanten-Verhältnis Fordert organisatorische Unabhängigkeit der QS Integriert QS in die gesamte Organisation Ziel: reproduzierbare Entwicklungsprozesse Zertifikat: für betriebliche Abläufe (nicht Produkt!)
Bewertung ISO 9000 Vorteile Nachteile Externe Zertifizierung und Wiederholungsaudits QM-System aufrecht erhalten! Erleichtert Akquisition von Aufträgen (Werbung) Niedrigeres Produkthaftungsrisiko Qualitätsbewusstsein Nachteile Unsystematisch: Mischung von Tätigkeiten und Dokumenten Keine saubere Trennung der QS- von anderen Aufgaben Gefahr der “Software-Bürokratie“ Benötigt Unterstützung durch CASE-Werkzeuge Standardisierte Verfahrensabläufe und Dokumente, oft zu starr
Totales Qualitätsmanagement TQM-Ansatz Totales Qualitätsmanagement Prozessqualität Produktqualität Kontinuierliche Qualitätsverbesserung Bereichs- und funk- tionsübergreifend Kundenorientierung Einbeziehung aller Mitarbeiter T Q M Vorbildfunktion des Managements Qualität wird bei Management- entscheidungen gleichberechtigt zu Kosten und Terminen bewertet An Software-Entwicklung anpassen
TQM: Einige Methoden Qualitätszirkel / Brainstorming Pareto-Analyse 80:20 Regel (80% des Aufwandes für 20% der Probleme) Ursache-Wirkungs-Diagramm Ishikawa-Diagramm (Fishbone Chart) QFD-Konzept (Quality Function Deployment)
CMM (Capability Maturity Model) Beschreibt Qualität des Software-Entwicklungs-prozesses Unterscheidet 5 Qualitätsstufen von Entwicklungsprozessen Höherer Reifegrad höhere Termintreue geringere Schwankungsbreite Ermittlung der Reifegrade anhand von Hauptkriterien (key process areas) und Aspekten (key practices)
CMM-Reifegradstufen Out In In Out In Out Out In In Out Stufe 5 Optimierender Prozess In Stufe 4 Gesteuerter Prozess In Out Stufe 3 Definierter Prozess In Out Stufe 2 Wiederhol- barer Prozess Out In Stufe 1 Initialer Prozess In Out
EINHEIT 4: Testende Verfahren Grundbegriffe Klassifikation Strukturtest (White Box-Test) Funktionaler Test (Black Box-Test) Testmethodik Test-Arten Integrationstest Systemtest Testprozess und -dokumentation
Einführung Produktqualität = Produktqualität jeder Systemkomponente Funktionalität Zuverlässigkeit (Änderbarkeit) Qualitätsmerkmale Konstruktive und analytische Maßnahmen Konstruktion Analyse Eigenschaften der Systemkomponente Produktqualität = Produktqualität jeder Systemkomponente Produktqualität der Beziehungen zwischen den Systemkomponenten
Fehler Definition Konstruktives Ziel Analytisches Ziel Abweichung der tatsächlichen Ausprägung eines Qualitätsmerkmals von der vorgesehenen Soll-Ausprägung Inkonsistenz zwischen Spezifikation und Implementierung Entspricht Richtigkeit (Funktionalität) und Reife und Fehlertoleranz (Zuverlässigkeit) [DIN ISO 9126] Konstruktives Ziel Fehlerfreie Software-Komponenten entwickeln Analytisches Ziel Fehlerfreiheit einer Software-Komponente nachweisen Vorhandene Fehler finden
Auswahl analytischer Maßnahmen Funktionalität Zuverlässigkeit Analysierbarkeit Änderbarkeit Modifizierbarkeit Stabilität Prüfbarkeit Richtigkeit Reife Fehlertoleranz Qualitätsmerkmale Testende Verfahren Verifizierende Verfahren Analysierende Verfahren Beschreibung Komp.-Art Komponenteneigenschaft Klassen Datentyp-Module Datenobjekt-Module Funktionale Module Spezifikation (z.T. ermittelbar durch Metriken) Implementierung
Begriffe Prüfling, Testobjekt Testfall Testdatum Testtreiber Software-Komponente, die getestet werden soll Testfall Satz von Testdaten, der die vollständige Ausführung eines Programms bewirkt Testdatum Eingabewert für Eingabeparameter oder Eingabevariable des Testobjekts Testtreiber Testrahmen zum interaktiven Aufrufen einer Prozedur/Funktion
Weitere Begriffe Instrumentierung Überdeckungsgrad Regressionstest Ziel: Protokollierung ausgeführter Testfälle Analyse des Quellcodes des Prüflings durch ein Testwerkzeug Einbau von Zählern und Auswertung der Zählerstände (Protokoll) Überdeckungsgrad Grad der Vollständigkeit eines Test in einem Testverfahren Regressionstest Wiederholung aller Testfälle nach Änderung des Prüflings mit Soll/Ist-Ergebnisvergleich
Klassifikation testender Verfahren Dynamische Verfahren Strukturtest (White Box-Test, Glass Box-Test) Kontrollflussorientierter Test Anweisungsüberdeckungstest Zweigüberdeckungstest Pfadüberdeckungstest (vollständig, strukturiert, boundary interior) Bedingungsüberdeckungstest (einfach, minimal, mehrfach, mehrfach) Datenflussorientierter Test Defs / Uses-Verfahren Funktionaler Test (Black Box-Test) funktionale Äquivalenzklassenbildung Grenzwertanalyse Test spezieller Wert Zufallstest
Beispiel C++ Prozedur ZaehleZchn Programm ZaehleZchn (Spezifikation / Header) Die Prozedur liest solange Zeichen von der Tastatur, bis ein Zeichen erkannt wird, das kein Großbuchstabe ist, oder Gesamtzahl den größten durch den Datentyp int darstellbaren Wert INT_MAX erreicht. Ist ein gelesenes Zeichen ein Großbuchstabe zwischen A und Z, dann wird Gesamtzahl um 1 erhöht. Ist der Großbuchstabe ein Vokal, dann wird auch Vokalanzahl um 1 erhöht. Ein/Ausgabeparameter sind Gesamtzahl und Vokalanzahl. Randbedingung: Das aufrufende Programm stellt sicher, dass Gesamtzahl stets größer oder gleich Vokalanzahl ist.
Beispielprogramm ZaehleZchn void ZaehleZchn (int &VokalAnzahl, int &Gesamtzahl) { char Zchn; cin >> Zchn; while((Zchn >= ‘A‘) && (Zchn <= ‘Z‘) && (Gesamtzahl < INT_MAX)) Gesamtzahl = Gesamtzahl + 1; if ((Zchn == ‘A‘) || (Zchn == ‘E‘) || (Zchn == ‘I‘) || (Zchn == ‘O‘) || (Zchn == ‘U‘)) VokalAnzahl = VokalAnzahl + 1; } // end if } // end while }
Beispielprogramm ZaehleZchn (2) void main { int AnzahlVokale = 0; int AnzahlZchn = 0; cout << “Programm ZaehleZchn“ << endl; cout << “Zeichen bitte eingeben:“ << endl; ZaehleZchn(AnzahlVokale, AnzahlZchn); cout << “Anzahl Vokale: “ << AnzahlVokale << endl; cout << “Anzahl Zeichen: “<< AnzahlZchn << endl; }
Kontrollflussgraph nstart Knoten Zweig, Kante n1 Pfad n2 n3 n4 n5 n6 cin >> Zchn; while ((Zchn >= ‘A‘) && (Zchn <= ‘Z‘) && (Gesamtzahl < INT_MAX)) Gesamtzahl = Gesamtzahl + 1; if ((Zchn == ‘A‘) || (Zchn == ‘E‘) || (Zchn == ‘I‘) || (Zchn == ‘O‘) || (Zchn == ‘U‘)) VokalAnzahl = VokalAnzahl + 1; Pfad n2 n3 n4 n5 n6 nfinal
Anweisungsüberdeckung vs. Zweigüberdeckung nstart nstart n1 cin >> Zchn; while ((Zchn >= ‘A‘) && (Zchn <= ‘Z‘) && (Gesamtzahl < INT_MAX)) Gesamtzahl = Gesamtzahl + 1; if ((Zchn == ‘A‘) || (Zchn == ‘E‘) || (Zchn == ‘I‘) || (Zchn == ‘O‘) || (Zchn == ‘U‘)) VokalAnzahl = VokalAnzahl + 1; n1 n2 n2 n3 n3 n4 n4 n5 n5 n6 n6 nfinal nfinal
Anweisungsüberdeckungstest C0-Test Prinzip Mindestens einmalige Ausführung aller Anweisungen des Programms (d.h. alle Knoten) Eigenschaften Kontrollstrukturen / Datenabhängigkeiten nicht geprüft Jede Anweisung gleichgewichtig gewertet Notwendiges, aber nicht hinreichendes Testkriterium Nicht ausführbarer Code kann gefunden werden Als eigenständiges Testverfahren nicht geeignet Leistungsfähigkeit Geringste Fehleridentifizierungsquote (18%)
Zweigüberdeckungstest C1-Test Prinzip Ausführung aller Zweige des zu testenden Programms, d.h. Durchlaufen aller Kanten des Kontrollflussgraphen Das minimale Testkriterium Leistungsfähigkeit Findet nicht ausführbare Programmzweige Kontrolliert Korrektheit an den Verzweigungsstellen Erkennt und optimiert häufig durchlaufene Programmteile Bessere Fehleridentifizierungsquote (35%) Schwächen Unzureichend für den Test von Schleifen Berücksichtigt nicht Abhängigkeiten zwischen Zeigen, sondern betrachtet einzelne Zweige Unzureichend für den Test komplexer, d.h. zusammengesetzter Bedingungen
Pfadüberdeckungstest nstart p n1 cin >> Zchn; while ((Zchn >= ‘A‘) && (Zchn <= ‘Z‘) && (Gesamtzahl < INT_MAX)) Gesamtzahl = Gesamtzahl + 1; if ((Zchn == ‘A‘) || (Zchn == ‘E‘) || (Zchn == ‘I‘) || (Zchn == ‘O‘) || (Zchn == ‘U‘)) VokalAnzahl = VokalAnzahl + 1; n2 n3 q2 q1 n4 n5 n6 r nfinal
Pfadüberdeckungstest Prinzip Ausführung aller unterschiedlichen Pfade des zu testenden Programms Pfad = Sequenz von Knoten (i,n1, n2, ..., nm) Leistungsfähigkeit Ist das mächtigste kontrollflussorientierte Verfahren (über 60% Identifizierungsquote) Schwächen Pfadanzahl wächst bei Wiederholungsanweisungen für den Test von Schleifen – ohne feste Wiederholungszahl Teil der konstruierbaren Pfade nicht ausführbar Vollständigkeit nicht gesichert Keine praktische Bedeutung aufgrund eingeschränkter Durchführbar-keit ( eingeschränktere Ansätze zum Testen verfolgen)
Boundary-Interior-Pfadtest Prinzip Schwächere Version des Pfadüberdeckungstests Keine Überprüfung von Pfaden, die durch mehr als einmalige Schleifenwiederholung erzeugt werden Gezieltere Überprüfung von Schleifen praktikabel Eigenschaften Grenztest-Gruppe (boundary test): Alle Pfade, die die Schleife zwar betreten, sie aber nicht wiederholen; Ausführung aller unterschiedlichen Pfade innerhalb des Schleifenkörpers Gruppe zum Test des Schleifeninneren (interior test): Alle Pfade, die mindestens eine Schleifenwiederholung beinhalten; Ausführung aller unterschiedlichen Pfade während der ersten beiden Ausführungen des Schleifenkörpers
Beispiel Boundary-Interior-Pfadtest Testfall für den Pfad außerhalb der Schleife Aufruf mit Gesamtzahl = INT_MAX Testfall für den Grenztest Aufruf mit Gesamtzahl = 0, Zchn = ‘A‘, ‘1‘ Aufruf mit Gesamtzahl = 0, Zchn = ‘B‘, ‘1‘ Testfälle für den Schleifenkörper: mindestens eine Schleifenwiederholung, 4 mögliche Pfade bei 2 Ausführungen des Schleifenkörpers Zchn = ‘E‘, ‘I‘, ‘N‘, ‘*‘ Zchn = ‘A‘‚ ‘H‘, ‘!‘ Zchn = ‘H‘, ‘A‘, ‘+‘ Zchn = ‘X‘, ‘X‘, ‘,‘
Bedingungsüberdeckungstest-Verfahren Prinzip Benutzen Bedingungen in Wiederholungs- und Auswahlkonstrukten zur Definition von Tests Eigenschaften Einfache Bedingungsüberdeckung: Überdeckung aller atomaren Bedingungen. Evaluation aller atomarer Bedingungen muss mindestens einmal true und false ergeben Mehrfach-Bedingungsüberdeckung: Bildung aller Variationen der atomaren Bedingungen. Bei n Bedingungen 2n Variationen große Anzahl Testfälle Minimale Mehrfach-Bedingungsüberdeckung: Jede Bedingung – atomar oder zusammengesetzt – muss mindestens einmal true und einmal false sein
Bedingungsüberdeckung Beispiel Zwei Bedingungen a) 3 atomare Bedingungen ((Zchn >= ‘A‘) && (Zchn <= ‘Z‘) && (Gesamtzahl < INT_MAX)) b) 5 atomare Bedingungen ((Zchn == ‘A‘) || (Zchn == ‘E‘) || (Zchn == ‘I‘) ||(Zchn == ‘O‘) || (Zchn == ‘U‘))
Einfache Bedingungsüberdeckung Variablenwerte Testfälle Variablen 1 2 3 Gesamtzahl 4 5 INT_MAX Zchn ‘A‘ ‘E‘ ‘I‘ ‘O‘ ‘U‘ ‘1‘ ‘a‘ ‘D‘ Zchn>=‘A‘ T F Zchn<=‘Z‘ Gesamtzahl < INT_MAX Zchn==‘A‘ - Zchn==‘E‘ Zchn==‘I‘ Zchn==‘O‘ Zchn==‘U‘ Atomare Bedingungen Wahrheitswerte der atomaren Bedingungen
Bedingungsüberdeckung Vollständige Prüfung d. Bedingungen Testfälle Variablen 1 2 3 Gesamtzahl 4 5 6 INT_MAX Zchn ‘A‘ ‘E‘ ‘I‘ ‘O‘ ‘U‘ ‘B‘ ‘1‘ ‘a‘ ‘D‘ Zchn>=‘A‘ Zchn<=‘Z‘ T F Gesamtzahl < INT_MAX Bedingung a Zchn==‘A‘ - Zchn==‘E‘ Zchn==‘I‘ Zchn==‘O‘ Zchn==‘U‘ Bedingung b
Datenflussorientierte Strukturtestverfahren Prinzip Dynamisches Strukturtestverfahren Nutzt Definition von Variablen sowie lesende und schreibende Zugriffe auf Variablen in Anweisungen und Bedingungen für Testziele Geeignet zum Test von Datenobjekt- und Datentypmodulen Defs/Uses-Verfahren, 3 Kategorien Wertzuweisung / Definition (def) Berechnung von Werten innerhalb eines Ausdrucks (computational-use, c-use) Bildung von Wahrheitswerten in Bedingungen (predicate-use, p-use)
Kontrollflussgraph - Datenflussdarstellung nstart def (Gesamtzahl) def (VokalAnzahl) Import von ‘VokalAnzahl‘ und ‘Gesamtzahl‘ char Zchn; cin >> Zchn; while ((Zchn >= ‘A‘) && (Zchn <= ‘Z‘) && (Gesamtzahl < INT_MAX)) Gesamtzahl = Gesamtzahl + 1; if ((Zchn == ‘A‘) || (Zchn == ‘E‘) || (Zchn == ‘I‘) || (Zchn == ‘O‘) || (Zchn == ‘U‘)) VokalAnzahl = VokalAnzahl + 1; cin >> Zchn; Export von ‘VokalAnzahl‘ und ‘Gesamtzahl‘ nin def (Zchn) n1 p-use (Zchn) p-use (Gesamtzahl) n2 c-use (Gesamtzahl) def (Gesamtzahl) n3 n4 p-use (Zchn) c-use (VokalAnzahl) def (VokalAnzahl) n5 n6 def (Zchn) nout c-use (VokalAnzahl) c-use (Gesamtanzahl) nfinal
Datenflussorientierte Testverfahren all defs-Kriterium Jede Variablendefinition benutzen all p-uses-Kriterium Jede Kombination Variablenbenutzung + prädikative Variablenbenutzung (zweigüberdeckend) all c-uses-Kriterium Ausführung mindestens eines definitionsfreien Pfades all c-uses / some p-uses-Kriterium Test aller Kombinationen Variablendefinition + berechnende Variablenbenutzung
Analytische Verfahren – Black Box Tests (Funktionale Tests) Funktionale Testverfahren Funktionale Äquivalenzklassenbildung Grenzwertanalyse Test spezieller Werte Kombination Funktion- und Strukturtest
Funktionale Äquivalenzklassenbildung Prinzip Dynamisches funktionales Testverfahren, das Tests aus der funktionalen Spezifikation ableitet (Black Box-Test) Eigenschaften Äquivalenzklassen der Eingabewerte durch Zerlegung des Definitionsbereichs gebildet Bildung von Ausgabe-Äquivalenzklassen Repräsentant für einen Testfall irgendein Element aus Äquivalenzklasse Bewertung Geeignetes Verfahren für Ableitung von Testfällen Basis für Grenzwertanalyse Aufteilung in Äquivalenzklassen nicht immer mit Programmstruktur identisch Nur Betrachtung von Ein- und Ausgabe, aber nicht Ursache-Wirkung!
Regeln zur Äquivalenzklassenbildung Ein zusammenhängender Wertebereich eine gültige Äquivalenzklasse und 2 ungültige Äquivalenzklassen Eingabebereich: 1 <= Tage <= 31 Tage 1 gültige Klasse: 1 <= Tage <= 31 2 ungültige Klassen: Tage < 1, Tage > 31 Anzahl von Werten 1 gültige und 2 ungültige Äquivalenzklassen Eingabebereich: 1..6 Besitzer eines Autos 1 gültige Klasse: 1..6 Besitzer 2 ungültige Klassen: Kein Besitzer, Mehr als 6 Besitzer Anzahl von n Werten mit unterschiedlicher Behandlung n gültige und 1 ungültige Äquivalenzklasse Tasteninstrumente: Klavier, Cembalo, Spinett, Orgel 4 gültige Klassen: Klavier, Cembalo, Spinett, Orgel 1 ungültige Klasse: z.B. Violine
Regeln zur Äquivalenzklassenbildung (Forts.) Situation, die zwingend erfüllt sein muss 1 gültige und 1 ungültige Äquivalenzklasse Das erste Zeichen muss ein Buchstabe sein 1 gültige Klasse: Das erste Zeichen ist ein Buchstabe 1 ungültige Klasse: Das erste Zeichen ist kein Buchstabe Äquivalenzklasse auftrennen, wenn deren Elemente unterschiedlich behandelt werden Bildung von Ausgabe-Äquivalenzklassen (1-5 analog) Eingabewert Ausgabewert? Ausgabewert in Wertebereich? Ausgabebereich: 1 <= Wert <= 99 1 gültige Klasse: Alle Eingaben, die Ausgaben zwischen 1 und 99 erzeugen 2 ungültige Klassen: - Alle Eingaben, die Ausgaben kleiner als 1 erzeugen - Alle Eingaben, die Ausgaben größer als 99 erzeugen
Beispiel Äquivalenzklassen und Testfälle Eingaben Äquivalenzklassen Gesamtzahl 1 0<=Gesamtzahl < INT_MAX 2 Gesamtzahl = INT_MAX VokalAnzahl 3 0<=VokalAnzahl<=Gesamtzahl Zchn 4a Zchn < ‘A‘ 4b Zchn > ‘Z‘ 5 ‘A‘ <= Zchn <= ‘Z‘ 6a Zchn = ‘A‘ 6b Zchn = ‘E‘ 6c Zchn = ‘I‘ 6d Zchn = ‘O‘ 6e Zchn = ‘U‘ Testfall 1 2 3 Getestete Äquivalenzkl. 1, 3, 5, 6a, 6b, 6c, 6d, 6e, 4a 1, 3, 4b 2, 3 Gesamtzahl 100 INT_MAX VokalAnzahl 50 Zchn ‘X‘,‘A‘,‘E‘,‘I‘,‘O‘,‘U‘,‘I‘ ‘a‘ - Soll: Gesamtzahl 106 Vokalanzahl 55 Testfälle für ZaehleZchn Äquivalenzklassen Für ZaehleZchn
Grenzwertanalyse Prinzip Eigenschaften Bewertung Beispiel Dynamisches funktionales Testverfahren, das Tests aus der funktionalen Spezifikation ableitet (Black Box-Test) Basiert auf Äquivalenzklassenbildung Eigenschaften Jeder Rand der Äquivalenzklasse getestet Setzt eine natürliche Ordnung der Elemente in Äquivalenzklasse voraus Bewertung Sinnvolle Erweiterung und Verbesserung Äquivalenzklassenbildung Identifiziert wichtige Typen von Testfällen Beispiel void setzeMonat (short Monat); // Eingabeparameter 1 gültige Äquivalenzklasse (1<=m<=12), 2 ungültige (m<1,m>12) Testfälle: monat = 1; monat = 12; monat = 0; monat =13;
Test spezieller Werte Ziel Kriterien Beispiele Aufstellung von fehlersensitiven Testfällen aus der Erfahrung heraus (Spezialfälle) Kriterien Grenzwertanalyse Zero values-Kriterium Distinct values-Kriterium Beispiele Wert 0 als Eingabe- oder Ausgabewert Sonder- oder Steuerzeichen bei der Eingabe von Zeichenketten NULL-Werte in Tabellen
Zufallstest Prinzip Bewertung Erzeugung zufälliger Testfälle aus dem Wertebereich der Eingabedaten Werkzeugnutzung (Testdatenerzeugung) Bewertung Schließt menschliches Fehlverhalten bei Testdatenerzeugung aus, da regellose Testdatenerzeugung Als alleiniges Verfahren nicht ausreichend (minimale Testkriterien nicht erfüllt) Nur als ergänzendes Verfahren geeignet, z.B. in Kombination mit Äquivalenzklassen
Strukturtest vs. Funktionstest Nachteil Strukturtest Fehlende Funktionalität nicht erkannt (stattdessen triviale Testfälle z.B. bei Zweigüberdeckung) Nachteil Funktionstest Implementierung nicht geeignet berücksichtigt Nur Teil aller Zweige berücksichtigt ä Kombination Strukturtest + Funktionstest! Sicht des Programmierers/Testers vs. Sicht des Managements
Anforderungen an die Testmethodik Erfüllen von anerkannten Minimalkriterien Ausführung aller Zweige (Zweigüberdeckungstest) Test anhand von Spezifikation (Funktionstest) Erzeugung von fehlersensitiven Testdaten Erzeugung von Testdaten, die das korrekte Funktionieren zeigen Wirtschaftlichkeit der Prüfung Systematik des Tests Nachvollziehbarkeit Verwendung eines geeigneten Werkzeugs Testprotokollierung, Testmetrik, Regressionstest
Testmethodik Funktionstest Testobjekt mit Testwerkzeug instrumentieren (protokolliert Überdeckung) Mit Hilfe Spezifikation bestimmen: Äquivalenzklassen, Grenzwerte, Spezialwerte, Testdaten Keine Implementierung! Testfälle mit Testobjekt durchführen: Soll-Ist-Vergleich Keine Überdeckungsrate betrachten
Testmethodik (Forts.) Strukturtest Regressionstest Überdeckungsstatistik nach Funktionstest auswerten – Nichtabdeckungen untersuchen (z.B. Fehlerabfragen, “tote“ Zweige) Testfälle für noch nicht durchlaufene Zweige, Pfade, Bedingungen aufstellen Durchführung Testlauf für jeden Testfall Ende des Überdeckungstests bei Erreichen einer bestimmten Überdeckungsrate Regressionstest Falls Fehlerkorrektur: Regressionstest mit den bisherigen Testfällen (d.h. nochmalige Durchführung der protokollierten Testfälle und Soll-Ist-Vergleich)
Allgemeine Tipps zum Testen Testwerkzeuge / Hoher Automatisierungsgrad Konstruktive Voraussicht bei Entwurf und Spezifikation Funktionstest im Entwurf berücksichtigen (Herleitung der Testfälle ohne Blick in den Quellcode) Funktionstests sorgfältig vorbereiten Strukturtest nach dem Funktionstest zielgerichtet möglich Einzeltests mit jeder Systemkomponente vor Integrationstest Einbau der Testwerkzeuge in den Entwicklungs-prozess (Richtlinien, Checklisten)
Integrationstest – Einführung und Überblick Aufgabe: Fehlerfreies Zusammenwirken der Systemkomponenten testen Voraussetzung: Jede Systemkomponente bereits überprüft Unterschiedliche Integrationsstrategien Klassifikation von Integrationstests: Dynamisch vs. Statisch Black Box vs. White Box
Integrationsstrategien big bang Nicht- inkrementell geschäftsprozess- orientiert bottom-up funktionsorientiert top-down Inkrementell inside-out hardest first nach der Verfügbarkeit outside-in vorgehensorientiert testzielorientiert
Testtreiber und Platzhalter Testtreiber (Driver) Zum Test einer Systemkomponente, deren Dienst nicht direkt vom User Interface (mit Parametern) aufgerufen wird Platzhalter (Dummies, Stubs) Beim Aufruf von Systemkomponenten, die noch nicht implementiert sind, sondern nur spezifiziert Beispiel C: liest jeden Satz einer Datei und löscht dann C G: abstrakter Datentyp mit 2 Operatoren: LeseNaechstenSatz und LoescheSatz G
Integrationstest-Verfahren Dynamisch Test der integrierten Komponenten mit konkreten Eingabewerten Strukturorientiert Kontrollflussorientiert Datenflussorientiert Funktional zu wenig Funktionalität / zu viel Funktionalität / falsche Funktionalität Wertbezogen Test mit extremen Werten (vgl. Grenzwertanalyse, Test spezieller Werte)
Prüfziele eines Systemtests Vollständigkeit Alle funktionalen und nicht-funktionalen Anforderungen aus dem Pflichtenheft. Funktionale Anforderungen Funktionstest Beispiel: Produktfunktionen lt. Pflichtenheft Globale Testfälle (Funktionssequenzen) Volumen Test mit umfangreichen Datenmengen (Massentest) Max. 50.000 Teilnehmer, max. 10.000 Seminare Importschnittstelle für Massendaten
Prüfziele eines Systemtests (2) Zeit Antwortzeiten und Durchsatzraten bei starker Systembelastung (Zeittest) Beispiel: Reaktionszeiten < 2 sec Verarbeitungsfunktionen max. 15 sec Zuverlässigkeit Test des Systems unter Spitzenbelastung über längere Zeit hinweg (Lasttest), im grünen Bereich Datei nicht vorhanden bei Dateischnittstelle Datei zu groß
Prüfziele eines Systemtests (3) Fehlertoleranz, Robustheit Test des Systems unter Überlast, im roten Bereich (Stresstest) Simulierte Situationen: geringerer Speicher, Plattenausfall Beispiel: Was passiert bei: 100.000 Teilnehmern, 50.000 Seminaren? Benutzbarkeit Verständlichkeit, Erlernbarkeit, Bedienbarkeit aus der Sicht des Endbenutzers (Benutzbarkeitstest) Anforderungen an User Interface aus Pflichtenheft 2 Rollen: Kundensachbearbeiter, Seminarsachbearbeiter Sicherheit Datenschutz-Mech. (Sicherheitstest), Passwörter, Zugriffsrechte
Prüfziele eines Systemtests (4) Interoperabilität Zusammenarbeit des Systems mit anderen Systemen, Kompatibilität von Schnittstellen und Daten (Interoperabilitätstest) Beispiel: Zusammenarbeit Seminarorganisation mit Buchhaltungssystem Konfiguration System für unterschiedliche HW/SW-Plattformen und Konfigurationen geeignet Dokumentation Vorhandensein, Güte und Angemessenheit der Benutzer- und Wartungsdokumentation (Dokumentenprüfung) Installations- und Wiederinbetriebnahmetest
Abnahmetest (Acceptance Test) Test des Systems Unter Mitwirkung und Federführung des Auftraggebers In der realen Einsatzumgebung beim Auftraggeber Möglichst mit echten Daten des Auftraggebers Arten: Werkabnahme (Ausführung aller vorgesehenen Testfälle) Abnahme in der realen Umgebung Betriebsabnahme (Pilotphase) – endgültiger Inbetriebnahme
Testprozess und -dokumentation Testplanung Testdurchführung Testkontrolle Dokumente Testplan und Testvorschrift Testbericht Testbericht [ANSI/IEEE Std. 829-1983] Testzusammenfassung Testprotokoll (ergibt sich aus Testvorschrift) Liste der Problemmeldungen Liste der Software-Einheiten
Inhalt einer Testvorschrift Einleitung 1.1 Zweck des Tests 1.2 Testumfang 1.3 Referenzierte Unterlagen Testumgebung 2.1 Überblick 2.2 Test-Software und -Hardware 2.3 Testdaten, Testdatenbanken 2.4 Personalbedarf Abnahmekriterien 3.1 Kriterien für Erfolg und Abbruch 3.2 Kriterien für Unterbrechungen 3.3 Voraussetzungen für Wiederaufnahme
Inhalt einer Testvorschrift (Forts.) Testabschnitt 1 4.1 Einleitung 4.1.1 Zweck, Referenz zur Spezifikation 4.1.2 Getestete Software-Einheiten 4.1.3 Vorbereitungsarbeiten für den Testabschnitt 4.1.4 Aufräumarbeiten nach dem Testabschnitt 4.2 Testsequenz 1-1 4.2.1 Testfall 1-1-1 Eingabe, Anweisung, Soll-Ausgabe, Raum für Ist-Ausgabe und Befund 4.2.2 Testfall 1-1-2 4.3 Testsequenz 1-2 : 4.n Ergebnis des Abschnitts 1 Testabschnitt 2
Testzusammenfassung Allgemeine Daten Gegenstand und Zweck des Tests Nr., Beginn, Ende, Dauer Gegenstand und Zweck des Tests Projekt, Release-Nr. Geliefert von: Einzeltest, Integrationstest, Systemtest, Abnahmetest Testvorschrift (siehe dort) Empfehlung Akzeptieren / Nicht akzeptieren (d.h. Testwiederholung)? Beilagen Liste der getesteten Software-Einheiten Liste der Problemmeldungen