Analytische Qualitätssicherung: Von der Anforderung zum Testfall

Slides:



Advertisements
Ähnliche Präsentationen
Developing your Business to Success We are looking for business partners. Enterprise Content Management with OS|ECM Version 6.
Advertisements

Integrations- und Funktionstests im Rahmen des V-Modelles
Das V - Modell - Überblick
Phasen und ihre Workflows
Vorgehensmodell - Wasserfallmodell
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Qualitätssicherung von Software (SWQS)
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Qualitätssicherung von Software
Dynamische Testverfahren
LE LM 10 - LO3 Verfahren zur Qualitätssicherung
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Prüfung von Simulationsprogrammen – Integrations- und Funktionstests Inhalt Vom Einzeltest.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
Erfahrungen aus Tests komplexer Systeme
Funktionalität Vorhandensein vor Funktionen mit festgelegten Eigenschaften. Diese Funktionen erfüllen die definierten Anforderungen. Richtigkeit - Liefern.
ISO - Normen Inhalt Qualität im SE Der ISO 9000-Ansatz
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Aufgaben des Testens Vergleich des Verhaltens einer Software mit den an sie gestellten.
Testgetriebene Entwicklung
Beispiel: Wasserfallmodell als einfaches Phasenmodell
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Das V - Modell - Überblick
Husain Aljazzar, Software Engineering, Universität Konstanz
Testen, Analysieren und Verifizieren von Software
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Rational Unified Process (RUP) - Definitionen
Der Testprozess als Bestandteil des SE Prozesses:
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Fehlerabdeckung/ Regressionstest1 Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Fehlerabdeckung/ Regressionstest Vortragende:
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenbankentwurfsprozess
Die Bank von morgen - eine neue Welt für IT und Kunden? 23. Oktober 2001.
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Vorgehensmodelle: Schwergewichtige Modelle
Spezifikation von Anforderungen
Das Wasserfallmodell - Überblick
20:00.
„Küsse deine Freunde“ – FlexKom-App teilen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Eine Einführung in die CD-ROM
Zentralübung Automotive Software Engineering – Übungsblatt 8
TWS/Graph HORIZONT Produktionsüberwachung für “TWS for z/OS”
Syntaxanalyse Bottom-Up und LR(0)
Agenda 13: Begrüßung & Einführung in das Thema
Analyse von Ablaufdiagrammen
PROCAM Score Alter (Jahre)
Wasserfallmodell und Einzelbegriffe
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
PRO:CONTROL Ziel des Moduls Arbeitspakete
Symmetrische Blockchiffren DES – der Data Encryption Standard
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
Blackbox-Testverfahren
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Testvorbereitungen, Unit Test
Analyse der Laufzeit von Algorithmen
Numbers Greetings and Good-byes All about Me Verbs and Pronouns
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
Einführung in die Volkswirtschaftslehre, Mikroökonomie und Wettbewerbspolitik Lothar Wildmann ISBN: © 2014 Oldenbourg Wissenschaftsverlag.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Software - Testung ETIS SS05.
Vorlesung Software Engineering I
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,
 Präsentation transkript:

Analytische Qualitätssicherung: Von der Anforderung zum Testfall Vorlesung Software Engineering I Analytische Qualitätssicherung: Von der Anforderung zum Testfall Software Engineering I VE: Von der Anforderung zum Testfall Version 09.04.2017 1

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: Qualitätssicherung analytisch Version 09.04.2017 2

