Software Testen 2.0 VL Software Testen VO3 2009W http://www.inso.tuwien.ac.at/lectures/software_testen INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien
Lernziele Fundamentaler Testprozess Statische ti Testmethoden th Testfall Design (Methoden und Klassifizierung) Testmanagement Testwerkzeuge 2
Begriffsdefinition Fehler (engl. bug) Nichterfüllung einer festgelegten Anforderung [GTB] Mangel (engl. defect) nicht angemessene Erfüllung einer Anforderung [GTB] Fehlerhandlung (engl. error) Die menschliche Handlung, die zu einem falschen Ergebnis (Fehlerzustand) führt. [IEEE 610] Fehlerwirkung (engl. failure) äußerer Fehler Sichtbarwerden eines inneren Fehlers für den User/Tester Fehlerzustand (engl. fault) innerer Fehler Ursache für das Auftreten eines Fehlers 3
Fundamentaler Testprozess I Testplanung Testumfang, Risiken, Testziele, Testobjekte, Testaktivitäten, Testmethoden, Ressourcen, Termine, etc. Integration der Testaktivitäten in den SW-Lebenszyklus Erstellung eines Testkonzepts (engl. testplan) siehe IEEE 829 Testanalyse und Testdesign Review der Testbasis (Anforderungen, Architektur, Design, ) Bewertung der Testbarkeit (engl. testability) Testfall Design und Priorisierung (logische TCs) Erstellung der Testentwurfsspezifikation (engl. test design spec.) 4
Fundamentaler Testprozess II Testrealisierung und Testdurchführung Erstellung und Durchführung konkreter Testfälle Generierung von Testdaten Implementierung von automatisierten Testfällen Entwurf von Testszenarien (engl. test suits) Testauswertung und Testbericht Ergebnisse werden mit definierten Zielen verglichen Testendekriterien erreicht? Erstellung eines Testberichts Abschluss der Testaktivitäten Datenpflege (Abweichungen beseitigen) Auswertung der Ergebnisse (Analyse der Metriken) Prozessverbesserung 5
V-Modell 6
Software-Qualitätssicherung im Überblick Review Manuelles Prüfen Stat. Analyse Maschinelles Prüfen Whitebox-Test Blackbox-Test Statischer Test (Prüfen) Ohne Ausführung des Produkts Dynamischer Test (Prüfen durch Ausf.) Mit Ausführung des Produkts Analytische Qualitätssicherung Fokus: Produkt Fehlerfindungsstrategie Qualitätssicherung Konstruktive Qualitätssicherung Fokus: Prozess Fehlervermeidungsstrategie 7
Statisch vs. Dynamisch Statischer Test Ein Test, bei dem der Prüfgegenstand (das Testobjekt) nicht zur Ausführung kommt. Ziel: Aufdeckung von Fehlerzuständen (innerer Fehler) Alle Dokumente, die während eines Projekts erstellt werden. (z.b. Anforderungsdokumente) Programmcode manuelle Prüfung (Reviews) und maschinelle Prüfung (statische Analyse) statische Tests VOR dynamischen Tests Dynamischer Test Ein Test, bei dem Softwarecode ausgeführt wird. Ziel: Aufdecken von Fehlerwirkungen (äußerer Fehler) 8
Statischer Test Reviews Definition Ein Review ist eine Bewertung eines Software-Produkts oder eines Projektstatus zur Aufdeckung von Diskrepanzen der geplanten Arbeitsergebnisse und der Identifizierung von Verbesserungspotenzialen. [GTB] Gemeinsame Ziele aller Review Typen möglichst frühe Entdeckung von Fehlern, Inkonsistenzen und Unvollständigkeiten Verschiedene Ausprägungen Informelles Review Formale Reviews Walkthrough Technisches Review Inspektion 9
Verschiedene Review Typen I Informelles Review kein formaler Prozess (optionale Dokumentation) z.b.: pair programming, einfacher Autor-Leser-Zyklus inexpensive way to get some benefit Ziel: Fehler finden Walkthrough Autor präsentiert vor Gutachtern optionale/keine Vorbereitung der Teilnehmer open end dsitzung Ziel: lernen, verstehen, Fehler finden 10
Verschiedene Review Typen II Technisches Review Leitung durch geschulten Moderator nicht von Autor(en) Teilnehmer sind vorbereitet ( Experten Review) Ziel: diskutieren, techn. Probleme lösen, entscheiden, Fehler finden Inspektion Prozess ist formal definiert und wird strikt eingehalten formale Sichtprüfung von Dokumenten, um Mängel zu finden gründliche Vorbereitung aller Teilnehmer Verwendung von Checklisten und Inspektionsregeln definierte Rollen und Aufgaben der Teilnehmer (wahlweise Vorleser) Ziel: Fehler finden 11
Statischer Test Werkzeuggestützte statische Analyse I Definition Die statische Analyse ist eine (meist) werkzeugunterstützte Prüfung ohne Ausführung des Prüfobjekts. Ziele der statischen Analyse frühes Finden von Fehler od. Abweichungen im Code, SW- Modell, Dokument (noch vor der Testfall Durchführung) Warnung vor Anomalien im Code (z.b. Komplexitäts-Metriken) t ik Identifizierung von Fehlern, die durch dynamischen Test nicht (effektiv) aufzudecken sind Verbesserung der Wartbarkeit des Codes Vorbeugung von Fehlerzuständen 12
Statischer Test Werkzeuggestützte statische Analyse II Typischer Einsatzbereich Entwickler-Tests Durchführung vor und während des Komponenten- und Integrationstests Analyseverfahren Datenflussanalyse (Überprüfung von Datenfluss-Sequenzen) Kontrollflussanalyse (Prüfung des Kontrollflusses durch den Code) 13
Testfall Design Klassifizierung Classic Blackbox Eingabe vs. Whitebox Eingabe Ausgabe Ausgabe based on [Rupp 07] 14
Testfall Design Klassifizierung nach ISTQB I Specification-based techniques Äquivalenzklassen Grenzwertanalyse Entscheidungstabellen Modellbasierter Test (z.b. Zustandsgraph) Anwendungsfallbasierter Test Blackbox Experience-based techniques Testen auf Basis der Erfahrung und Intuition des Testers quasi Realtime TC Design, Durchführung und Logging Ausfallbasierter Test (z.b. error guessing, Fehlerangriffe) 15
Testfall Design Klassifizierung nach ISTQB II Structure-based techniques (white-box techniques) Komponententest Basis: Code (Anweisungen, Verzweigungen, ) Integrationstest Basis: bspw. Call Tree Systemtest Basis: Menü-Struktur, Business Prozess, Work Flow, Whitebox-Methoden können auch auf Systemebene angewandt werden. Testabdeckung durch strukturelle Methoden siehe Folien VO2 16
Testmanagement Inhalt: Testorganisation ti Aufgaben des Testleiters Testauswertung Testaufwand Metriken Risiken Abweichungen 17
Unabhängigkeit im Testbereich Trennung von Entwicklung und Test Selbstkritik ist problematisch Vermutungen beim Entwickeln und Testen unabhängige Tester sind unvoreingenommen und sehen andere Fehler Mögliche Stufen von Unabhängigkeit innerhalb des Entwicklerteams t aus dem Fachbereich oder Anwendergruppe Spezialisten für Sicherheits-Tests, Usability, externes Testteam (Outsourcing) Probleme Trennung von der Entwicklung Ressourcen Problem (Bottleneck als letzter Checkpoint) Verantwortung für Qualität wird abgeschoben 18
Testleiter auch Testmanager, Testkoordinator (engl. test leader) Planung Festlegung der Teststrategie Kommunikation der Planung gegenüber dem Management Überwachung und Steuerung (Einführung von Metriken) Bestimmung des Automatisierungsgrads Auswahl der Test-Tools Analyse und Design Testentwurfsspezifikation (Herleitung und Auswahl der TCs) Konfigurationsmanagement zwecks Traceability Organisation der Testumgebung 19
Testleiter (cont.) Realisierung und Durchführung Vorbereitung, Erstellung und Durchführung von TCs Hauptaufgaben des Testers Auswertung und Bericht Auswertung der Testprotokolle (Testendekriterien) Bewertung der Ergebnisse Erstellung des Testberichts Abschluss der Testaktivitäten Kontrolle der Abweichungen Analyse der Metriken Dokumentation ti der Abnahme Prozessverbesserung 20
Auswertung Testfortschritt Excel: Stacked Area 21
Auswertung Qualitätsentwicklung Excel: Stacked Column 22
Testaufwand Abschätzung Kennzahlen aus vergangenen und ähnlichen Projekten Expertenschätzung Wichtige Faktoren: Produkteigenschaften (Umfang, Komplexität, Anforderungen an Sicherheit und Verlässlichkeit, ) Charakteristiken a e des Entwicklungsprozesses (Reifegrad eg des Testprozesses, Werkzeuge, Skills, Zeitdruck, ) Tätigkeit Analyse und Spezifikation Aufwand 15 % Design 20 % Implementierung und Komponententest t t 35 % Test 30% 23
Aufwandsabschätzung nach C. Jones 24
Aufwandsabschätzung nach C. Jones (cont.) Aufwand Codierung (PM) Aufwand Test (PM) 1 0,3 5 2,5 10 6,2 20 15 50 51 100 121 200 285 Umsetzung der Verteilung nach C. Jones 25
Monitoring Typische Kennzahlen Testfall Ausführung (Anzahl passed/failed run/not run) Fehlerbasierte Metriken (z.b. Fehleraufdeckungsrate, gefundene und behobene Fehler, Retest Ergebnisse) Testabdeckung (hinsichtlich Anforderungen, Risiken, Code) subjektives Einschätzung der Tester Kosten für den Test verglichen mit den potenziellen Kosten für die Fehlerbehebung in der Produktion Reporting Verfassen eines Testreports (engl. test summary report) nach IEE 829 Inhalt: Abweichungen, Beurteilung der Ergebnisse, Auswertung einzelner elner Testobjekte (passed/failed Kriterien), 26
Monitoring Fehleraufdeckungsrate FaR = Anzahl der Fehler im Test Anzahl aller Fehler (inkl. Produktion) 27
Risiken Risiken sind potenzielle Probleme Fehler in der Software führen zu Imageverlust hohen Kosten in der Behebung Risikobasiertes Testen Priorisierung der Testobjekte und Testfälle Kriterien: Bedeutung (Häufigkeit der Nutzung), Komplexität Pareto Prinzip: in 20% der Software sind 60% aller Fehler 28
Abweichungsmanagement Abweichung, Vorfall (engl. incident) Jedes Ergebnis, welches während eines Tests auftritt und weiterer Untersuchung bedarf. [GTB] Aufbau einer Abweichungsmeldung Zusammenfassung der Abweichung (Identifikation der TOs, Referenz auf Szenario, Priorität) Abweichungsbeschreibung g (Eingaben, Ergebnis Ist/Soll, Testumgebung, Reproduzierbarkeit, Tester, ) Auswirkungen 29
Testwerkzeug-Klassifizierung I Testmanagement Tools Unterstützung der Test-Management und Test Aktivitäten Requirements-Management Tools Verwaltung von Anforderungen Abweichungs-Management Tools (Bug Tracker) Verwaltung von Incident-Reports Konfigurations-Management t Tools Informationen über Versionen, Releases und Builds Werkzeuge für statische ti Tests Review process support tools Tools für statische ti Analyse Modellierungs-Werkzeuge 30
Testwerkzeug-Klassifizierung II Werkzeuge zur Testspezifikation Testentwurfswerkzeuge t verwalten TCs und REQs, bieten Methoden zur TC-Ermittlung Testgeneratoren und Testdateneditoren ermitteln Testdaten aus verschiedenen Quellen, ermöglichen Bearbeitung sämtlicher Testdaten, Grenzwertanalysen, Werkzeuge zur Testdurchführung automatische bzw. semi-automatische Tests einfache Capture-Replay Tools (Wiederverwendbarkeit?) komplexe Testroboter (Plattformabhängigkeiten?) Werkzeuge für Performanzmessungen Performanz- Lasttest- und Stresstestwerkzeuge 31