9.1 Grundlagen Nochmals: Verifikation und Test in der SW-Entwicklung. Existenz von Fehlern. Herausforderungen. 9. Kapitel Test von Software

Ähnliche Dokumente
Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Programmiertechnik II

Testen mit JUnit. Motivation

Testen Prinzipien und Methoden

T1 - Fundamentaler Testprozess

Erfahrungen mit Hartz IV- Empfängern

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Informationen zur Verwendung von Visual Studio und cmake

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Besprechung Übung 1 & Vorstellung Übung 2

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

«Initialpfad / teilnehmerspezifische Pfade» Kurzanleitung

Mastermind. Testplan. Hochschule Luzern Technik & Architektur. Programmieren 2 FS12. Gruppe 10

Weiterbildungen 2014/15

,$ -. "+0 *+*+ ! / -#$%$. #$%'' $ () 1 2$ #$%$! 1 2$3 )!

Kulturelle Evolution 12

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Informationssystemanalyse Lebenszyklusmodelle 3 1. Lebenszyklusmodelle sollen hauptsächlich drei Aufgaben erfüllen:

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

T2 Fundamentaler Testprozess

Speicher in der Cloud

Java: Vererbung. Teil 3: super()

Abschluss Version 1.0

Software Engineering in der Praxis

The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode

Online Intelligence Solutions TESTABLAUF. 7 Schritte für ein erfolgreiches Testing.

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 DYNAMISCHER TEST. Whitebox Testen mit JUnit

Softwaretechnikpraktikum SS Qualitätsmanagement I. 1. Überblick. Qualität. Qualitätsmerkmal

1 topologisches Sortieren

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Test zur Bereitschaft für die Cloud

Testen im Software- Entwicklungsprozess

Einführung in die Programmierung

Arbeit zur Lebens-Geschichte mit Menschen mit Behinderung Ein Papier des Bundesverbands evangelische Behindertenhilfe e.v.

Qualitätsmanagement im Projekt

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

Whitebox-Tests: Allgemeines

Dokumentenverwaltung im Internet

Im Fragebogen wird häufiger nach pflegenden Angehörigen gefragt. Wir verstehen in diesem Kontext unter pflegenden Angehörigen Personen, die

Impulsvortrag auf der 22. TAV; 18. Februar 2005, Bremen Zuordnung von Anforderungen und Tests (Tracing)

Quality Point München. Testtools

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Statuten in leichter Sprache

1 Mathematische Grundlagen

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Bewerbungsformular für die 8. Ausschreibungsrunde Förderung ab Schuljahr 2016/17

Einsatz automatischer Testdatengenerierung im modellbasierten Test

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Nutzung und Akzeptanz von QR-Codes

HP Software für SAP Solutions

Validierung und Verifikation

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

Produktvorstellung: CMS System / dynamische Webseiten. 1. Vorwort

SO WERDEN LÖSUNGEN HÖCHSTEN ANSPRÜCHEN

Software - Testung ETIS SS05

Dominik Stockem Datenschutzbeauftragter Microsoft Deutschland GmbH

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Kreativ visualisieren

SWOT Analyse zur Unterstützung des Projektmonitorings

Broadcasting mit. WhatsApp. Ein neues Tool für die Jugendarbeit.

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Wir machen neue Politik für Baden-Württemberg

Der Kunde zahlt die Gehälter.

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Unigraphics Schnittstelle entfernen

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Ein Tool für automatische Performancetests von Java3D Applikationen

Datenexport aus JS - Software

JetSym. Programmierung in Hochsprache ST nach IEC We automate your success.

Umfrage. Didaktischer Kommentar. Lernplattform

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

SEP 114. Design by Contract

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Abschnitt 12: Strukturierung von Java-Programmen: Packages

conuno - WIR GESTALTEN FÜR SIE Development Services

Testen und Testautomatisierung in agilen Projekten

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Konzepte der Informatik

Integrierte und automatisierte GUI-Tests in Java

Erstellen der Barcode-Etiketten:

Grundbegriffe der Informatik

die wichtigsten online-tools für augenoptiker websites

