Wann soll ich mocken? XP Days Germany David Völkel
|
|
- Tristan Kneller
- vor 5 Jahren
- Abrufe
Transkript
1 Wann soll ich mocken? XP Days Germany David Völkel
2 @davidvoelkel TDD & Design
3 SCHICHTEN TESTEN?
4 INTEGRIERTER TEST
5 Unittest MOCKING Mock
6 Unittest MOCKING Mock
7 Unittest MOCKING Mock
8 TRADE-OFF ZU GROSS vs ZU KLEIN aufwendiges Setup Fehlerfindung # Testfällen Langsames Feedback Refactorability sinkt Isolationsaufwand Zu wenig Nutzen Lesbarkeit
9 Woran orientieren?
10 IDEOLOGIEN MOCKISTS CLASSICISTS "Mocks Aren't Stubs", Martin Fowler
11 TRADE-OFFS statt IDEOLOGIEN!
12 USE CASES Anbindung Drittsysteme MOCKISTS CLASSICISTS
13 USE CASES Bedingte Interaktionen Anbindung Drittsysteme MOCKISTS CLASSICISTS
14 USE CASES Bedingte Interaktionen SWEETSPOT Anbindung Drittsysteme MOCKISTS CLASSICISTS
15 USE CASES Geringer Nutzen Bedingte Interaktionen SWEETSPOT Anbindung Drittsysteme MOCKISTS CLASSICISTS
16 USE CASES Geringer Nutzen Bedingte Interaktionen VERMEIDEN SWEETSPOT Anbindung Drittsysteme MOCKISTS CLASSICISTS
17 MOCKING VERMEIDEN SWEETSPOT BEST PRACTICES
18 VERMEIDEN
19 DONT MOCK VALUES!
20 DON T MOCK VALUES! new Value()
21 DON T MOCK VALUES! new Value() TestDataBuilderForValue.withDefaults().withField( 1 )
22 INTEGRATION OPERATION SEGREGATION PRINCIPLE "Integration Operation Segregation Principle", Ralf Westphal "Die kniffligen Fälle beim Testen - Sichtbarkeit", Stefan Lieser
23 INTEGRATION OPERATION SEGREGATION PRINCIPLE public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; String content = "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; mailservice.sendmail( , content);
24 INTEGRATION OPERATION SEGREGATION PRINCIPLE public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; String content = "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; mailservice.sendmail( , content);
25 INTEGRATION OPERATION SEGREGATION PRINCIPLE public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; String content = "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; mailservice.sendmail( , content);
26 INTEGRATION OPERATION SEGREGATION PRINCIPLE public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String content = rendercontent(customer); mailservice.sendmail( , content); private String rendercontent(customer customer) { String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; return "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service";
27 TESTS? public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String content = rendercontent(customer); mailservice.sendmail( , content); private String rendercontent(customer customer) { String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; return "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; N Unittests
28 TESTS? public void sendmailingto(string ) { Customer customer = customerdb.findcustomerby( ); String content = rendercontent(customer); mailservice.sendmail( , content); 1 Integrierter Test private String rendercontent(customer customer) { String title = customer.getsex() == Sex.MALE? "Mr" : customer.getmaritialstatus() == MaritialStatus.MARRIED? "Mrs" : "Ms"; return "Hello " + title + ". " + customer.getname() + ",\n\n" + "We have a special offer for you.\n\n" + "Best regards,\n" + "ACME Customer Service"; N Unittests
29 PUSH LOGIC DOWN THE STACK Siehe "The Failures of Intro to TDD " - Justin Searls
30 PUSH LOGIC DOWN THE STACK
31 SWEETSPOT
32 BEDINGTE INTERAKTION public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) { userdb.createuser(new User(username)); return "Welcome " + username; else { return "Username ' " + username + "' " + "already taken, please choose another";
33 SYSTEM GRENZEN Adapter 3rd Party Service
34 SYSTEM GRENZEN Mock 3rd Party Service
35 OUTSIDE-IN DESIGN
36 OUTSIDE-IN DESIGN Alternative Fake it
37 BEST PRACTICES
38 NO OVERSPECIFICATION!
39 NO OVERSPECIFICATION! Specify exactly what should happen but no more
40 REIHENFOLGE?
41 COMMAND & QUERY SEPARATION REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?
42 COMMAND & QUERY SEPARATION REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?
43 COMMAND & QUERY SEPARATION REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?
44 COMMAND & public SEPARATION void signup() throws Exception {... when(userdb.finduserby(anystring())).thenreturn(null); mailingservice.signup(username); verify(userdb).createuser(new User(username)); REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?
45 COMMAND & public SEPARATION void signup() throws Exception {... when(userdb.finduserby(anystring())).thenreturn(null); mailingservice.signup(username); verify(userdb).createuser(new User(username)); REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?
46 COMMAND & public SEPARATION void signup() throws Exception {... when(userdb.finduserby(anystring())).thenreturn(null); mailingservice.signup(username); verify(userdb).createuser(new User(username)); REIHENFOLGE userdb.createuser(new User(username)); public String signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... else {... IMMER NÖOTWENDIG?
47 COMMAND & public SEPARATION void signup() throws Exception {... when(userdb.finduserby(anystring())).thenreturn(null); mailingservice.signup(username); verify(userdb).createuser(new User(username)); public String REIHENFOLGE signup(string username) throws Exception { if(userdb.finduserby(username) == null) {... IMMER NÖOTWENDIG? userdb.createuser(new User(username)); Allow Queries, expect Commands!
48 LISTEN TO YOUR TESTS! Image by M.J. Moneymaker
49 LISTEN TO YOUR TESTS! # Verifications Image by M.J. Moneymaker
50 LISTEN TO YOUR TESTS! # Verifications Overspecification! Image by M.J. Moneymaker
51 LISTEN TO YOUR TESTS! # Verifications Overspecification! # Dependencies Image by M.J. Moneymaker
52 LISTEN TO YOUR TESTS! # Verifications Overspecification! # Dependencies Extract Class! Image by M.J. Moneymaker
53 LISTEN TO YOUR TESTS! # Verifications Overspecification! # Dependencies Extract Class! # Interactions Image by M.J. Moneymaker
54 LISTEN TO YOUR TESTS! # Verifications Overspecification! # Dependencies Extract Class! # Interactions Tell, don t ask! Image by M.J. Moneymaker
55 TELL DONT ASK public void volumeupclicked() { int volume = speaker.getvolume(); if (volume < speaker.getmaximumvolume()) { speaker.setvolume(volume++); => Tell don't ask
56 TELL DONT ASK public void volumeupclicked() { int volume = speaker.getvolume(); if (volume < speaker.getmaximumvolume()) { speaker.setvolume(volume++); => Tell don't ask
57 TELL DONT ASK public void volumeupclicked() { int volume = speaker.getvolume(); if (volume < speaker.getmaximumvolume()) { speaker.setvolume(volume++); public void volumeupclicked() { speaker.putupvolume(); => Tell don't ask class Speaker { public void putupvolume() { if (this.volume < this.maximum this.volume++;...
58 VERMEIDEN
59 SWEETSPOT
60 BEST PRACTICES
61 MOCKIST ODER CLASSICIST?
62 MOCKIST ODER CLASSICIST? TRADE-OFFS!
63 QUELLEN Growing Object Oriented Systems, Nat Pryce, Steve Freeman "Mocks Aren't Stubs", Martin Fowler "Integration Operation Segregation Principle", Ralf Westphal "Die kniffligen Fälle beim Testen - Sichtbarkeit", Stefan Lieser
64 Q&A?!
65 Licence Creative Commons Attribution-ShareAlike 3.0
Design for Testability in der Praxis David Völkel, codecentric AG
Design for Testability in der Praxis David Völkel, codecentric AG http://commons.wikimedia.org/wiki/file:pit_crew_hudson_valley.jpg http://commons.wikimedia.org/wiki/file:carservice.jpg David Völkel *
MehrDie Kunst der kleinen Schritte. David Völkel XP Days Germany
Die Kunst der kleinen Schritte David Völkel XP Days Germany 09.11.2018 @davidvoelkel codecentric Software Craft Meetup Munich David Völkel XP Days Germany 09.11.2018 #TDD Disclaimer! "It's the small steps
MehrJUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Namics. Stefan Bechtold. Principal Software Engineer.
JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Stefan Bechtold. Principal Software Engineer. 16. Oktober 2014 Aus dem Alltag eines Entwicklers Ein typischer (Unit-)
MehrTDD. mit JUnit & Mockito. Tobias Trelle, codecentric
TDD mit JUnit & Mockito Tobias Trelle, codecentric AG @tobiastrelle 1 Tobias Trelle Software Architekt @ codecentric AG Twitter: @tobiastrelle Slideshare: http://de.slideshare.net/tobiastrelle/ GitHub:
MehrInformatik II Übung 5 Gruppe 3
Informatik II Übung 5 Gruppe 3 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 5 Leyna Sadamori 29. März 2017 1 Administrativ Die Übung am 5. April fällt aus! Bitte in die Übung in HG G 3
MehrInformatik II Übung 5
Informatik II Übung 5 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 27.03.2013
MehrEinführung in die testgetriebene Entwicklung (TDD)
Fachbereich Mathematik und Informatik Institut für Informatik Einführung in die testgetriebene Entwicklung (TDD) Michael Prüm Seminar Beiträge zum Software Engineering 28.03.2013 1 / 55 Gliederung 1. Motivation
MehrObjektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer
Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;
Mehr3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen zu Schnittstellen Was bedeutet Orthogonalität / Separation of Concerns?
MehrINTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?
INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN? David Völkel XPDays Germany 14.11.2013 ÜBER MICH David Völkel IT-Consultant für codecentric Twitter: @davidvoelkel Schwerpunkte: Test-Driven Development
MehrWarum? Wie? Algorithm Tests Diverses. Unit Tests. Datamining und Sequenzanalyse. Kai Dührkop, Markus Fleischauer
Unit Tests Datamining und Sequenzanalyse Kai Dührkop, Markus Fleischauer Warum? Code without tests is bad code. It doesn t matter how well written it is; it doesn t matter how pretty or object-oriented
MehrKapitel zu bearbeitende Aufgaben: 6.1 bis :
Kapitel 6.3.1 1. zu bearbeitende Aufgaben: 6.1 bis 6.5 6.1: 6.2: === Day 23 === 9: pause 10: 11: 12: 13: lunch 14: 15: 16: 17: meeting 6.3: 6.4: PRG1_OOP8_ALG3_SS.docx Seite 1 von 10 http://hslu.ximit.ch
MehrFachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012
Testen Tutorial im Rahmen des Software(technik)praktikums SS 2012 Grundlagen (1) Software ist ein fundamentales Element in der Softwarequalitätssicherung Software wird am häufigsten eingesetzt Viele Organisationen
MehrII.4.5 Generische Datentypen - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche
MehrII.4.2 Abstrakte Klassen und Interfaces - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.2 Abstrakte Klassen und Interfaces - 1
MehrEin Jahr mit dem. Play! Framework FLAVIA IT. Dmitrij Funkner & Jonas Kilian. Quelle: http://www.flickr.com/photos/sdasmarchives/6996901834
Ein Jahr mit dem Play! Framework FLAVIA IT Dmitrij Funkner & Jonas Kilian Quelle: http://www.flickr.com/photos/sdasmarchives/6996901834 Über uns dmitrij funkner jonas kilian Konzentration auf das Wesentliche
MehrStephan Brumme, SST, 3.FS, Matrikelnr
Aufgabe M3.1 Ich habe versucht, die Funktionalität als Baustein in Klassen zu verpacken. Mein Programm enthält daher keine Routinen zur Ein- / Ausgabe, falls man zu Testzwecken die Abläufe verfolgen will,
Mehr1 Programmierfehler und ihre Behebung
1 Programmierfehler und ihre Behebung (kleiner lebenspraktischer Ratgeber) Grundsätze: Jeder Mensch macht Fehler... insbesondere beim Programmieren. Läuft ein Programm, sitzt der Fehler tiefer. Programmierfehler
MehrMock-Objekte. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Mock-Objekte Verschiedene Testhelfer Ein Stummel (engl. stub) ist ein nur rudimentär implementierter Teil der Software und dient als Platzhalter
Mehr1. Hello, I m Francis Docherty. a. No, sorry. I m not. 2. I m sorry. What was your b. I don t think he
A1 Hello, I m Francis Docherty. Was passt zusammen? 1. Hello, I m Francis Docherty. a. No, sorry. I m not. 2. I m sorry. What was your b. I don t think he name again? is at the moment. 3. Excuse me. Are
MehrUnitTests? Ja, aber richtig!
überraschend mehr Möglichkeiten! UnitTests? Ja, aber richtig! O.O.P. Conference / München Thomas Papendieck, Senior Consultant OPITZ CONSULTING 2017 Inhalte 1 Worüber ich nicht spreche 2 Anforderungen
MehrSelbststudium OOP7 & ALG2 Auftrag
Selbststudium OOP7 & ALG2 Auftrag Kapitel 5.6 1. zu bearbeitende Aufgaben: 5.24 bis 5.30 5.24: Return Method Set entryset() V get(object key) Set keyset() V put(k key, V value) void
MehrInformatik II (D-ITET) Übungsstunde 5,
Informatik II (D-ITET) Übungsstunde 5, 30.04.2017 Hossein Shafagh, shafagh@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Besprechung von Übung 4 More Java insights (Call by Value und Call by
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt!! 24.03.2014 ORGANISATORISCHES 09:00-10:30! Täglich Übungen zur Vertiefung! Laptop hier nicht erforderlich! Linux, OS X! Freitag: http://hhu-fscs.de/linux-install-party/
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/
MehrChristian Meder inovex. Sauberes Grün QS für Android
Konferenz Christian Meder inovex Sauberes Grün QS für Android Sauberes Grün: QS für Android W-JAX, 2011 Christian Meder inovex GmbH Chief Technology Officer 09.11.2011 1 Speaker Christian Meder Schwerpunkte
MehrWeather forecast in Accra
Weather forecast in Accra Thursday Friday Saturday Sunday 30 C 31 C 29 C 28 C f = 9 5 c + 32 Temperature in Fahrenheit Temperature in Celsius 2 Converting Celsius to Fahrenheit f = 9 5 c + 32 tempc = 21
Mehr! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
MehrTestgesteuert Entwickeln mit JUnit 4
Testgesteuert Entwickeln mit JUnit 4 Tests nebenbei automatisieren Christoph Knabe Beuth-Hochschule für Technik Berlin Testgesteuert Entwickeln mit JUnit4, Christoph Knabe 2002, BHT Berlin, FB VI, 2016-10-20,
MehrÜbungsstunde 11. Einführung in die Programmierung
Übungsstunde 11 Einführung in die Programmierung Probleme bei Übung 9 [TODO Assistent] Nachbesprechung Übung 10 Aufgabe 1: Mini-Taschenrechner (Bonus!) Feedback nach der Korrektur direkt per Git Lösungsvorschlag
MehrProgrammieren in Java
Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1
MehrJUnit. Unit testing unter Java
JUnit Unit testing unter Java Was ist Junit? einfaches Framework zum Schreiben von wiederholbaren Tests Besonders geeignet für unit testing Erlaubt Hierarchie von Testsuites Schreiben eines Test Case 1.
MehrTest Driven Development
Test Driven Development Definition & Motivation [~15min] Demo [~10min] Stubs & Mocks [~15min] Übliche Fehler [~5min] Folie 1 TDD [Kent Beck] Schreibe keine Zeile Code ohne einen fehlschlagenden (roten)
Mehr1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen
1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new
MehrRefactoring C# Legacy Code
Refactoring C# Legacy Code Stefan Lieser @StefanLieser http://refactoring-legacy-code.net http://er.jsc.nasa.gov/seh/13index.jpg Houston, we ve had a problem. Wandelbarkeit https://pixabay.com/de/chamäleon-hautnah-exotische-grün-1414084/
MehrSTRICT TDD DIE UNTERSCHÄTZTE WAFFE DES ENTWICKLERS
STRICT TDD DIE UNTERSCHÄTZTE WAFFE DES ENTWICKLERS David Völkel Stuttgarter Testtage 2013 ÜBER MICH David Völkel IT-Consultant für codecentric Twitter: @davidvoelkel Schwerpunkte: Test Driven Development
Mehr! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete II.4.2 Abstrakte Klassen und Interfaces - 1 - Ähnliche Programmteile public class Bruchelement { Bruch wert;
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/
Mehr6. Übung zu Software Engineering
6. Übung zu Software Engineering WS 2009/2010 Henning Heitkötter Entwurfsmuster AUFGABE 15 1 Vorgabe 2 public class DictionaryProcessor extends Processor { private Map dict = new HashMap
MehrINTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?
INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN? David Völkel Frankfurter Entwicklertag 19.02.2014 DAVID VÖLKEL IT-Consultant Schwerpunkte Test-Driven Development Softwaredesign & Clean Code
MehrII.4.4 Exceptions - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.4 Exceptions - 1 - Ausnahmen (Exceptions)
MehrII.4.4 Exceptions - 1 -
n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen
MehrJUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!
JUnit a Cook s Tour Ziel des Frameworks Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren Design des Frameworks Beginne bei Nichts Schritt für Schritt aus passenden Mustern
MehrAPI-Design. Do s and Don ts. Jochen Kraushaar
API-Design Do s and Don ts Jochen Kraushaar Von Kai Meißner, CC0 1.0, https://pixabay.com/photo-2063160/ Von German Lopez, CC0 1.0, https://pixabay.com/photo-2191229/ Wer hat bereits eine API entwickelt?
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt 24.03.2014 ORGANISATORISCHES tobias.witt@hhu.de 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber später in den Übungen!
MehrIntroduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016
to to May 2016 to What is Programming? All computers are stupid. All computers are deterministic. You have to tell the computer what to do. You can tell the computer in any (programming) language) you
Mehr13. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen
MehrProperty Based Testing
Property Based Testing Nicolai Mainiero sidion Testen ist schwer Testen ist schwer Warum? Alle Pfade durch den Code aufzuzählen ist aufwendig. Selbst vermeintlich einfache Systeme können komplex sein.
MehrInterface. So werden Interfaces gemacht
Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.
MehrUnit 4. The Extension Principle. Fuzzy Logic I 123
Unit 4 The Extension Principle Fuzzy Logic I 123 Images and Preimages of Functions Let f : X Y be a function and A be a subset of X. Then the image of A w.r.t. f is defined as follows: f(a) = {y Y there
MehrLesbares Java. Steffen Gemkow. Freitag, 16. November 12
Lesbares Java Steffen Gemkow Zur Person Steffen Gemkow Geschäftsführer Java seit 1996 Agile Coach, Scrum-Master JUnitDoclet, TheWayOut Der Pragmatische Programmierer Wartbarkeit Funktion von Lesbarkeit
MehrSoftware Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrInformatik 2 für Regenerative Energien
Informatik 2 für Regenerative Energien Klausur vom 5. Juli 2013 Jörn Loviscach Versionsstand: 13. Juli 2013, 18:12 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
MehrAnwendung (2. Versuch:-) Entkopplung der Locks
Gut gemeint aber leider fehlerhaft... Jeder Producer benötigt zwei Locks gleichzeitig, um zu produzieren: 1. dasjenige für den Puffer; 2. dasjenige für einen Semaphor. Musser fürden Semaphor einwait()
MehrStädtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode
Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode folgt im Anschluss. Beispielcode Es gibt eine Klasse Benutzerverwaltung, welche eine Liste mit Benutzern
MehrKlasse Label. class Label { Code code; List<Integer> fixuplist; // code positions to patch int adr; // address of label in code
Klasse Label class Label { Code code; List fixuplist; // code positions to patch int adr; // address of label in code // inserts offset to label at current void put (); // defines label to be
MehrSchnittstellen, Stack und Queue
Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In
MehrSoftwaretechnik 1 Übung 6
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Übung 6 16.07.2009 Aufgabe 1a) Gegebene Methode public static int getnumberofdays(int month, int year) { int days = -1;
MehrÜbungsblatt 5: Software-Entwicklung 1 (WS 2017/18)
Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Übungsblatt 5: Software-Entwicklung 1 (WS 2017/18) Aufgabe 1 Spezifikationen
MehrPONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB
Read Online and Download Ebook PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB DOWNLOAD EBOOK : PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: Click link bellow
Mehr16. Dynamische Datenstrukturen
Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange
MehrInformatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017
1 Informatik II Übung 6 Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017 Heutiges Programm 2 1 Klassen - Technisch 2 Prediscussion
MehrBeispiellösung zur Klausur AI2 im Sommersemester 2007
Beispiellösung zur Klausur AI2 im Sommersemester 2007 Die Lösung soll als Beispiellösung für die Vorbereitung auf die Nachklausur dienen. Es ist durchaus möglich, dass sich noch kleine Fehler eingeschlichen
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrÜbungen zu Middleware Universität Erlangen-Nürnberg Informatik 4, 2007 Z-Java-Exceptions.fm
Z.11Fehlerbehandlung Programm beenden (System.exit()) meist eine schlechte Idee Ausgabe einer Fehlermeldung hilft nicht den Fehler zu überwinden spezieller Rückgabewert kennzeichnet Fehler Konstruktoren
Mehr! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur
MehrVORANSICHT. Halloween zählt zu den beliebtesten. A spooky and special holiday Eine Lerntheke zu Halloween auf zwei Niveaus (Klassen 8/9)
IV Exploringlifeandculture 12 Halloween(Kl.8/9) 1 von28 A spooky and special holiday Eine Lerntheke zu Halloween auf zwei Niveaus (Klassen 8/9) EinBeitragvonKonstanzeZander,Westerengel Halloween zählt
MehrPS Software Engineering WS 2018/19
PS Software Engineering WS 2018/19 Wöchentlich Dienstag 08:00-10:00 Start: 8:15 Termine: PLUSonline Homepage zum PS: Allgemeines www.softwareresearch.net Teaching Programmieren im Großen Die Entwicklung
Mehr3. Übungsbesprechung Programmkonstruktion
3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at December 12, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK December 12, 2011 1 / 13 Rückblick und
MehrSpock und Geb (WebDriver) Wie können freie Werkzeuge zum strukturierten Testen von Web-Applicationen eingesetzt werden?
Stuttgarter Test-Tage 21. & 22. März 2013 Spock und Geb (WebDriver) Wie können freie Werkzeuge zum strukturierten Testen von Web-Applicationen eingesetzt werden? Christian Baranowski Willkommen Christian
MehrKlassenarbeit - Grammatik
Klassenarbeit - Grammatik 5. Klasse / Englisch / Monat März Kurzantworten; Dialoge; Fragen bilden; Sätze bilden; Personalpronomen Aufgabe 1 Do you know the word? 1. There are planes here: 2. It is a place
MehrÜbungsstunde 6. Einführung in die Programmierung
Übungsstunde 6 Einführung in die Programmierung Probleme bei Übung 5 [TODO Assistent] Nachbesprechung Übung 6 Feedback nach der Korrektur direkt per SVN public class Person { int alter; double gewicht;
Mehr1 of :17:14
7 public class Main 10 /** 11 * @param args the command line arguments 1 */ 13 public static void main(string[] args) 14 { 15 // Aufgabe 1 16 System.out.println("##### AUFGABE 1 #####"); 17 // Stack initialisieren
Mehr1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten
1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten Java-1. a), e) Java-2. --- gestrichen --- Java-3. keine Antwort ist richtig Java-4. a) Java-5. a), b)
MehrAccelerating Information Technology Innovation
Accelerating Information Technology Innovation http://aiti.mit.edu Ghana Summer 2011 Lecture 05 Functions Weather forecast in Accra Thursday Friday Saturday Sunday 30 C 31 C 29 C 28 C f = 9 5 c + 32 Temperature
MehrAlgorithmen und Programmierung III
Musterlösung zum 4. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Amortisierte Analyse 10 Punkte Zu erst betrachte ich wie oft die letzte Ziffer
Mehraformatik Training & Consulting GmbH & Co. KG Eine Einführung in das automatisierte Testen mit dem Robot-Framework Thomas Gauss
aformatik Training & Consulting GmbH & Co. KG 1 Eine Einführung in das automatisierte Testen mit dem Robot-Framework Thomas Gauss Fahrplan Agenda aformatik Training & Consulting GmbH & Co. KG 2 Vorstellung
MehrÜbungsstunde 7. Einführung in die Programmierung
Übungsstunde 7 Einführung in die Programmierung Probleme bei Übung 5 [TODO Assistent] Nachbesprechung Übung 6 Aufgabe 1: Talsohlen (Bonus!) Feedback nach der Korrektur direkt per Git Lösungsvorschlag von
MehrGeneral info on using shopping carts with Ogone
Inhaltsverzeichnisses 1. Disclaimer 2. What is a PSPID? 3. What is an API user? How is it different from other users? 4. What is an operation code? And should I choose "Authorisation" or "Sale"? 5. What
MehrSelbststudium OOP8 & ALG3 Aufgaben
Selbststudium OOP8 & ALG3 Aufgaben Kapitel 7.3 1. zu bearbeitende Aufgaben: 7.1 bis 7.11 7.1: 7.2: 7.3: 7.4: 7.5: Rating mit 0 funktioniert, obwohl nur 1 bis 5 erlaubt wäre. 7.6: Rating mit 0 funktioniert,
MehrIT Basics 2 Handout u
IT Basics2Handout9.9.2008u.16.9.2008 FürdasErstellenvonobjektorientiertenProgrammenistesnebendemVerständnisder Objektorientierungauchnötig,einigegrundlegendeKonzeptederProgrammierungzuverstehen. DiesegrundlegendenKonzeptesindThemaderzweitenLehrveranstaltungundteilweiseauchder
Mehr0. Einführung & Motivation
0. Einführung & Motivation Ansatz: "C++ für Java-Kenner" Konzentration auf semantische Unterschiede 'gleichartiger' Konzepte Erörterung der C++ -spezifischen Konzepte (Overloading, Templates) Anspruch
MehrExercise (Part I) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1
Exercise (Part I) Notes: The exercise is based on Microsoft Dynamics CRM Online. For all screenshots: Copyright Microsoft Corporation. The sign ## is you personal number to be used in all exercises. All
MehrApplication Frameworks
Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung
MehrMATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE STUDIE ZUR LEGITIMITAT UND PRAXIS DER MODERNEN MATHEMATIK (THEORIE UND METHODE) FROM UVK
MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE STUDIE ZUR LEGITIMITAT UND PRAXIS DER MODERNEN MATHEMATIK (THEORIE UND METHODE) FROM UVK DOWNLOAD EBOOK : MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
MehrInformatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich
Informatik II (D-ITET) Informatik II (D-ITET) simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Übungsstunde 1 Informatik II (D-ITET) 1 Ablauf Nachbesprechung Übungen 3 und 4 Besprechung der
MehrEnterprise JavaBeans Überblick
Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.
MehrOliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring?
oliver@code-project.org 7. Februar 2006 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2
MehrSelbststudium OOP6 & ALG1 Auftrag
Selbststudium OOP6 & ALG1 Auftrag Kapitel 5.2 1. zu bearbeitende Aufgabe: 5.1 done 2. Auf den Seiten 157/158 wird in der Methode start()ein while-loop verwendet. Kreieren Sie ein Code-Fragment mit derselben
Mehr