Programmieren 2 04 Testen und Testautomatisierung

Ähnliche Dokumente
Zwischenablage (Bilder, Texte,...)

Programmiertechnik II

Lehrer: Einschreibemethoden

Proofreading Was solltest Du beim Korrekturlesen beachten?

Testen mit JUnit. Motivation

SEP 114. Design by Contract

Statuten in leichter Sprache

ecaros2 - Accountmanager

Objektorientierte Programmierung

Anleitung zum Öffnen meiner Fotoalben bei web.de

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

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Grundlagen der Theoretischen Informatik, SoSe 2008

Umgang mit Schaubildern am Beispiel Deutschland surft

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Erfahrungen mit Hartz IV- Empfängern

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Etikettendruck mit Works 7.0

Erstellen von x-y-diagrammen in OpenOffice.calc

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

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

50 Fragen, um Dir das Rauchen abzugewöhnen 1/6

Die SPD und die Grünen machen im Niedersächsischen Landtag. Alle Menschen sollen in der Politik mitmachen können.

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

So funktioniert Ihr Selbstmanagement noch besser

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Anleitung über den Umgang mit Schildern

Inhaltserzeichnis. Datenübernahme

Primzahlen und RSA-Verschlüsselung

Bedienungsanleitung Rückabwicklungsrechner

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Arbeiten mit UMLed und Delphi

Kreativ visualisieren

1 Vom Problem zum Programm

Bedienungsanleitung Anrufbeantworter für digitale Telefone Alcatel 4039

Mediator 9 - Lernprogramm

Jetzt neu: Online Reporting Schritt für Schritt durch das Online Reporting (OLR) Online Liedmeldung

1 topologisches Sortieren

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Kulturelle Evolution 12

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Software Engineering Klassendiagramme Assoziationen

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Speicher in der Cloud

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

Dieser Text beschreibt die Neuerungen von DaNiS und die Vorgehensweise beim DaNiS-Update.

AutoTexte und AutoKorrektur unter Outlook verwenden

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

1.1.1 Test Überschrift

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

Internet online Update (Mozilla Firefox)

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

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

Deutsches Rotes Kreuz. Kopfschmerztagebuch von:

Handbuch für Redakteure

teamsync Kurzanleitung

1.Unterschied: Die Übungen sind nicht von deinem Mathe-Lehrer...

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Umzug der abfallwirtschaftlichen Nummern /Kündigung

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Umfrage. Didaktischer Kommentar. Lernplattform

Erfolgsmeldungen im Praxisbetrieb

Print2CAD 2017, 8th Generation. Netzwerkversionen

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

Windows Server 2012 RC2 konfigurieren

INTEGRA Finanzbuchhaltung Jahresabschluss Jahresabschluss 2014

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

Senioren ans Netz. schreiben kurze Texte. Lektion 9 in Themen aktuell 2, nach Übung 7

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Unit Testing mit JUnit. Dr. Andreas Schroeder

Zählen von Objekten einer bestimmten Klasse

Free your work. Free your work. Wir wollen Ihnen die Freiheit geben, sich auf Ihr Geschäft zu konzentrieren.

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Bevor Sie mit dem Wechsel Ihres Sicherheitsmediums beginnen können, sollten Sie die folgenden Punkte beachten oder überprüfen:

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Adobe Photoshop CS2, CS3, CS4, CS5 mit Auto-SoftProof-Ansicht

Das Festkomitee hat die Abi-Seite neu konzipiert, die nun auf einem (gemieteten) Share Point Server

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Aufklappelemente anlegen

Wie funktioniert das WWW? Sicher im WWW

Enigmail Konfiguration

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Datenbanken Microsoft Access 2010

MINDMAP. HANDREICHUNG (Stand: August 2013)

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

LÖSUNGEN - LESEVERSTEHEN

Transkript:

Programmieren 2 04 Testen und Testautomatisierung Bachelor Medieninformatik Sommersemester 2016 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1

Das Programm funktioniert super!...denkt jeder Programmierer, der etwas fertiggestellt hat Wenn er selbst nicht ordentlich testet, finden andere die Fehler im ungünstigsten Fall der Kunde im schlimmsten Fall die Kriminologen und Gerichtsmediziner 2

Testen wozu? Programmieren erfordert Sorgfalt! Auch winzige Fehler haben Folgen Beispiel Mariner 1 Fehler werden oft erst später entdeckt Beispiel Ariane 5 Was leistet Testen? Fehlerhaftigkeit des Codes beweisen Korrektheit des Codes beweisen? à NEIN aber die Abwesenheit vorhersehbarer Schwachstellen nachweisen 3