Analytische QS: Testen  Debugging Funktion im Laufversuch überprüfen (unsystematischer Ad-hoc-Test). Fehlerursache lokalisieren, analysieren und beheben. Konstruktiver Ansatz Testen: Fehlverhalten provozieren, reproduzieren und dokumentieren. Destruktiver Ansatz Wenn Entwickler von „Testen“ sprechen, meinen sie oft „Debugging“. Problem: Gleichzeitig konstruktiv und destruktiv zu denken, ist schwierig! Testen sollte grundsätzlich systematisch erfolgen! Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Fragestellungen bei der analytischen SW-QS Verifikation: Die Software ist richtig! Debugging: Warum ist die Software nicht richtig? Validation: Ist es die richtige Software? Test: Ist die Software richtig? Wie geht man systematisch und professionell vor ? Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Qualität: Fehler vs. Mangel Eine Situation kann nur dann als fehlerhaft eingestuft werden, wenn vorab festgelegt wurde, wie die erwartete, korrekte, also nicht fehlerhafte Situation aussehen soll. Ein Fehler ist die Nichterfüllung einer festgelegten Anforderung, eine Abweichung zwischen dem Ist-Verhalten (während der Ausführung der Tests oder des Betriebs festgestellt) und dem Soll-Verhalten (in der Spezifikation oder den Anforderungen festgelegt). Ein Mangel liegt vor, wenn eine gestellte Anforderung oder eine berechtigte Erwartung in Bezug auf einen beabsichtigten Gebrauch nicht angemessen erfüllt wird. Ein Mangel ist z.B. die Beeinträchtigung der Verwendbarkeit bei gleichzeitiger Erfüllung der Funktionalität oder die Nichterfüllung einer angemessenen Erwartung (z.B. Benutzerfreundlichkeit). Angelehnt an: DIN EN ISO 9000:2005 Qualitätsmanagementsysteme – Grundlagen und Begriffe. Beuth Verlag, Berlin, 2005 Unterscheidung wichtig für Auftragnehmer und Auftraggeber im Rahmen der Vertragsgestaltung Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

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

Ursachenkette für Fehler Jeder Fehler oder Mangel ist seit dem Zeitpunkt der Fertigstellung in der Software vorhanden. Er kommt jedoch erst bei der Ausführung der Software zum Tragen. Dieser Sachverhalts wird als Fehlerwirkung (failure) bezeichnet (auch Fehlfunktion, äußerer Fehler, Ausfall). Mögliche Ursachen einer Fehlerwirkung: Fehlerzustand (fault) in der Software (oder Hardware) (auch als Defekt, innerer Fehler bezeichnet) Fehlhandlung (error) einer Person Fehlerwirkungen können (selten) auch durch Höhenstrahlung, elektromagnetische Felder oder Hardwarefehler hervorgerufen werden. Angelehnt an: DIN 66271:1995 Informationstechnik - Software-Fehler und ihre Beurteilung durch Lieferanten und Kunden, Beuth Verlag, Berlin, 1995 Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Fehlhandlung - Definition Fehlhandlung (error) 1. Die menschliche Handlung (des Entwicklers), die zu einem Fehlerzustand in der Software führt. 2. Eine menschliche Handlung (des Anwenders), die ein unerwünschtes Ergebnis (im Sinne von Fehlerwirkung) zur Folge hat (Fehlbedienung). Problem (issue, incident) Verhalten anders als erwartet, aber Ursache noch unklar Fehlermaskierung Ist die Kompensierung eines Fehlerzustands durch andere, so dass keine Fehlerwirkung erkennbar ist. Ein Fehler wird also durch einen anderen Fehler verdeckt. Die menschliche Handlung, die zu einem falschen Ergebnis führt [nach IEEE 610]. Unwissentlich, versehentlich oder absichtlich ausgeführte Handlung oder Unterlassung, die unter gegebenen Umständen (Aufgabenstellung, Umfeld) dazu führt, dass eine geforderte Funktion eines Produkts beeinträchtigt ist. Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Zusammenhang Fehlerwirkung Fehlerzustand bzw. Defekt die zum Tragen kommt Fehlerzustand bzw. Defekt in einem Programm 1. Testen 2. Debugging 3. Standards, Normen, Ausbildung ... Fehlhandlung einer Person Behebung von aussen nach innen … Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Motivation Fehler in einer Software müssen gefunden werden, ehe diese an die Anwender oder Kunden ausgeliefert wird. Um diesem Ziel nahe zu kommen, muss ein effektiver und effizienter Testprozess vorhanden sein. Hierzu müssen geeignete Methoden und Werkzeuge ausgewählt und angewendet werden. Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 10 10

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: Qualitätssicherung analytisch Version 09.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: Qualitätssicherung analytisch Version 09.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: Qualitätssicherung analytisch Version 09.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 - 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: Qualitätssicherung analytisch Version 09.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: Qualitätssicherung analytisch Version 09.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: Qualitätssicherung analytisch Version 09.04.2017

Spitz-, stumpf- und rechtwinklige Dreiecke Werden spitz-, stumpf- und rechtwinklige Dreiecke zusätzlich berücksichtigt, ergeben sich insgesamt 47 Testfälle. Fazit: 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: Qualitätssicherung analytisch Version 09.04.2017