Grundlagen der Theoretischen Informatik, SoSe 2008

Validierung und Verifikation!

Objektorientierte Programmierung für Anfänger am Beispiel PHP

WIE MACHT MAN EINE INVESTORENPRÄSENTATION?

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Schülerstudierende in Informatik-Grundvorlesungen an der Universität Göttingen

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Manuel Schmalz. Abteilungsleiter Vertragsmanagement. Düsseldorf,

Bei der Focus Methode handelt es sich um eine Analyse-Methode die der Erkennung und Abstellung von Fehlerzuständen dient.

Um das Versenden von Anhängen an s zu ermöglichen, wurde der Assistent für die Kommunikation leicht überarbeitet und wo nötig verbessert.

Hinweise in Leichter Sprache zum Vertrag über das Betreute Wohnen

Transkript:

Verlässliche Systeme Wintersemester 2015/2016 Nochmals: Verifikation und Test in der SW-Entwicklung Verlässliche Systeme Fehler Test 9. Kapitel Test von Software Vorstellung des Kunden Formale Spezifikation Anforderungsspezifikation Programmentwurf keine Fehler gefunden Prof. Matthias Werner Professur Betriebssysteme Verifikation korrekt Fehler WS 2015/2016 M. Werner 2 / 22 osg.informatik.tu-chemnitz.de Existenz von Fehlern Herausforderungen Merke Softwaretests beweisen nie die Korrektheit von Programmen, sondern höchstens die Existenz von Fehlern! Trotzdem werden Software-Tests häufiger eingesetzt als Software-Verifikation: Zu großer Aufwand für Verifikation Mangelnde Fähigkeit/Kenntnis der Verifikationsmethoden Keine klare Spezifikation (Programmierer weiß ja, was gemeint ist...) Neue Technologien vergrößern (auch) oft die Komplexität des Testens Dynamisches Verhalten Nebenläufige Ausführung Komplexe Sprachen Paradigmen wie Objektorientierung Nachnutzung getesteter Komponenten in einem anderen Kontext Vererbung... In diesem Kapitel Überblick Ansätze Testautomatisierung WS 2015/2016 M. Werner 3 / 22 osg.informatik.tu-chemnitz.de WS 2015/2016 M. Werner 4 / 22 osg.informatik.tu-chemnitz.de

Grundidee Erzeuge irgendwelchen Input Lasse Programm laufen Vergleiche Ergebnis mit dem erwarteten Ergebnis Fehler-Test-Korrelation Die Wahrscheinlichkeit für die Existenz von Fehlern nimmt nicht mit der Zahl der gefundenen Fehler ab Probleme: Welcher Input? Abdeckung? Wann genug? es ist i.d.r. unmöglich, alle möglichen Eingabevarianten zu testen (Komplexität!) Ausnahme: erschöpfendes Testen Testen findet üblicherweise spät im Projekt statt Achtung: Abstumpfungsgefahr Quelle: G.J. Myers, The Art of Software Testing, John Wiley & Sons (2004) WS 2015/2016 M. Werner 5 / 22 osg.informatik.tu-chemnitz.de WS 2015/2016 M. Werner 6 / 22 osg.informatik.tu-chemnitz.de Frühes Testen Je später ein Fehler entdeckt wird, deso höher sind die entstehenden Kosten Beispiel: Kostenfaktor für Fehleraufdeckung in verschiedenen Phasen des Entwicklungsprozesses * Phase im Entwicklungsprozess Spezifikation 1 Fehler in... Spezifikation Entwurf Implementation Entwurf 3 1 Implementation 5 10 10 1 Systemtest 10 15 10 Post-Release 10 100 25 100 10 25 Whitebox vs. Blackbox Whitebox Unit-Tests Konzept: Bei möglichst kleinen Komponenten möglichst viele Pfade testen Vorteil: Kenntnis interner Vorgänge bringt höchste Fehleraufdeckung Nachteil: Test werden i.d.r. vom Programmierer entworfen (jemand anders durchschaut den Code nicht) Aber: Jemand, der einen Fehler macht, erkennt ihn selten (Vorbelastung) * Quelle: STEVE MCCONNELL, Code Complete (2nd ed.),microsoft Press, 2004 WS 2015/2016 M. Werner 7 / 22 osg.informatik.tu-chemnitz.de WS 2015/2016 M. Werner 8 / 22 osg.informatik.tu-chemnitz.de