Mariner 1 Venussonde Mariner 1 (1962) nach 290 sec. wegen Flugbahnabweichung kontrolliert zerstört FORTRAN-Code: DO 5 K = 1. 3 statt DO 5 K 1, 3 àdo5k = 1.3 nutzlose Variablenzuweisung statt Schleife!! Beispiel aus Vingenshow, Objektorientiertes Testen 4

Ariane 5 Bewährte Trägerrakete Ariane 5 (1996) deutlich schubstärker als ihre Vorgänger Fehlerhafte Flugbahnkorrektur um 20 führte zur Sprengung nach 30 sec ADA-Code: Viele Jahre lang zuverlässig funktioniert à keine neue Testreihe Erhöhte Schubstärke führte zum Zahlenüberlauf, der nicht abgefangen wurde Beispiel aus Vingenshow, Objektorientiertes Testen 5 5

Test-Propheten Testen erfordert Phantasie und Erfahrung "kann nicht passieren" ist eine Tabu-Aussage! Es gibt das "Gespür" des Testers aber darauf kann man sich nicht verlassen! bei einer Probefahrt fallen auch nicht alle Mängel auf... Am Ende hilft nur systematisches Testen: Testwert-Tabellen Testwert-Generatoren Sammeln von Testfällen 6

Testtechniken Manueller Test: Eingabe / Aufruf machen "gucken", ob das erwartete Verhlaten vorliegt. Vorteil: Inutition deckt Unerwartetes auf Problem: Abdeckung, Wiederholbarkeit, Ermüdung Verhaltensbeobachtung: Testausgaben in den Code streuen Ablauf im Debugger nachverfolgen und bewerten Vorteil: Testausgaben und Breakpoints wiederverwendbar Problem: Aufwand und Aufmerksamkeit 7 7

Automatisierter Test Die Testfälle werden programmiert Die Entscheidung über Gelingen und Scheitern wird ebenfalls automatisiert Nachteil: Programmieraufwand Vorteil: Beliebig viel beliebig oft wiederholbar Programmieraufwand Wiederholbarkeit 8

Testen während der Entwicklung! Analyse Spezifi-kation Entwurf Im veralteten Wasserfallmodell der Software- Entwicklung kommt dersystemtest ganz am Ende. Top oder Flop, wenn alles schon getan ist! viele Fehler "im Inneren" bleiben unentdeckt Heute wird während der Entwicklung immer das ganze System getestet Systemtest Implementierung Inbetriebnahme 9 9

Nicht nur das Gesamtsystem testen! Analyse Spezifi-kation Entwurf Beispiel Filmregister: Außenverhalten im Test richtig Eintragen und Finden klappt in den Tests trotz fehlerhafter innerer Struktur: "A beautiful Mind" ungleich "A Beautiful Mind" zwei Einträge, die nicht gemeinsam aktualisiert werden irgendwann später fliegen die Fehler auf! Systemtest Implementierung Inbetriebnahme 10 10

Modultests mit main-methoden Jede Klasse besitzt eine main-methode zum Modultest Testen aller exportierten Methoden Testen der inneren Datenstuktur Baut auf andere Klassen auf, die als getestet angenommen werden SupportLine InputReader Responder ResponseMap MapElement 11 11

Testautomatisierung mit JUnit Ein JUnit-TestCase ist eine Klasse, die eine andere Klasse testet TestCase enthält Tests Methoden, deren Ergebnis spezifiziert ist und von JUnint überprüft wird: TestCase enthält Fixtures, mit denen Testbedingungen geschaffen (und aufgelöst) werden: 12 12

Benutzung in Eclipse TestCase erzeugen: New > JUnit TestCase Name = <Klasse>Test Paket = tests TestCase ausführen mit Run As JUnit Test 13 13

SupportLine: MapElement Forderung: Ein MapElement darf nicht zwei Null-Parameter haben! gescheitert (rot) TestCase Test scheitert es wird keine Exception geworfen 14

Gelungener Test "Repariert" (als Beispiel, über den Sinn kann man streiten) gelungen (grün) Test wiederholen (Rerun) 15 15

Weiter mit der ResponseMap Contains sollte beliebige Strings korrekt verarbeiten, aber keinen leeren und keinen null-key akzeptieren! 16 16

Was klappt nicht bei "contains"? Datenstruktur ist ArrayList<MapElement> responselist Aktuelle Lösung Korrektur: repariert 17 17

Zweites Problem: leerer String als Key Leeren String abfangen: Hinweis: Die Verwendung von unchecked Exceptions ist zunächst einfacher, muss aber später noch einmal überdacht werden! 18 18

Wird ein (null,null)-eintrag verhindert? put(null, null) sollte Exception werfen: aber: Grund: irgendwann mal "ausgeblendet" 19 19

