Testing & Logging DBS. Tobias Lingelmann SEP

Ähnliche Dokumente
Programmieren. JUnit-Tests. Heusch -- Ratz -- Institut für Angewandte Informatik

JUnit 4 Tutorial. Wolfgang Stöttinger

JUnit. Software-Tests

Programmieren. JUnit-Tests. Heusch -- Ratz -- Institut für Angewandte Informatik

Unit Testing mit JUnit. Dr. Andreas Schroeder

Testgetriebene Entwicklung mit JUnit4

Coding-Standards und Dokumentation

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

Systematisches Testen

Testen mit JUnit. Motivation

Thema: Testen von objektorientierter Software

Nutzung von Log4J und Commons Logging

PT2. Unit06: Modultests & JUnit. Sven Köhler Hasso-Plattner-Institut

JUnit. Unit testing unter Java

Enterprise JavaBeans Überblick

Logging mit Log4J AID 074 DE

MODERNES LOGGING DATENSAMMELN OHNE REUE. Bert Radke Marco Grunert T-Systems Multimedia Solutions GmbH

Funktionales Testen. Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg

Programmiertechnik II

Programmiermethodik. Übung 3

Logging in Java. Java Logging API & Jakarta Log4J. Seminararbeit von Philipp Kaufmann, 5Ie

Unit Tests mit Junit 4. Dario Borchers

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Namics. Stefan Bechtold. Principal Software Engineer.

Programmierstil in Java Coding-Standards und Dokumentation

Softwaretechnik 1 Vorlesung. Werkzeuge. Prof. Dr. Bernhard Rumpe Software Systems Engineering Technische Universität Braunschweig

Unit Tests und Fehlersuche

Testgetriebene Entwicklung

Der EMF-generierte Code. 7. November 2012

Testen mit JUnit. Martin Wirsing. Ziele. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

Softwaretests. verschiedene Testformen Testen im V-Modell: Anwendungsszenarien. Tests. Tests. Tests. Anforderungs- definition. Abnahmetest.

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Whitebox-Test. Unit-Test

Testen mit JUnit. Martin Wirsing. Ziele. Arten von Tests. Testen. Lernen Unit Tests zu schreiben Lernen mit Unit-Testen mit JUnit durchzuführen

OOSE_02E Testen mit BlueJ/JUnit 4

OOSE4 Testen mit BlueJ/JUnit 4

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Web-Testen mit JUnit und HttpUnit. Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Softwaretest. Algorithmen und Programmieren II SS 2008 Objektorientierte Programmierung. Algorithmen und Programmierung II SS 2008

Software-Engineering Software-Management

Einführung in die testgetriebene Entwicklung (TDD)

Mock-Objekte. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825

Exceptions. CoMa-Übung VII TU Berlin. CoMa-Übung VII (TU Berlin) Exceptions / 1

Test-driven development JUnit-Test. Lars Varain

Test-Driven Design: Ein einfaches Beispiel

Programmieren in Python

Komponenten-basierte Entwicklung Teil 6: Einführung in JUnit

Unit Tests in der Testgetriebenen Entwicklung

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

Programmiermethodik. Übung 5

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Das Test-Framework JUnit ETIS SS04

Beuth Hochschule Java-Testprogramme mit JUnit schreiben WS11/12

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006

Einstieg in die Informatik mit Java

Property Based Testing

Erstellung eines mockbasierten Testframeworks für Saros. Philipp Cordes Masterarbeit

Logging in Java Verteilte und Parallele Systeme

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

II.4.4 Exceptions - 1 -

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10. Institut für Angewandte Informatik

Automatisierte Modultests mit JUnit

Transkript:

Testing & Logging SEP 2018 Tobias Lingelmann 2018-04-24 DBS Wissenschaftliche Betreuer: Daniel Kaltenthaler, Johannes Lohrer Verantwortlicher Professor: Prof. Dr. Peer Kröger

Inhalt Testing Übersicht JUnit Test Driven Development Logging Motivation Funktionsweise Frameworks Testing & Logging 2

Testing Zum Überprüfen, ob Testobjekt den Design-Anforderungen enstpricht. korrekt auf alle (möglichen) Eingaben reagiert. einigermaßen performant ist. wie vorgesehen eingebettet werden kann. Hilft beim Finden von Fehlern. Testing & Logging 3

Testing Funktionales Testen (Basierend auf Spezifikationen, Black-Box, Was ) Strukturelles Testen (Überdeckungskritierien, White-Box, Wie ) Unit-Testing Integration-Testing System-Testing Softwaretechnik-Vorlesung Quelle Testing & Logging 4