Was ist eigentlich Testen ? Testen ist ein Verfahren, um Vertrauen in die Realisierung eines Systems zu schaffen Aussagen über die Qualität des Systems zu machen Aber zuerst und vor allem, Fehler zu finden. Diese Aufgabe soll der Test So früh wie möglich So kostengünstig wie möglich Für die wichtigsten Fehler zuerst leisten Testarten werden unterschieden in Statisch (Reviews, Codeanalyse) Dynamisch (stichprobenhafte Ausführung des Testobjekts) Statisch: Software wird zum Test nicht ausgeführt, Dynamisch setzt Ausführbarkeit der Software voraus. Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 18 18

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 Dynamische Tests sind immer nur Stichproben! Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Gutes methodisches Wissen Planungsdaten Was braucht der Tester ? Gutes methodisches Wissen Empfehlung: ISTQB Certified Tester ® Planungsdaten Wann sind Anforderungen spezifiziert? Wann sind sie implementiert? Wann soll der Kunde sie zur Verfügung haben? Testbare Anforderungen identifizierbar Klar formuliert verfolgbar nachweisbar  gut beschriebene Anforderungen sind unverzichtbar! International Software Testing Qualifications Board Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 20

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: Qualitätssicherung analytisch Version 09.04.2017

Der Testprozess Testplanung und Steuerung Testanalyse und Testdesign Testrealisierung und Testdurchführung Testauswertung und Bericht Abschluss der Testaktivitäten Diese Aktivitäten werden z.T. zeitlich überlappend oder parallel ausgeführt. Der fundamentale Testprozess ist für jede Teststufe geeignet zu gestalten. Planung und Analyse und Design Realisierung und Durchführung Abschluss Beginn Ende Steuerung Auswertung und Bericht Separat – aber verzahnt Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 22

Entwicklungsprozess und Testprozess Teststufen im Entwicklungsprozess nach V-Modell Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Statischer Test Analytische Qualitätssicherung Software Engineering I VE: Qualitätssicherung analytisch Version 09.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: Qualitätssicherung analytisch Version 09.04.2017 25

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: Qualitätssicherung analytisch Version 09.04.2017 26

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 Peer Review oder Walk-Through . Es geht dabei um eine methodische Examinierung der Zwischenprodukte 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: Qualitätssicherung analytisch Version 09.04.2017

Wie viele "F" kommen im folgenden Text vor? 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: Qualitätssicherung analytisch Version 09.04.2017 28

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: Qualitätssicherung analytisch Version 09.04.2017 29

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: Qualitätssicherung analytisch Version 09.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 möglich (z.B. Programmtext, UML-Diagramme) Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 31

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 Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 32

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: Qualitätssicherung analytisch Version 09.04.2017 33

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 Polyspace http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 34

Dynamischer Test Analytische Qualitätssicherung Software Engineering I VE: Qualitätssicherung analytisch Version 09.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: Qualitätssicherung analytisch Version 09.04.2017 36

Die Ausführung dynamischer Tests erfordert ein ablauffähiges Programm 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, da sie oft nur Operationen/Dienste für andere Softwareeinheiten anbieten kein „Hauptprogramm“ zur Koordination des Ablaufes haben sich oft auf Operationen/Diensten anderer Softwareeinheiten abstützen 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: Qualitätssicherung analytisch Version 09.04.2017 37

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: Qualitätssicherung analytisch Version 09.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 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) Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 39

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 ? → Testentwurfsverfahren ! Software Engineering I VE: Qualitätssicherung analytisch Version 09.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. Also keine Informationen über den Programmtext und den inneren Aufbau Beobachtet wird nur 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 Informationen über die interne Struktur einer Komponente oder Systems Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 41

Testobjekt Übersicht Testentwurfsverfahren Black-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: Qualitätssicherung analytisch Version 09.04.2017

 Prozess und Methodik werden benötigt! Testfallentwurf (1) Planung und Analyse und Design Realisierung und Durchführung Abschluss Beginn Ende Steuerung Auswertung und Bericht Anforderungs- Definition Test Aus den Anforderungen müssen Testfälle abgeleitet werden! Alle Anforderungen müssen durch Testfälle ausreichend abgedeckt werden! Wie soll man vorgehen ?  Prozess und Methodik werden benötigt! Man braucht Prozess und Methodik! Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 43

