Vorlesung Software Engineering I

Slides:



Advertisements
Ähnliche Präsentationen
Lexikon der Qualität Begriffe in Verbindung mit Qualität und ISO9000 finden sie auch im Lexikon der Qualität erläutert (
Advertisements

Qualität „Qualität ist die Gesamtheit von Eigenschaften und Merkmalen eines Produkts oder einer Tätigkeit, die sich auf deren Eignung zur Erfüllung gegebener.
Integrations- und Funktionstests im Rahmen des V-Modelles
Das V - Modell - Überblick
Phasen und ihre Workflows
Prof. Dr. Liggesmeyer, 1 Software Engineering: Dependability Prof. Dr.-Ing. Peter Liggesmeyer.
Analytische Qualitätssicherung
Frame-Logik Eine Einführung Andreas Glausch.
Qualitätssicherung von Software
Qualitätssicherung von Software (SWQS)
Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell
Qualitätssicherung von Software
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Dynamische Testverfahren
LE LM 10 - LO3 Verfahren zur Qualitätssicherung
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Testfallbestimmung Dynamische Testverfahren wie das Black Box-Testen benötigen konkrete.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Prüfung von Simulationsprogrammen – Integrations- und Funktionstests Inhalt Vom Einzeltest.
Was ist und wie prüft man Qualität
Erfahrungen aus Tests komplexer Systeme
Funktionalität Vorhandensein vor Funktionen mit festgelegten Eigenschaften. Diese Funktionen erfüllen die definierten Anforderungen. Richtigkeit - Liefern.
Schulung der Mitarbeiter
Was ist Qualität ? Qualität von Produkten oder Dienstleistungen ist das Gesamtergebnis aller Aktivitäten in jeder Phase des gesamten Leistungsprozesses.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Aufgaben des Testens Vergleich des Verhaltens einer Software mit den an sie gestellten.
Beispiel: Wasserfallmodell als einfaches Phasenmodell
Universität Stuttgart Institut für Kernenergetik und Energiesysteme System- und Abnahmetests Inhalt Testen des Systems unter Mitwirkung des Auftraggebers.
Zertifizierung von Software: CMM oder ISO 9000
Universität Stuttgart Institut für Kernenergetik und Energiesysteme MuSofT LE 3.1-4V - Modell Überblick V-Modell Regelungen, die die Gesamtheit aller Aktivitäten,
Testen, Analysieren und Verifizieren von Software
Rational Unified Process (RUP) - Definitionen
Der Testprozess als Bestandteil des SE Prozesses:
Zusammenfassung Vorwoche
Fehlerabdeckung/ Regressionstest1 Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Fehlerabdeckung/ Regressionstest Vortragende:
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Projektplan: m : Anforderungsanalyse Dokument m :
Datenbankentwurfsprozess
Tutorium Willkommen zurück, in der wunderbaren Welt der Statistik Teil II.
Vorgehensmodelle: Schwergewichtige Modelle
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Spezifikation von Anforderungen
Das Wasserfallmodell - Überblick
Synergieeffekte durch softwaregestützte Prozessmodelle
Duo- und Quad Prozessor-Architektur
Whitebox Testen mit JUnit
Endliche Automaten Informatik JgSt. 13, Abitur 2009
Zentralübung Automotive Software Engineering – Übungsblatt 8
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Entwurf, unverbindlicher Vorabzug !
Kompetenz -, Lern - und Prüfungsbereiche Anforderungsbereiche
UML-Kurzüberblick Peter Brusten.
Wasserfallmodell und Einzelbegriffe
5 Software-Qualität 5.1 Qualität 5.2 Taxonomie der Software-Qualitäten.
PRO:CONTROL Ziel des Moduls Arbeitspakete
Grundlagen wissenschaftlichen Arbeitens
Blackbox-Testverfahren
IQ Test.
PHP: Operatoren und Kontrollstrukturen
Korrektheit von Programmen – Testen
Software Engineering Grundlagen
EnergieManagementSystem (EnMS) und EnergieAudit (EnA)
Analytische Qualitätssicherung: Von der Anforderung zum Testfall
DIE SACHE MIT DEM.
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Korrektheit von Programmen – Testen
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Software - Testung ETIS SS05.
Performanz- und Lasttests Formale Methoden
Semesterprojekt Präsentation Thema 1 Test-Arten
Formale Methoden Semesterprojekt Präsentation Thema 1 Test-Arten Fernstudium Master WI, MWI 10F Jan te Kock,
Testsysteme für Automatisierte Softwaretests Seminarvortrag von Rica Wedowski.
 Gegenstandsbereich der Testtheorie: Analyse der Charakteristika von Tests:  Güte von Tests.  Struktur von Tests.  Schwierigkeit von Tests.  Gruppenunterschiede.
 Präsentation transkript:

Vorlesung Software Engineering I Qualitätssicherung II Analytische QS http://wwwbruegge.in.tum.de/teaching/ss02/muster/ Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Software-Qualitätssicherung (SW-QS) Analytische QS Konstruktive QS Normen, Standards, Prozessmodelle, Projektleitung, Software-Technik, Software-Architektur, Erfahrungsaustausch, Ausbildungsmaßnahmen ... Ergebnisse Prozesse Artefakte prüfen: Audits Dokumente Reviews, ... Software Testen Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Fragestellung beim Testen Verifikation: Die Software ist richtig! Debugging: Warum ist die Software nicht richtig? Validation: Ist es die richtige Software? Test: Ist die Software richtig? Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Austesten? Ein einfaches Programm soll getestet werden, das drei ganzzahlige Eingabewerte hat. Übrige Randbedingungen haben keinen Einfluss auf das Testobjekt. Jeder Eingabewert kann bei 16 Bit Integerzahlen 216 unterschiedliche Werte annehmen. Bei drei unabhängigen Eingabewerten ergeben sich 216 * 216 * 216 = 248 Kombinationen. Jede dieser Kombinationen ist zu testen. Wie lange dauert es bei 100.000 Tests pro Sekunde? Es sind 281.474.976.710.656 Testfälle Dauer: ca. 90 Jahre Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Austesten? Ein einfaches Programm soll getestet werden, das aus vier Verzweigungen (IF-Anweisungen) und einer umfassenden Schleife besteht und somit fünf mögliche Wege im Schleifenrumpf enthält. Unter der Annahme, dass die Verzweigungen voneinander unabhängig sind und bei einer Beschränkung der Schleifendurchläufe auf maximal 20, ergibt sich folgende Rechnung: 51 + 52 + ... + 518 + 519 + 520 Wie lange dauert das Austesten bei 100.000 Tests pro Sekunde? Es sind 119.209.289.550.780 Testfälle Dauer: ca. 38 Jahre A B Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Erste Übung zur Testfallanalyse Ein Programm ist zu testen, das 3 ganzzahlige positive Werte einliest und als Längen eines Dreiecks interpretiert. Das Programm gibt eine Meldung aus, ob es sich um ein ungleichseitiges, gleichschenkliges oder gleichseitiges Dreieck handelt. Welche Testfälle werden benötigt ? Welche Testdaten sind sinnvoll ? a b c a = b = c a ≠ b ≠ c a = b ≠ c a ≠ b = c a = c ≠ b Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Mögliche Testfälle (1) Testfälle bestehen aus Testdaten und dem Soll-Ergebnis 1. 2,3,4 - zulässiges ungleichseitiges Dreieck 2. 2,2,2 - zulässiges gleichseitiges Dreieck 3. 2,2,1 - zulässiges gleichschenkliges Dreieck 4./5. 1,2,2 / 2,1,2 2 weitere Testfälle mit Permutationen für gleichschenklige Dreiecke 6. 1,0,3 - kein Dreieck, eine Seitenangabe = 0 7./8. 0,1,3 / 1,3,0 - Permutationen 9. 5,-5,9 - kein Dreieck, eine Seitenangabe < 0 10./11. -5,5,9 / 5,9,-5 - Permutationen Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Mögliche Testfälle (2) 12. 1,2,3 - kein Dreieck Summe der beiden kürzeren Seiten = 3. Seitenlänge 13./14. 2,3,1 / 3,1,2 - Permutationen 15. 1,2,4 - kein Dreieck Summe der beiden kürzeren Seiten < 3. Seitenlänge 16./17. 2,4,1 / 4,1,2 - Permutationen 18./19. 0,0,0 - kein Dreieck oder Fehlermeldung alle Seiten = 0, zusätzlich 2 Seiten = 0 - Permutationen? 20.-22. Max_int, Max_int, Max_int - zulässiges gleichseitiges Dreieck korrekte Dreiecksbestimmung beim Test mit maximalen Werten, zusätzliche Tests mit 2 oder 1 maximalem Wert Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Mögliche Testfälle (3) 23.-25. 1,1,4.4567 - Fehlermeldung »nicht ganzzahlige Werte« Permutationen? - zusätzlich mit 2 oder 3 Werten 26.-28. 1,1,& - Fehlermeldung »Eingabe von Buchstaben oder Sonderzeichen« Permutationen? - zusätzlich mit 2 oder 3 Werten 29./30. 1,2,3,4 / 2,3 - Fehlermeldung »falsche Anzahl von Werten« (wenn Eingabe möglich) 31. Max_int/2 + 1, Max_int/2 + 1, Max_int/2 + 10 - zulässiges gleichschenkliges Dreieck (Überlauf oder richtige Berechnung? Bei a<=b<=c; Prüfung der Dreiecksbedingung mit a+b>c, führt a+b zum Überlauf, s.a. Testfall 20) Wie viele Tests hatten Sie überlegt? in Anlehnung an Glenford J. Myers: Methodisches Testen von Programmen. 7. Auflage 2001 Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Spitz-, stumpf- und rechtwinklige Dreiecke Werden spitz-, stumpf- und rechtwinklige Dreiecke zusätzlich berücksichtigt, ergeben sich insgesamt 47 Testfälle. Resümee: Einfaches Problem, aber aufwendiger Test! E. H. Riedemann: Testmethoden für sequentielle und nebenläufige Software-Systeme. Teubner Verlag, Stuttgart 1997 Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Definition Qualität Die Erfüllung von Qualitätszielen, die durch Vorgaben für Qualitätsmerkmale und ihre Teilmerkmale definiert sind Qualität ist der Grad, in dem von einem Satz inhärenter Merkmale (eines Produkts) die Anforderungen erfüllt werden. (DIN EN ISO 9000:2005) Qualitätsmerkmale beziehen sich immer auf Anforderungen Funktionale Anforderungen (Fachlichkeit, Funktionen, Schnittstellen, ...) Nicht-Funktionale Anforderungen (Qualitäts- und Realisierungsanforderungen, Projektspezifische Anforderungen, ...) Angelehnt an: DIN EN ISO 9000:2005 Qualitätsmanagementsysteme – Grundlagen und Begriffe. Beuth Verlag, Berlin, 2005 Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Validierung und Verifikation - Definition Validierung Prüfung, ob ein Entwicklungsergebnis die individuellen Anforderungen bezüglich einer speziellen beabsichtigten Nutzung erfüllt. Haben wir das richtige System realisiert? Verifikation Prüfung, ob die Ergebnisse einer Entwicklungsphase die Vorgaben der Phaseneingangs-Dokumente erfüllen. Haben wir das System richtig realisiert? Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Software-Qualität nach DIN/ISO/IEC 9126 (1) Validierung Gebrauchsqualität Äußere und innere Qualität Aufgabenerfüllung innerhalb der Aufwandsgrenzen für Benutzer (Zeit, Kosten, ...) Aufgabenerfüllung innerhalb der Risikogrenzen (Leben und Gesundheit, Business, ...) Subjektive Zufriedenheit der Benutzer innerhalb des Nutzungskontexts Produktivität Sicherheit Zufriedenheit Aufgabenerfüllung innerhalb der Genauigkeit- und Vollständigkeits-grenzen Effektivität ISO/IEC 9126:1991 Bewerten von Softwareprodukten, Qualitätsmerkmale und Leitfaden zu ihrer Verwendung (identisch mit DIN 66272, 94) Gebrauchsqualität -> Validierung Äussere und Innere Qualität -> Verifikation Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Software-Qualität nach DIN/ISO/IEC 9126 (2) Verifikation Gebrauchsqualität Äußere und innere Qualität Funktionalität Zuverlässigkeit Benutzbarkeit Effizienz Änderbarkeit Portierbarkeit Richtigkeit Angemessenheit Interoperabilität (Daten-)Sicherheit Ordnungs- mäßigkeit Reife Fehlertoleranz Wiederher- stellbarkeit Verständlichkeit Erlernbarkeit Bedienbarkeit Attraktivität Zeitverhalten Verbrauchs- verhalten Analysierbarkeit Modifizierbarkeit Stabilität Testbarkeit Anpassbarkeit Installierbarkeit Konformität Austausch- barkeit Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Analytische Qualitätssicherung Statischer Test Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Zunächst ein Selbsttest Wie viele "F" kommen im folgenden Text vor? FINISHED FILES ARE THE RE- SULT OF YEARS OF SCIENTIF- IC STUDY COMBINED WITH THE EXPERIENCE OF YEARS Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Wie viele hatten Sie gezählt? Selbsttest Es sind sechs! Wie viele hatten Sie gezählt? Drei zu finden ist normal - sechs wirklich gut! Irren ist menschlich  FINISHED FILES ARE THE RE- SULT OF YEARS OF SCIENTIF- IC STUDY COMBINED WITH THE EXPERIENCE OF YEARS Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Die magische Zahl Sieben Problem: Begrenzte menschliche Wahrnehmungsfähigkeit Die Millersche Zahl bezeichnet die von George A. Miller festgestellte Tatsache, dass ein Mensch gleichzeitig nur 7±2 Informationseinheiten (Chunks) im Kurzzeitgedächtnis präsent halten kann. Die Größe des Kurzzeitgedächtnisses ist genetisch determiniert und kann auch durch "Training" nicht gesteigert werden. Der diesbezüglich von Miller verfasste Artikel "The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information" ist einer der meistzitierten Artikel im Bereich der Psychologie. (Quelle: http://de.wikipedia.org/wiki/Millersche_Zahl) Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Statischer Test vs. dynamischer Test Im Entwicklungsprozess werden unterschiedliche Produkte (Artefakte) erstellt Informelle Texte Modelle Formale Texte Programmcode Maschinencode Programme sind statische Beschreibungen von dynamischen Prozessen. Dynamische Tests prüfen die durch »Interpretation« (Ausführung) der Beschreibung resultierenden Prozesse. Statische Tests untersuchen die Beschreibung »als solche«, sie wird nicht »ausgeführt«. Im Gegensatz zum dynamischen Test finden statische Tests eher Fehlerzustände als Fehlerwirkungen Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Statischer Test Analyse des Testobjekts (meist ein Dokument) durch intensive Betrachtung Ziel: Finden von Fehlerzuständen (Defekten) im Dokument Verstöße gegen Spezifikationen oder einzuhaltende Standards, Fehler in Anforderungen, Fehler im Design, unzureichende Wartbarkeit und falsche Schnittstellenspezifikationen Nachweis der Verletzung von Projektplänen Ergebnisse der Untersuchungen werden darüber hinaus dazu benutzt, den Entwicklungsprozess zu optimieren Grundidee: Prävention! Fehlerzustände und Abweichungen sollen so früh wie möglich erkannt werden, noch bevor sie im weiteren Verlauf der Softwareentwicklung zum Tragen kommen und aufwändige Nach- oder Verbesserungen nach sich ziehen Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Prüfende Verfahren Reviews überprüfen am Ende jeder Entwicklungsphase Umfang und Qualität der Zwischenprodukte. Projektpersonal, Auftragnehmer-management und Auftraggeber entscheiden gemeinsam, ob die nächste Phase angegangen werden kann Audits sind offizielle Reviews zur Verifikation besonders kritischer Teile durch das QS-Personal Ziel eines Walk-Throughs ist, Problembereiche zu entdecken, sie aber erst nach Abschluß des Walk-Throughs und nach Zustimmung des Erstellers zu beheben Peer Review entspricht dem Walk Through. Es geht dabei um eine methodische Examinierung der Ergebnisse durch sachkundige Kollegen (Peers). Ziel ist, Fehler zu finden und Bereiche, in denen Änderungen erforderlich sind Inspection ist eine sehr formale Gruppensitzung, in der die zu inspizierende Unterlage vom Autor vorgelesen und sequentiell Wort für Wort durchgearbeitet wird Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Manuelle vs. automatisierte Prüfung Betrachtung des Prüfobjekts durch Mensch oder Werkzeug Reviews Manuelle Prüfungen durch eine oder mehrere Personen Menschliche Analyse- und Denkfähigkeit wird genutzt, um komplexe Sachverhalte zu prüfen und zu bewerten Kann bei allen Dokumenten durchgeführt werden, die während des Softwareentwicklungsprozesses erstellt oder verwendet werden (z. B. Vertrag, Anforderungsspezifikation, Designspezifikation, Quelltext, Testkonzepte, Testspezifikationen, Testfälle, Testskripte oder Anwenderhandbücher) Statische Analyse Automatisierte Prüfungen durch entsprechende Werkzeuge Nur bei Dokumenten mit formaler Struktur (z.B. Programmtext, UML-Diagramme) Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Zielsetzung statische Analyse Aufdeckung vorhandener Fehlerzustände oder fehlerträchtiger Stellen in einem formalen Dokument. Durch werkzeuggestützte Prüfung, z.B. Rechtschreibprüfprogramme als eine Art statische Analysatoren, die (Rechtschreib- und – eingeschränkt – Grammatik-) Fehler in Texten nachweisen und damit zur Qualitätsverbesserung beitragen Ermittlung von Metriken (Messgrößen), um eine Qualitätsbewertung durchführen und somit Qualität messen und nachweisen zu können. Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Statische Analyse und Werkzeugunterstützung Statische Analyse mit Werkzeugunterstützung kann nur auf einem formal strukturierten Dokument durchgeführt werden. Formale Dokumente können z. B. sein: Technische Anforderungen Softwarearchitektur-Modelle Softwareentwurf-Modelle Programmcode Informeller Text kann unterhalb der Oberflächenstruktur (Rechtschreibung und elementare Grammatik) nur mit Methoden der KI (künstliche Intelligenz) analysiert werden Linguistische semantische Analyse ist aktueller Forschungsgegenstand Aber: Einführung einer »Normsprache« ermöglicht auch hier einfachere Analysen Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Statische Analyse und Reviews Stehen in einem engen Zusammenhang Wird vor dem Review eine statische Analyse durchgeführt, können bereits eine Anzahl von Fehlern und Unstimmigkeiten nachgewiesen werden und die Menge der im Review zu berücksichtigenden Aspekte ist erheblich geringer Da statische Analysen werkzeuggestützt durchgeführt werden, ist der Aufwand wesentlich niedriger als beim Review Also: Statische Analyse und Review Problem: Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Statische Analyse von Programmcode Fehler(zustände) bzw. fehlerträchtige Situationen, die mit der statischen Analyse von Programmcode nachgewiesen werden können, sind beispielsweise Verletzung der Syntax Abweichungen von Konventionen und Standards Kontrollflussanomalien Datenflussanomalien Alle Compiler führen eine statische Analyse des Programmtextes durch, indem sie die Einhaltung der Syntax der jeweiligen Programmiersprache prüfen Die meisten modernen Compiler bieten darüber hinaus noch zusätzliche statische Analysen Neben den Compilern gibt es spezielle Werkzeuge, sogenannte Analysatoren, die zur Durchführung bestimmter Analysen eingesetzt werden Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Statische Analysewerkzeuge Einige freie Werkzeuge zur statischen Codeanalyse CCCC (http://sourceforge.net/projects/cccc/) JUtils (http://www.jutils.com/) PyChecker (http://c2.com/cgi/wiki?PyChecker) Einige kommerzielle Werkzeuge zur statischen Codeanalyse PC-Lint Klocwork Coverity http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Analytische Qualitätssicherung Dynamischer Test Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Statischer Test vs. dynamischer Test Programme sind statische Beschreibungen von dynamischen Prozessen Statische Tests untersuchen die Beschreibung »als solche«, sie wird nicht »ausgeführt« Artefakte des Entwicklungsprozesses, z.B informelle Texte, Modelle, formale Texte, Programmcode, ... Dynamische Tests prüfen die durch »Interpretation« (Ausführung) der Beschreibung resultierenden Prozesse. Das Testobjekt wird im dynamischen Test auf einem Prozessor „ausgeführt“ Bereitstellen von Eingangsdaten Beobachten der Ausgangsdaten Prozessor Testobjekt Ausgangsdaten Eingangsdaten Vorbedingungen Nachbedingungen Randbedingungen Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Ziele des dynamischen Tests Nachweis der Erfüllung der festgelegten Anforderungen durch das Testobjekt Aufdeckung von eventuellen Abweichungen und Fehlerwirkungen Mit möglichst wenig Aufwand (Testfällen) möglichst viele Anforderungen überprüfen bzw. Fehler nachweisen Aber: Dynamische Tests sind immer nur Stichproben! Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Dynamischer Test – Begriffe und Zusammenhänge Prozessor Testobjekt Ausgangsdaten Eingangsdaten Vorbedingungen Nachbedingungen Randbedingungen Testfall und Testszenarien Testlauf Testfallspezifikation Testkriterium verifiziert Testbasis Testentwurfsspezifikation Testvorgehens- spezifikation beschreibt Erwartete Testobjekt- reaktion / Rückverfolgbarkeit Testausführungsplan ordnet Siehe auch IEEE 829 und ISTQB Glossar Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Dynamischer Test in »unteren« Teststufen Die Ausführung dynamischer Tests erfordert ein ablauffähiges Programm Einzelne Klassen, Module/Komponenten und Teilsysteme sind jedoch in der Regel für sich alleine nicht lauffähig Bieten oft Operationen/Dienste für andere Softwareeinheiten an Haben kein „Hauptprogramm“ zur Koordination des Ablaufes Stützen sich oft auf Operationen/Diensten anderer Softwareeinheiten ab In den „unteren“ Teststufen Klassen-/Modultest, Komponententest und Integrationstest muss das Testobjekt also in einen entsprechenden „Testrahmen“ eingebettet werden  Oft als „Unit-Test“ bezeichnet Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Unit Test – Begriffe Testrahmen (test bed) Sammlung aller Programme (u. a. Testtreiber und Platzhalter), die notwendig sind, um Testfälle auszuführen, auszuwerten und Testprotokolle aufzuzeichnen Testumgebung Gesamtheit aller Hardware- und Softwarekomponenten (auch der Testrahmen), die notwendig sind, um Testfälle durchzuführen Platzhalter (stub) Platzhalter werden beim dynamischen Komponenten- und Integrationstest benötigt, um noch nicht implementierte Komponenten für die Testdurchführung zu ersetzen bzw. zu simulieren Dummy Platzhalter mit rudimentärer Funktionalität Mock Platzhalter mit erweiterter Funktionalität für Testzwecke (Logging, Plausibilitätsprüfung) Simulator Werkzeug, mit dem die Einsatz- bzw. Produktivumgebung nachgebildet wird Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Aufbau eines Testrahmens Point of Control: Schnittstelle, über die das Testobjekt mit Testdaten versorgt wird Testtreiber Testfall 1 Testfall 2 ... Testfall m Platzhalter PoC Stub 1 Stub 2 ... Stub n Testausgaben Vergleich & Protokoll Testobjekt PoO Point of Observation: Schnittstelle, an der die Reaktionen und Ausgaben des Testobjekts beobachtet und aufgezeichnet werden Laufzeitumgebung, Analysewerkzeuge, Simulatoren, Monitore Prozessor Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Fragestellungen beim Entwurf von Testfällen Wie viele Tests sind notwendig ? Welche Testdaten sollen verwendet werden ? Wie können fehler-sensitive Tests gefunden werden ? Wie vermeidet man redundante Test ? Wurden Testfälle übersehen ? Wann kann man mit Testen aufhören ? Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Dynamischer Test – Testentwurfsverfahren Testentwurfsverfahren (synonym: Testfallentwurfsverfahren) Eine Vorgehensweise, nach der Testfälle abgeleitet oder ausgewählt werden Black-Box (Spezifikationsorientierte) Testentwurfsverfahren Systematische Herleitung und Auswahl von Testfällen basierend auf einer Analyse der funktionalen oder nichtfunktionalen Spezifikation einer Komponente oder Systems ohne Berücksichtigung der internen Struktur. Keine Informationen über den Programmtext und den inneren Aufbau Beobachtet wird das Verhalten des Testobjekts von außen (PoO - Point of Observation liegt außerhalb des Testobjekts) Steuerung des Ablaufs des Testobjektes nur durch die Wahl der Eingabetestdaten (PoC - Point of Control liegt außerhalb des Testobjektes) White-Box (Strukturorientierte) Testentwurfsverfahren Systematische Herleitung und Auswahl von Testfällen basierend auf der internen Struktur einer Komponente oder Systems Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Black-box Test vs. White-box Test Eingangsdaten Ohne Kenntnis der Programmlogik abgeleitet Ausgangsdaten Black-box Test Testobjekt Eingangsdaten Mit Kenntnis der Programmlogik abgeleitet Ausgangsdaten White-box Test Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Übersicht Testentwurfsverfahren Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Testfall- und Testdatenermittlung Y = F (X) Wertebereiche Gültige Eingaben Ungültige Eingaben Parameter Ergebnisse Wertebereiche Gültige Ausgaben Ungültige Ausgaben X (1, ...,n) Y (1, ...,m) Funktion Äquivalenzklassenbildung Repräsentative Eingaben Gültige Dateneingaben Ungültige Dateneingaben Grenzwertanalyse Wertebereiche Wertebereichsgrenzen Entscheidungstabellentest Bedingungen und Aktionen Zustandsbezogener Test Komplexe (innere) Zustände und Zustandsübergänge Anwendungsfallbasierter Test Szenarien der Systemnutzung Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Äquivalenzklassenbildung Die Definitionsbereiche der Ein- und Ausgaben werden so in Äquivalenzklassen (ÄK) zerlegt (partitioniert), dass alle Werte einer Klasse äquivalentes Verhalten des Prüflings ergeben Wenn ein Wert der ÄK einen Fehler aufdeckt, wird erwartet, dass auch jeder andere Wert der ÄK diesen Fehler aufdeckt Wenn ein Wert der ÄK keinen Fehler aufdeckt, wird erwartet, dass auch kein anderer Wert der ÄK einen Fehler aufdeckt Aus jeder Äquivalenzklasse wird dann nur ein Repräsentant getestet! engl. „Partition Testing“ Äquivalenzklasse Definitionsbereich Ein beliebiger Wert der Äquivalenzklasse Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Äquivalenzklassenbildung Äquivalenzklassenbildung in der Schlangenschule Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Analytische Qualitätssicherung Strukturorientierter Test Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

White-Box Tests White-box Test Ausgangsdaten Eingangsdaten Mit Kenntnis der Programmlogik abgeleitet Ausgangsdaten White-box Test Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Beispiel: Kontrollflussgraph von ggT() 1 2-3 4-6 7 9-11 12 13 8 nstart nfinal public int ggt (int m, int n) { // pre: m > 0 and n > 0 // post: return > 0 and // m@pre.mod(return) = 0 and //... int r; if (n > m) { r = m; m = n; n = r; } r = m % n; while (r != 0) { n = r; r = m % n; } return n; } Block Block Block Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017 White-box Testtechniken

Strukturorientierte Testverfahren Kontrollflussbasiert Anweisungsüberdeckung (statement coverage): (C0-Überdeckung, alle Knoten des Kontrollflussgraphen) Entscheidungsüberdeckung (decision coverage): (C1-Überdeckung, Zweigüberdeckung, d.h. bei Knoten mit mehr als einer ausgehenden Kante alle diese Kanten) Pfadüberdeckung (path coverage): (C-Überdeckung, alle Pfade) Datenflussbasiert Alle Definitionen (all defs) Alle Definition-Benutzung-Paare (all def-uses) Bedingungsbasiert Einfache Bedingungsüberdeckung (branch condition testing) Mehrfachbedingungsüberdeckung (branch condition combination testing) Minimale Mehrfachbedingungsüberdeckung (modified branch condition decision testing) Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017 White-box Testtechniken

Beispiel: Anweisungsüberdeckung für ggt() 1 2-3 4-6 7 9-11 12 13 8 nstart nfinal public int ggt(int m, int n) { // pre: m > 0 and n > 0 // post: return > 0 and // m@pre.mod(return) = 0 and //... int r; if (n > m) { r = m; m = n; n = r; } r = m % n; while (r != 0) { n = r; r = m % n; } return n; } Pfad = (1, 2-3, 4-6, 7, 8, 9-11, 8, 12, 13) White-box Testtechniken

Beispiel: Entscheidungsüberdeckung für ggt() 1 2-3 4-6 7 9-11 12 13 8 1 2-3 4-6 7 9-11 12 13 8 public int ggt (int m, int n) { // pre: m > 0 and n > 0 // post: return > 0 and // m@pre.mod(return) = 0 and //... int r; if (n > m) { r = m; m = n; n = r; } r = m % n; while (r != 0) { n = r; r = m % n; } return n; } Pfad 1 = (1, 2-3, 4-6, 7, 8, 9-11, 8, 12, 13) Pfad 2 = (1, 2-3, 7, 8, 12, 13) White-box Testtechniken

Beispiel: Pfadüberdeckung für ggt() 1 2-3 4-6 7 9-11 12 13 8 1 2-3 4-6 7 9-11 12 13 8 ... 1 1 2-3 4-6 7 9-11 12 13 8 1 2-3 4-6 7 9-11 12 13 8 2-3 4-6 7 8 9-11 12 13 White-box Testtechniken

Testfall zur Anweisungsüberdeckung Pfad: (1, 2-3, 4-6, 7, 8, 9-11, 8, 12, 13) Logischer Testfall: { n > m  n % m ≠ 0  n % (n % m) = 0 ; ggt(m, n) } Konkreter Testfall: { m = 4, n = 6; 2 } 1 2-3 4-6 7 9-11 12 13 8 public int ggt(int m, int n) { int r; if (n > m) { r = m; m = n; n = r; } r = m % n; while (r != 0) { n = r; r = m % n; } return n; } m n r 4 6 ? Mit den Tabellen (als "Variablenspeicher")  können die Studierenden das als Übung per Hand ausführen, also „Computer spielen“ White-box Testtechniken

Testfall zur Entscheidungsüberdeckung Pfad: (1, 2-3, 7, 8, 12, 13) Logischer Testfall: {n  m  m % n = 0 ; ggt(m, n) } Konkreter Testfall: { m = 4, n = 4; 4 } 1 2-3 4-6 public int ggt(int m, int n) { int r; if (n > m) { r = m; m = n; n = r; } r = m % n; while (r != 0) { n = r; r = m % n; } return n; } 7 m n r 4 ? 8 9-11 12 13 White-box Testtechniken

White-Box Tests und Instrumentierung Bei den White-box Verfahren wird gefordert, dass bestimmte Programmteile zur Ausführung kommen bzw. Bedingungen unterschiedliche Wahrheitswerte annehmen Um den Test auswerten zu können, muss ermittelt werden, welche Programmteile bereits ausgeführt wurden und welche noch nicht zur Ausführung gekommen sind Dazu muss das Testobjekt an strategisch wichtigen Stellen vor der Testausführung instrumentiert werden Es werden zusätzlich Anweisungen wie z.B. Zähler eingebaut und mit Null initialisiert, die dann beim Durchlauf an den entsprechenden Stellen inkrementiert werden Ist ein Zähler auf Null geblieben, so sind die entsprechenden Programmteile nicht ausgeführt worden Instrumentierung größerer Programme nur mit Werkzeugen sinnvoll! White-box Testtechniken

Bewertung der White-Box-Techniken Überdeckungsmaß Leistungsfähigkeit Bewertung Anweisungsüberdeckung (C0) Niedrig Entdeckt knapp ein Fünftel der Fehler Notwendig, aber nicht hinreichend Entdeckt »dead-code« Mit anderen Verfahren kombinieren! Entscheidungsüberdeckung (Zweigüberdeckung, C1) Mittel, schwankt aber stark Entdeckt ca. 30% aller Fehler und ca. 80% der Kontrollfluss-Fehler Minimales Testkriterium Entdeckt nicht ausführbare Zweige Zielt auf Verzweigungen Bedingungsüberdeckung (C2) Umfasst i.Allg. nicht die Anweisungs- und Entscheidungsüberdeckung Mehrfach-Bedingungsüberdeckung Hoch Zielt auf komplexe Bedingungen Umfasst Entscheidungsüberdeckung Aufwand wächst stark Datenflusstest Mittel bis hoch, All c-uses ca. 50%, All p-uses ca. 34%, all defs ca. 25% (keine Berechnungsfehler!) Zielt auf Variablen-Verwendung c-uses findet viele Berechnungsfehler Kaum Tools verfügbar Pfadüberdeckung (C) Sehr hoch Entdeckt über 70% der Fehler In den meisten Fällen nicht praktikabel White-box Testtechniken

Analytische Qualitätssicherung Bewertung Testverfahren Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Bewertung Testverfahren Ergebnis Maßnahmen Anforderungen Systemkonzept Design Programm System Analyse Test Verifikation Validierung *** ** * Quelle: im wesentlichen nach Trauboth, „Software Qualitätssicherung“, Oldenbourg, 1996 Inspektionen Dokumente ( ) Die letzte Spalte wurde ergänzt. Die mannigfaltigen analytischen Maßnahmen (Prüfungen) müssen parallel zum Entwicklungsprozeß stattfinden. Sie lassen sich in die Gruppen: Inspektionen, Analysen, Test und Verifikation, Validierung einteilen. Unter Inspektionen versteht man informale oder formale manuelle Prüfungen und Untersuchungen von Dokumenten, Spezifikationen und Programmen, die sich in Reviews, Audits, Walk Throughs, Inspections und Peer Reviews gliedern lassen. Analysen lassen sich in vielfältiger Art durchführen, z. B. „statische Analysen“ wie Anforderungsanalyse, Anforderungsverfolgung, Algorithmus Analyse, Rundungsfehleranalyse, Strukturanalyse, Datenflußanalyse etc. sowie „dynamische Analysen, z. B. Software Leistungsanalyse, „sicherheitsnalysen“, z. B. Fehlerbaumanalyse, Ereignisablaufanalyse, Ausfalleffektanalyse, Ursache-Wirkungsanalyse, Echtzeit-Logik-Analyse. Ausführlich behandelt werden diese Techniken in Trauboth, Software Qualitätssicherung. Hier werden wir nicht näher darauf eingehen. Test wurde bereits definiert. Die Verifikation stellt die Übereinstimmung zwischen den wahren Qualitätsmerkmalen des Produkts und den spezifizierten Merkmalen fest. Dies gilt auch für Zwischenprodukte während des Entwicklungsprozesses. Validation stellt die Tauglichkeit des Produkts für seine vorgesehene betriebliche Aufgabe fest. *** ** * häufiger weniger häufig selten Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Zusammenfassung Testen hat zum Ziel, Fehler zu finden Testfälle sind stichprobenhafte Eingaben an das System mit definierten erwarteten Ergebnissen Testfall-Spezifikationsmethoden sind strukturierte Anweisungen zur Generierung von qualitativ hochwertigen Testfällen mit vielen Vorteilen gegenüber „zufälligen“ Tests Eine Teststrategie hat zum Ziel, die wichtigsten Fehler so früh wie möglich mit geringen Kosten zu finden Testen ist ein Prozess, der den gesamten Software-Lebenszyklus begleitet Der Testprozess basiert auf vier Eckpfeilern: Phasenmodell Passende Methoden Ressourcen und Infrastruktur Organisatorische Einbettung Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Lehrbuch zum Certified Tester - Foundation Level Andreas Spillner, Tilo Linz Basiswissen Softwaretest Aus- und Weiterbildung zum Certified Tester Foundation Level nach ISTQB-Standard 4. überarbeitete Auflage dpunkt.verlag, 2010 308 Seiten, Gebunden 39,90 Euro (D) ISBN 978-3-89864-642-0 Leseproben etc. unter: http://www.dpunkt.de/buecher/2679.html Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Nützliche Links Stickyminds http://www.stickyminds.com/ Portal mit vielen Informationen zum Test von SQE Web Site »Test obsessed« http://www.testobsessed.com/ Information for people with a passion for software testing Center for Software Testing Education & Research http://www.testingeducation.com/ Artikel zum Thema Testen sowie Vorlesungsunterlagen Atlantic Systems Guild http://www.systemsguild.com/ Artikel zum Testen von Anforderungen und vieles mehr Introduction to Software Testing http://www.cs.gmu.edu/~offutt/softwaretest/ Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017

Nützliche Links Brian Marick http://www.exampler.com/ Web Sites von bekannten Testfachleuten meist mit Literaturempfehlungen, Links, lesenswerten Artikeln, Tool-Hinweisen u.a. Brian Marick http://www.exampler.com/ James Bach http://www.satisfice.com/ Elisabeth Hendrickson http://www.qualitytree.com/ Hans Schäfer http://home.c2i.net/schaefer/ Bret Pettichord (ed.) http://www.io.com/~wazmo/qa/ ISTQB/GTB Test-Glossar http://www.german-testing-board.info/downloads/pdf/CT_Glossar_DE_EN_V21.pdf Software Engineering I VE 16: Qualitätssicherung II Version 17.04.2017