JUnit Framework zum Durchführen automatischer Unit-Tests Ermöglicht einfaches Testen kleiner Programmteile Test-Suits bestehend aus vielen kleinen Tests, möglich Liefert klar zu verstehendes Ergebnis: bestanden vs. fehlgeschlagen. Integriert in Eclipse Testing & Logging 5

JUnit public class AccountTest { private Account testaccount; @Before public void setup() { this.testaccount = new Account(100); @After public void teardown() { this.testaccount = null; @Test public void testdeposit() { this.testaccount.deposit(10); assertequals(110, this.testaccount.getbalance()); @Test public void testwithdraw() throws BalanceTooLowException { this.testaccount.withdraw(1); assertequals(109, this.testaccount.getbalance()); @Test(expected = BalanceTooLowException.class) public void testoverdraft() throws BalanceTooLowException { this.testaccount.withdraw(110); Testing & Logging 6

JUnit public class AccountTest { private Account testaccount; @Before public void setup() { this.testaccount = new Account(100); @After public void teardown() { this.testaccount = null; @Test public void testdeposit() { this.testaccount.deposit(10); assertequals(110, this.testaccount.getbalance()); @Test public void testwithdraw() throws BalanceTooLowException { this.testaccount.withdraw(1); assertequals(109, this.testaccount.getbalance()); @Test(expected = BalanceTooLowException.class) public void testoverdraft() throws BalanceTooLowException { this.testaccount.withdraw(110); Vor jedem Test Nach jedem Test Test auf Gleichheit Test auf Fehlerwurf Auch: @BeforeClass @AfterClass @Ignore Testing & Logging 7

JUnit Ergebnis: Mit korrektem Test: Testing & Logging 8

JUnit Assertion assertequals asserttrue assertfalse assertnotnull assertnull assertsame assertnotsame assertarrayequals fail Beschreibung Testet ob zwei Werte gleich sind Testet ob wahr Testet ob falsch Testet ob Objekt nicht null ist Testet ob Objekt null ist Testet ob zwei Objekt-Referenzen gleich sind Testet ob zwei Objekt-Referenzen nicht gleich sind Testet ob zwei Arrays gleich sind Schlägt fehl Testing & Logging 9

Test Driven Development Testing & Logging 10

Logging Automatisches Erstellen eines Protokolls Aufzeichnung zur Nachvollziehbarkeit von (Fehler-)Zuständen Standardisierte Aufzeichnung ermöglicht (automatische) Auswertung Ausgabe auf der Konsole, in Dateien, in Datenbanken, übers Netzwerk, Testing & Logging 11

Logging Testing & Logging 12

Logging Aufbau Formatter (Layout) Datei Anwendung Logger Handler (Appender) Datenbank Konsole Filter Filter Testing & Logging 13

Logging Hierarchische Level : java.util.logging: Severe Warning Info Config Fine Finer Finest Log4j2: Fatal Error Warn Info Debug Trace All Error Warn Info Debug Trace Testing & Logging 14

Logging import java.util.logging.*; public class Nose { private static Logger logger = Logger.getLogger("de.test.logtest"); private static ConsoleHandler ch = new ConsoleHandler(); public static void main(string argv[]) { // Avoid forwarding logs to parent's handler logger.setuseparenthandlers(false); // Add own handler logger.addhandler(ch); // Set level for handler ch.setlevel(level.finer); // Set level for logger logger.setlevel(level.finer); // Log a simple INFO message. logger.info("doing stuff"); try { sneeze(); catch (Exception ex) { logger.log(level.warning, "trouble sneezing", ex); logger.fine("done"); public static void sneeze() throws Exception { throw new Exception(); Testing & Logging 15

Logging import org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger; Nose4j.java public class Nose4j { private static Logger logger = LogManager.getLogger("de.test.logtest"); public static void main(string argv[]) { logger.info("doing stuff"); try { sneeze(); catch (Exception ex) { logger.catching(ex); logger.debug("done"); public static void sneeze() throws Exception { throw new Exception(); log4j2.xml <?xml version="1.0" encoding="utf-8"?> <Configuration status="warn"> <Appenders> <Console name="console" target="system_out"> <PatternLayout pattern="%d{hh:mm:ss.sss [%t %T] %-5level %c{1. - %msg%n" /> </Console> </Appenders> <Loggers> <Root level="trace" includelocation="false"> <AppenderRef ref="console" /> </Root> </Loggers> </Configuration> Testing & Logging 16

Linksammlung https://junit.org/junit5/docs/current/api/ https://www.tutorialspoint.com/junit/index.htm https://en.wikipedia.org/wiki/code_coverage https://en.wikipedia.org/wiki/software_testing http://blog.codepipes.com/testing/softwaretesting-antipatterns.html https://docs.oracle.com/javase/9/docs/api/jav a/util/logging/package-summary.html https://logging.apache.org/log4j/2.x/manual/in dex.html Testing & Logging 17