Testfallentwurf (2) Planung und Analyse und Design Realisierung und Durchführung Abschluss Beginn Ende Steuerung Auswertung und Bericht Teststrategie Anforderungs- Definition Testentwurfstechniken Test Review Anforderungs- Definition Test Wahl der Testdesigntechniken wird durch die Teststrategie bestimmt Teststrategie bestimmt die Wahl der Testentwurfstechniken! Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 44

Bekannte Teststrategien Anforderungsbasiert Erfahrungsbasiert Intuitionsbasiert Änderungsbasiert Black-Box-basiert Risikobasiert White-Box-basiert Modellbasiert Geschäftsprozessbasiert Bekannte Testfallentwurfsmethoden. Besonders wichtig sind für systematischen Entwurf: Anforderungsbasiertes und Anwendungsfallbasiertes Testen Anwendungsfallbasiert Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 45

Bekannte Testfallentwurfsmethoden Äquivalenzklassenanalyse Entscheidungstabellen Ursache-Wirkungs-Graph Modellbasiert Klassifikationsbaummethode Test spezieller Werte Paarweise Kombination Betrachten werden nur die beiden fettgedruckten in dieser präsentation Bekannte Testfallentwurfsmethoden. Besonders wichtig sind für systematischen Entwurf: Äquivalenzklassenanalyse und Grenzwertanalyse! • Spezielle Werte: – Zahlenwert 0 – Leere Felder, Sequenzen und Zeichenreihen – Einelementige Felder, Sequenzen und Zeichenreihen – Null-Referenzen – Sonderzeichen (Steuerzeichen, Tabulator) Klassifikationsbaum =» Kombination von Äquivalenzklassen • Äquivalenzklassenmethode: Analyse und Spezifikation der Ein- und Ausgabedaten Annahme: jedes Objekt einer Klasse ruft selbe Fehler hervor wie jedes andere Objekt der Klasse Aus jeder Äquivalenzklasse wird dann nur ein Repräsentant getestet! – Gültige und ungültige Äquivalenzklassen unterscheiden: » Testdaten aus möglichst vielen gültigen Äquivalenzklassen => Minimierung der Testfälle für gültige Äquivalenzklassen » Ein Testdatum aus einer ungültigen Äquivalenzklasse in Kombination mit Werten ausschließlich aus gültigen Äquivalenzklassen • Grenzwertanalyse: Klassengrenzen werden als Testdaten verwendet. Grenzwertanalyse Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 46

Äquivalenzklassenmethode Testdatenbestimmung Äquivalenzklassenmethode Klassen von gleichartigen Eingabewerten anhand der Spezifikation => Ein Wert pro Klasse („Repräsentant“) genügt. Gültige und ungültige Äquivalenzklassen unterscheiden: Minimierung der Testfälle für gültige Äquivalenzklassen Ein Testdatum aus einer ungültigen Äquivalenzklasse nur in Kombination mit Werten aus gültigen Äquivalenzklassen anderer Parameter! Grenzwertanalyse Klassengrenzen werden als Testdaten verwendet Fehlerorientierte Erweiterung der Äquivalenzklassenbildung Engl. „Partition Method“, „Partition Testing“ Auswahl von Testdaten aus den Äquivalenzklassen:  Zufällig  Test spezieller Werte (z.B. 0, nil)  Grenzwertanalyse (Klassengrenzen werden als Testdaten verwendet) Grenzwerte, weil erfahrungsgemäss dort Fehler wahrscheinlicher sind. Grenzwerte müssen deshalb spezifiziert sein! Hohe Fehlerentdeckungsrate mit einer möglichst geringen Anzahl von Testfällen min_int max_int 1 -1 min_int-1 min_int+1 ... max_int-1 max_int+1 Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 47