Regressionstest Problem im letzten Beispiel: Vor dem Testlauf von ResponseMap hätte ein Testlauf für MapElement durchgeführt werden müssen! Was gestern noch funktionierte, kann heute schon Probleme mit sich bringen (Ariane 5!) Abhilfe: Nach jeder Änderung ALLES durchtesten. Ein Hoch auf die Testautomatisierung... Regressionstest = Nach jeder Veränderung wieder auf die alten Tests zurückkommen. 20

ALLES durchtesten Test-Suiten Alle Tests von Hand nacheinander laufen zu lassen, ist mühsam fehlerträchtig Automatisierung als Test-Suite-Klasse üblicherweise AllTests genannt: 21 21

JUnit im Überblick Test Case (nicht annotiert): Klasse mit einer Menge von Tests (ohne Reihenfolge!) und Fixtures typischerweise einer Klasse zugeordnet Fixture ("Inventar") Operationen vor und nach einem Test bzw. allen Tests eines Testcase @Before, @BeforeClass, @After, @AfterClass Test @Test Methode, deren Ergbenis von JUnit überprüft wird mit expects, assert, fail Gelngen / Scheitern spezifiziert TestSuite @RunWith(Suite.class) @Suite.classes({...}) Klasse heißt typischerweise AllTests und ist leer. TestCases werden in der gegebenen Reihenfolge durchgeführt 22 22

JUnit-Test-Annotationen Quelle: http://www.vogella.com/tutorials/junit/article.html 23 23

JUnit Assert-Statements Quelle: http://www.vogella.com/tutorials/junit/article.html 24 24

Ist das Praxis? Unit Tests sind heute ein MUSS in der Software-Entwicklung Ursprung in der Agilen Software-Entwicklung (xp) Allgemein üblich in der Open Source-Entwicklung: große, weltweite Entwicklergemeinde jeder muss gründlich testen, ehe er eine Änderung veröffentlicht auf dem Server laufen automatische Akzeptanztests, die für jede veröffentlichte Änderung gefahren werden JUnit ist selbst ein Open Source-Projekt Automatisierung geht noch weiter: Werkzeuge zum Compilieren und Bereitstellen führen automatische Tests aus (Hudson, Jenkins...) "Nightly Build" Jede Nacht einen neue, durchgetestete Version der Software. 25 25

Nur für Java? Unit Tests (Modultests) sind zunächst ein Konzept der objektorientierten Programmierung SUnit für Smalltalk war der Prototyp In ähnlicher Form für alle OO-Sprachen vorhanden NUnit für das.net-framework, PHPUnit für PHP, CppUnit für C++, DUnit für Delphi, QUnit für JavaScript, etc. Als Konzept auch für andere Sprachen und grafische Oberflächen weitergeführt Große Testframeworks für heterogene Projekte Selenium für Webanwendungen 26 26

Test Driven Development (TDD) Ein API oder Klasseninterface wirft viele Fragen auf : Beispiel MovieRegister-Interface Was soll beim Eintragen eines leeren Titels passieren? Was soll passieren, wenn der englische und der deutsche Titel gleich sind? Was soll passieren, wenn addmovie() für einen bereits vorhandenen Film aufgerufen wird? Was soll passieren, wenn bei updatemovie eine leere Schauspielerliste angegeben wird, die vorhandene aber nicht leer ist? Darf man mit contains auch nach null und "" suchen? Darf ein Titel beliebigesonderzeichen enthalten? Wie genau müssen Titel übereinstimmen, damit sie identifiziert werden (Groß/Kleinschreibung, Leerzeichen, Tippfehler)? Wie soll das System "fast gleiche" Titel behandeln?... 27 27

Spezifikation durch Testfälle Man kann die Fragen durch Kommentare beantworten Im TDD wird aus jeder Frage einen Testfall mit definiertem Ausgang machen Das ist genauer Das ist fürs Testen sofort nützlich Fragen und Unklarheiten werden auf den Punkt gebracht TDD bedeutet: erst die Testfälle festlegen dann implementieren dann testen 28 28

Falsche Forderung im nachträglichen Test Forderung: im Supportline ontext (Gesamtsystem): Ein Map-Element MapElement darf darf keinen nicht null-schlüssel zwei Null-Parameter haben, wenn haben! derwert nicht null ist. TestCase gescheitert (rot) Test scheitert es wird keine Exception geworfen 29

TDD ist besser Das Beispiel zeigt: nachträglich formuliert man leicht falsche Bedingungen Spezifikaition durch Testfälle bedeutet Präzisierung frühzeitiges Nachdenken über Grenzfälle à TDD ist führt zu besserem Code à den Tester-Blick braucht man trotzdem TDD ist Standard in der agilen Entwicklung! 30 30

... und trotz aller Automatisierung: Der Tester mit dem "Riecher" wird gebraucht Ab jetzt wird jeder Code getestet! J 31 31