Whitebox vs. Blackbox (Forts.) Whitebox vs. Blackbox (Forts.) Blackbox Funktionstests Konzept: Übereinstimmung mit externer Spezifikation testen Vorteil: Tester werden nicht durch die Kenntnis des internen Designs beeinflusst Nachteile: Explizite Spezifikation wird benötigt Deckt i.d.r. nur einen kleinen Teil der möglichen Fälle ab In der Praxis wird meist eine Mischung aus Blackbox- und Whitebox-Test angewendet Graybox Testing: Blackbox mit zusätzlichen Informationen über verwendete Algorithmen interne Datenstrukturen Modul-Strukturen und -abhängigkeiten WS 2015/2016 M. Werner 9 / 22 osg.informatik.tu-chemnitz.de WS 2015/2016 M. Werner 10 / 22 osg.informatik.tu-chemnitz.de Generierung von Testfällen und -kriterien Software testing still remains an art, since the first day. We still don t know how to make it a science. Dies gilt insbesondere für die Generierung von Testfällen Problem: Vorwissen Vorwissen hilft kritische Fälle zu erkennen und damit Fälle einzuschränken Vorwissen verhindert die Erkennung kritischer Fälle und eleminiert sie In der Regel ist die Komponente oder die Voraussetzung fehlerhaft, an der keiner gezweifelt hat. J. PAN, CMU Software-Engineering Ableitung vom FINAGLES 3. Korollar zu MURPHYS Gesetz WS 2015/2016 M. Werner 11 / 22 osg.informatik.tu-chemnitz.de Generierung von Testfällen und -kriterien (Forts.) Unabhängig von der nötigen Intuition und Kreativität gibt es Standardherangehensweisen, z.b.: WB BB Idea Szenario-basiertes Testen wähle Testfälle nach Einsatzszenarien aus Risikobasiertes Testen wähle Testfälle nach Auswirkung Bedingungstabellen beschreibe Ursache-Wirkungskorrelation mit Hilfe von Bedingungstabellen Pfadabdeckung wähle Testfälle so, dass jeder Ausführungspfad abgedeckt ist Statementabdeckung wähle Testfälle so, dass jedes Statement abgedeckt ist Branch-Abdeckung wähle Testfälle so, dass bei jeder Verzweigung jeder Weg mindestens einmal getestet wird Datenflußanalyse teste entlang des Datenflusses Grenzwertanalyse teste beide Seiten von Unstetigkeitspunkten All pairs teste für eine Menge von Features alle Zweierkombinationen Adhoc-Tests nutze Intuition und gesunden Menschenverstand WS 2015/2016 M. Werner 12 / 22 osg.informatik.tu-chemnitz.de

Testphasen Integrationstest Systemtest Idee: Stückweise Vergrößerung des Testobjekts Releasetest Integrationstest Komponententest Hauptansätze: Top-down Integrationstest Bottom-up Integrationstest Regressionstest typischerweise durchgeführt von: Entwickler Unabhängigen Testteams WS 2015/2016 M. Werner 13 / 22 osg.informatik.tu-chemnitz.de WS 2015/2016 M. Werner 14 / 22 osg.informatik.tu-chemnitz.de Top-down Integrationstest Bottom-up Integrationstest Steuerprogramm wird zuerst getestet Module werden nacheinander integriert Schwerpunkt auf Interfaces Vorteile: Es wird kein Test-Treiber (Integrationsframework) benötigt Interface-Fehler werden früh aufgedeckt Nachteile: Es werden Module-Stubs benötigt Kritische Komponentenfehler werden spät erkannt Frühe Erkennung der Funktionsfähigkeit Schwerpunkt auf (Modul-)Funktionalität und Performance Vorteile: Es werden keine Module-Stubs benötigt Kritische Komponentenfehler werden früh erkannt Nachteile: Es werden Test-Treiber (Integrationsframework) benötigt Interface-Fehler werden spät erkannt WS 2015/2016 M. Werner 15 / 22 osg.informatik.tu-chemnitz.de WS 2015/2016 M. Werner 16 / 22 osg.informatik.tu-chemnitz.de