Äquivalenzklassenbildung... ...in der Schlangenschule Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Äquivalenzklassen und Grenzwerte... Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Systemtest – Grundsätzliche Methodik Testfallentwurf ist grundsätzlich anforderungsbasiert ! Anforderungen müssen identifizierbar sein Jede Anforderung in mindestens einem Testfall abdecken! Traceability sicherstellen! So wenig Testfälle wie möglich spezifizieren Ein Testfall kann auch mehrere Anforderungen abdecken! Systematische, nachvollziehbare Methodik anwenden! Geeignete Methoden zur Testfallreduktion sind: Äquivalenzklassenanalyse Grenzwertanalyse Paarweise Kombination Testfälle generisch spezifizieren Testdaten und Testanweisung separieren! Dann sind sie wartbarer und übertragbar

 SRS STP Traceability OK ! Requirements Traceability Description [SRS.FEATURE.ID] Feature Name Description … Limitations Interfaces Default Settings STP [TS.FEATURE] Testsuite Name [TC.FEATURE.001] Testcase Name [TC.FEATURE.002] Testcase Name [TC.FEATURE.003] Testcase Name [TC.FEATURE.004] Testcase Name [TC.FEATURE.005] Testcase Name  Traceability OK ! Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Testfallentwurfs-Prozess SRS Testfall entwerfen und optimieren (TCS) Identifikation eines Testfalls (STP) Alle Anforderungen abgedeckt ? Iterativ-inkrementelles Vorgehen Erstellen des ersten Testfalls Alle Anforderungen müssen abgedeckt werden Eingangs und Ausgangsdokumente STP Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 52

1. Anforderungen in SRS reviewen Qualitätsansprüche an Anforderungen: Vollständigkeit Verständlichkeit (für alle Stakeholder) Korrektheit Eindeutigkeit Verfolgbarkeit Testbarkeit Gewichtbarkeit Aktualität Feedback an Requirements Engineer wenn Nachbesserung erforderlich Anforderungs- Definition Anforderungsreview Feedback Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

2. Testfälle ableiten im STP Traceability Anforderung  Testsuite/Testfall Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 54