Regressionstest Nichtfunktionale Eigenschaften Testet die Auswirkungen von neuen Änderungen auf gesamten bisher integrierten Code Gemeinhin werden zwei Testmengen definiert: Gesamttest und kritische Untermenge Gesamttest wird gelegentlich durchgeführt Kritische Untermenge bei jedem Durchlauf Vorteil: Schnellere Eingrenzung von Fehlerursache Nachteil: Es ist schwer zu entscheiden, was zur kritischen Untermenge gehört Neben der funktionalen Korrektheit spielen auch nichtfunktionale Eigenschaften eine Rolle Testkategorien in diesem Bereich: Performance-Tests Stresstests Lasttests Speichererschöpfungstests Sicherheitstest Robustheitstest 1 WS 2015/2016 M. Werner 17 / 22 osg.informatik.tu-chemnitz.de Automatisierung WS 2015/2016 M. Werner ADLT helps in the 18 implementation / 22 of new software osg.informatik.tu-chemnitz.de by generating header files containing declarations of the elements in the specified component the constituent functions, variables, constants, and type definitions. Since ADL specifications are not embedded in the components to be tested or documented, ADLT can be used with either new software or existing, already-compiled components. What ADLT Is Not Beispiel: ADL While ADLT is a powerful unit-testing tool, it cannot do all tasks associated with testing. ADLT was specifically designed not to be a test harness or debugger. ADLT relies upon the Test Environment Toolkit (TET) test harness to provide test management, building, execution, and clean-up structure. Assertion Definition Language (ADL) Translation System Testen beinhaltet häufig wiederkehrende Vorgänge Nur kleinere Projekte sollten zu Fuß getestet werden Formal Specification of Software Component (ADL File) Formal Test Data Description (TDD File) Automatisierung des Testvorganges Verschiedene Teile des Testvorganges können (semi-)automatisiert werden: ADLT Generierung von Test(mustern) Instrumentierung des Codes Testdurchführung und -protokollierung Testauswertung Es existieren jede Menge Tools, die eine Automatisierung von einer oder mehrere Phasen des Testvorgangs unterstützen Liste auf http://www.testingstuff.com/tools.html Implementation of Functions Under Test Test Code Test Program Data Factory and Auxiliary Functions Programmer-Supplied File ADLT-Generated File Executable File WS 2015/2016 M. Werner 19 / 22 osg.informatik.tu-chemnitz.de Figure 1-1 High-level view of ADLT test generation. WS 2015/2016 M. Werner 20 / 22 osg.informatik.tu-chemnitz.de

Beispiel: Testdurchführung in Java Verschiedene Tools, z.b. JUnit, TestNG, JTiger Dabei ist JUnit am ältesten und daher auch vermutlich am bekanntesten und hat die meisten Erweiterungen/Plugins, z.b. Cactus, DJUnit, Infinitest Vorgehen: Asserts werden abgefangen und ausgewertet Nutzung von Java-Annotationen zur Definition und der Verwebung von Test-Routinen Automatische Testdurchführung Integration in Eclipse Test von Ausnahmebedingungen Beispiel: Testdurchführung in Java (Forts.) Zusicherung (Assertion): import java.util.*;... public void test average simple () { Vector nums = new Vector(); nums.add(new Integer(3)); asserttrue(mathops.average(nums) == 3.0); } Exception-Test: @Test(expected= IndexOutOfBoundsException.class) public void empty() { new ArrayList<Object>().get(0); } mehr in der Übung WS 2015/2016 M. Werner 21 / 22 osg.informatik.tu-chemnitz.de WS 2015/2016 M. Werner 22 / 22 osg.informatik.tu-chemnitz.de