Namenskonvention für Testfälle 3. Testfallverwaltung Namenskonvention für Testfälle notwendig bei einer großen Anzahl von Testfällen! TCT.FUNC.REQID.SQNR.TT (Short Description of Test Objective) TCT = Testcase Type (TS = Test Suite TC = Testcase FUNC = Abbreviation for the related requirement functionality REQID = sequential numbering of testcase, related to requirement numbering (123) SEQNR = sequential numbering of testcase, not related to requirement numbering (001) TT = Test type (C = Conformance, F = Functional, L = Load/Stress, combined with A = Automated and/or S = Smoke/Regression, ) Short Description with less than 50 characters Korrekte Testfallbeschreibung beachten  „This testcase verifies…“  „The system supports…“ (Requirements-Beschreibung!) TCS enthält Testfallbeschreibungen Alternativ: Testfallmanagementsystem Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

4. Testfälle anlegen in TCS Test case ID: <TC.CONF.001.F> Name: Device parameter configuration Req.-ID: HID.GUI.001 (TBL); HID.GUI.006 (ERR); HID.DEVCONF.001; HID.DEVCONF.002; HID.DEVCONF.003; HID.DEVCONF.004 Description: The test case verifies the correct functionality of the device configuration of the IP address, net mask, default gateway and name. It verifies the display of the error message due to the input boundaries. The test case uses the test data from table TD.001 and TD.002. The test set up consists of a computer, with at least 2 devices connected to, and the software. Test Steps Step Action Expected result 1 Click on first line First line is selected 2 Click on the properties symbol in the toolbar and fill in the following data: IP=192.168.0.1,GW=192.168.0.1, NM=255.255.255.0, Name = Device_1 Properties dialog is opened. Valid parameters can be set; invalid parameters produce the display of an error message. 3 IP=10.10.0.1,GW=0.0.0.0, NM=255.255.0.0, Name = Device_1 Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 56

5. Testfälle entwerfen und optimieren Testfälle inhaltlich im Detail spezifizieren (TCS) Anwendung von Äquivalenzklassenbildung (gültige und ungültige!) Grenzwertanalyse Paarbildung …. Testfälle inhaltlich optimieren z.B. Datengetriebenen Ansatz anwenden Testfälle zusammenfassen Zum abdecken mehrerer Anforderungen Zum abdecken von Use-Case Szenarien Optimierung der Testfallanzahl Jede Äquivalenzklasse sollte möglichst wenig oft in Testfällen vorkommen, im Idealfall nur einmal je Äquivalenzklasse bzw. je Klassengrenze bei Grenzwertanalyse. Testfälle, welche nur Klassen bzw. Klassengrenzen testen, die auch von anderen Testfällen getestet werden, können gestrichen werden. Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 57

6. Optimierter Testfall z.B. Testfallbeschreibung mit separierten Testdaten Test case ID: <TC.CONF.001.F> Name: Device parameter configuration Req.-ID: HID.GUI.001 (TBL); HID.GUI.006 (ERR); HID.DEVCONF.001; HID.DEVCONF.002; HID.DEVCONF.003; HID.DEVCONF.004 Description: The test case verifies the correct functionality of the device configuration of the IP address, net mask, default gateway and name. It verifies the display of the error message due to the input boundaries. The test case uses the test data from table TD.001 and TD.002. The test set up consists of a computer, with at least 2 devices connected to, and the software. Test Steps Step Action Expected result 1 Click on a line x in device list Line x is selected 2 Click on the properties symbol in the toolbar and fill in dataset of TD.001 Properties dialog is opened. Valid parameters can be set; invalid parameters produce the display of an error message. Datengetriebener Testfallentwurf: Trennung von Testfällen und Testdaten ▪Wiederverwendbarkeit der Testfälle und Testdaten getrennt voneinander ▪Die Wartbarkeit und Lesbarkeit der Testfälle und Testdaten wird erhöht. ▪Testfälle und Testdatenmengen können in m:n Verwendung stehen. ▪Testfälle können definiert werden, auch wenn die konkreten Testdaten noch nicht bekannt sind. ▪Eine Automatisierung der Testfälle ist leichter herzustellen bzw. es ergeben sich besser zu wartende automatisierte Tests. Strategie: Deterministisch versus Random Test data:  TD.001 Dataset IP address Default gateway Net mask Name 01 192.168.0.254 192.168.0.1 255.255.255.0 X_%&/()=? 02 192.168.0.0 Device_1 03 10.10.0.1 1.2.3.4 255.255.0.0 XDeviceY Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 58

Voraussetzung für Automatisierbarkeit: 7. Automatisierung von Testfällen Separation von Testcode und Testdaten führt zu Besserer Wartbarkeit Testdaten und Testcode können unabhängig voneinander geändert werden Besserer Optimierbarkeit der Testdaten In Tabellenform Einfacher Automatisierbarkeit Testcode ist praktisch schon „Pseudocode“ Testdaten-Tabelle kann vom Automatisierungsskript eingelesen und abgearbeitet werden Datengetriebener Testfallentwurf: Trennung von Testfällen und Testdaten ▪Wiederverwendbarkeit der Testfälle und Testdaten getrennt voneinander ▪Die Wartbarkeit und Lesbarkeit der Testfälle und Testdaten wird erhöht. ▪Testfälle und Testdatenmengen können in m:n Verwendung stehen. ▪Testfälle können definiert werden, auch wenn die konkreten Testdaten noch nicht bekannt sind. ▪Eine Automatisierung der Testfälle ist leichter herzustellen bzw. es ergeben sich besser zu wartende automatisierte Tests. Strategie: Deterministisch versus Random Voraussetzung für Automatisierbarkeit: System muss automatisierbare PoC und PoO für die zu testende Funktionalität bereitstellen! Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 59

Resultierende Tests sind: Ergebnis Resultierende Tests sind: Effizient und Effektiv Strukturiert Nachvollziehbar Übersichtlich Übertragbar und Wartbar Effizienz und Effektivität - Ergebnis eines methodischen Testentwurfs Fehlerzustände werden sicherer erkannt als durch Spezifikation von Ad- Hoc-Testfällen Unabhängig von der Person, die die Testfälle spezifiziert und ausführt. Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017 60

Anforderungsbasierung ist IMMER die minimale Teststrategie Fazit Anforderungsbasierung ist IMMER die minimale Teststrategie Gut beschriebene Anforderungen sind Voraussetzung Systematische Methodik macht Testfallentwurf und Testautomatisierung effizient Teststrategie Anforderungs- Definition Testentwurfstechniken Test Review Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Testfall-Managementsystem Vorlesung SWE I Testfall-Managementsystem Software Engineering I VE 20: Von der Anforderung zum Testfall Version 09.04.2017

Traceability Matrix Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017

Requirements Coverage & Traceability Software Engineering I VE: Qualitätssicherung analytisch Version 09.04.2017