Joe de Developer Leergierig

Slides:



Advertisements
Verwante presentaties
Luchtvaart techniek en krachten
Advertisements

Het tweede werkstuk.
Intentie veranderen door bewustzijn
The Need for Speed Richard R. Budding.
Handboek verzenden van Nieuwsbrief Caribbean.nl 12 september 2012 •Ga naar CMS •Kies Nieuwsbrief Caribbean.nl.
PSO for Microsoft Dynamics 2013
I love you.
Let op bij een upgrade! = op DVD (geen CD) Gebruik je Windows Vista? Als je Windows Vista hebt, kun je Windows 7 Upgrade-versies aanschaffen.
Naam: Mijn info : Klik op “Naam”. Vul je naam in. Doe hetzelfde met “sport” Hier kun je een foto / tekening Invoegen.
BELANGRIJK: √ Om de presentatie correct weer te geven, gelieve enkel gebruik te maken van muisklikken aub.!! √ Op verschillende dia’s ziet u “klik hier”
Spel uit top 20 gamer.nl Grand theft auto V
How to avoid being a code monkey ? Peter Vantieghem 18/6/2013.
Kennis Sessie PSO 2013.
Jasper Oosterveld iPad en SharePoint 23 februari 2012.
AberdeenGroup surveyed 125 companies to understand their product innovation goals. Top challenges reported by these companies were: Cost pressure from.
Sitecore SUGNL Meeting – Unit testing met test fixtures 13 maart 2013 Robin Hermanussen – Lukkien
HTML Les 1: Introductie HTML
Train de trainer Levensboeken Beatrijs Van der Heijden
Accessible Instructional Materials. § Discussion: Timely access to appropriate and accessible instructional materials is an inherent component.
Welkom bij Projectmanagement
Moraliteit Les 2 Ethiek – Moraliteit – Les 2 Datum:
Hulpwerkwoorden can must may etc.
Stijn Van Wonterghem1 ALICE Een animatie opbouwen.
ISA (InformatieSysteemArchitectuur) Geert-Jan Houben.
I wanna grow old with you Music: Westlife Another day Without your smile Another day just passes by But now I know How much it means For you to stay.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Mijn sport: breakdance
Subversion Version control
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 4 - onderwerpen Multiplexen.
SPAM SPAM. Heeft u veel SPAM? Kan uw provider het niet tegenhouden?
College 7, jaar 2, Zomer 2010 Nieuwe Businessmodellen Auteur: Ayman van Bregt Docent: Toine Nagel.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Deltion College Engels C1 Luisteren [Edu/001] thema: It’s on tv can-do : kan zonder al te veel inspanning tv-programma’s begrijpen.
Windows Applicaties Bouwen met Visual Studio.NET Sijmen Koffeman Development Consultant Microsoft.
Pia Terstroet (Terpm) les 6 Mail: Wiki: Media en creativiteit MEDMC101D Creative.
Aan de slag met de BETERapp
Hom Com Ledenvergadering Wiki Hoeveel “wiki” bestaan er ? – Wikiwikiweb – Wikipedia – Wikileaks – Wikikids – Wikifin – Wikia – Wikisoftware.
MVC in de praktijk Jeroen Swart.NET architect, Quintor
Deltion College Engels A2 Schrijven [Edu/004] thema: swapping houses… can-do : kan in korte, eenvoudige zinnen vertrouwde zaken beschrijven © Anne Beeker.
Refactoring en Unit Testing. Geschiedenis Hoe maken we complexe code duidelijker? Hoger abstractieniveau –Assembly –“Hogere” programmeertalen –Object-orientatie.
Iedereen is context driven!
Oktober 2004 Core Course Information Management dag 2 Agenda.
PLANNING EN DESIGN MET VSTS2010 Lunchsessie ALM René van Osnabrugge
Deltion College Engels B1 Schrijven [Edu/005] thema: The Weakest Link or Weekend Millionaire… can-do : kan in brieven of s feitelijke zaken beschrijven.
Testen met aandacht Een betere tester door Mindfulness Esther Kluver.
2G 16 November Today’s lesson  Last class  Mull  Puffins  Check homework (ex )  Thursday 9 December: TEST UNIT 2.
Online filmpjes maken. (
Test Tender module Stap 1 Klik op het gewenste object.
Online filmpjes maken. (
Why 1. What BlueTEC in operation Delivering clean energy from the tides into the Dutch grid Unique installation worldwide.
Enterprise Application Integration
INFITT01 - Internettechnologie WEEK 3. Programma Sessies JSP.
Automatische builds vanuit ClearCase UCM 1 Visual & Integrated Build Engine Automatische builds vanuit ClearCase en UCM Download ClearVibe Light Download.
1 KPN Mobiel – Introductie Repository Object Browser & Designer 10 Designer 10g & Repository Object Browser Maandag 28 februari 2005 Lucas Jellema (AMIS)
“IT’S THE DATA STUPID..!” WAGENINGEN UNIVERSITEIT EN RESEARCH CENTRE.
PRINCE2 in Praktijk EPM voor Professioneel Projectmanagement Pierre Smits/ Leo Stigter / Jane Darnell Apeldoorn, 17 september 2008 getronicspinkroccade.nl.
Inhoud Breuken (optellen, aftrekken, vermenigvuldigen en delen).
Welkom in de Top-2000 kerkdienst
Frontend Oss
Test Driven Development
De taaltaak
Beeld magazine.
Praegus B.V.. .
Voel je wel in je vel !.
Schrijf een passende aanhef.
“CI/CD pipeline ABNAMRO Hypotheek”
Wat je er mee kan doen en waarom het zo handig is.
– Software development fundamentals
SQL Les 9 12 May 2019.
Je verdient Beter. Betere SEO Betere Prestatie Your Logo
Transcript van de presentatie:

Joe de Developer Leergierig Gehoort over Unit Testen  heilige graal voor al zijn problemen Nieuw project Webshop Enthousiast!

Wat is jouw excuus om niet te unit testen? Wat kun je er aan doen? Wouter de Kort Coach/trainer/auteur @ Seize IT wouter@seizeit.nl @wouterdekort www.seizeit.nl

Agenda Wat is unit testen ook al weer? Hoe past TDD daar in? Excuses & oplossingen Tussen de oren In de praktijk Korte basis Daarna de diepte in

Wat is een unit test? Gewone code Test een ander stuk code Automatisch uitvoerbaar Niet moeilijk. Gewoon standaard C# Unit Test Framework

Unit Test beloften Bugs Aanpassingen Integratie Documentatie Design Waarom is Joe de Developer zo enthousiast? Enthousiast! Visual Studio 2012 veel verbeteringen Van Console App naar Unit Test Test Explorer Unit Testing Framework QUnit, xUnit, enzz door elkaar Code Coverage Profiling Demo

Agenda Wat is Unit Testen ook al weer? Hoe past TDD daar in? Excuses & Oplossingen De grote lijnen De details

Zonder TDD Design Implement Test

Met TDD Design Test Implement

Met TDD Design Test Implement Refactor TDD is een design activity

Hoe doe je dat? Beslis wat je wilt doen Schrijf een test Test Schrijf de code Refactor Demo  unit test toevoegen voor ander getal - Test on Build Demo

Agenda Wat is unit testen ook al weer? Hoe past TDD daar in? Excuses & oplossingen Tussen de oren In de praktijk Korte basis Daarna de diepte in

Tussen de oren

Excuses Type 1 Het kost teveel tijd om ze te schrijven Het mag niet van het management Ik ben geen tester Type 1: Eerst moet het in je hoofd goed zitten

Tijd Type wat code Maak een paar schetsen Start de debugger Wacht op de debugger Zet een breakpoint Lees je code een paar keer Vraag anderen om mee te kijken Staar uit het raam Gooi iets naar een collega Google voor een oplossing … Microsoft Study Writing new code 5% Modifying existing code 25% Understanding Code 70%

Testen kost altijd tijd. Nu of later Nadeel handmatig testen  als je die tijd neemt waarom dan niet automatiseren?

“The only way to go fast is to go well” Robert Martin

Anderen meekrijgen Bottom-up Top-down Management/collega’s. Guerrilla style Project met Unit Tests kost meer tijd in ontwikkeling. Maar minder tijd integratie, testen / bugs http://biblio.gdinwiddie.com/biblio/StudiesOfTestDrivenDevelopment

“Het is niet mijn werk om te testen” Iets wat ook bij managers leeft Wat is je werk dan wel? Werkende, onder houdbare code Je houd je baan ;)

In de praktijk

Excuses Type 2 De tests duren te lang De test zijn niet te onderhouden Mijn code is niet te testen De meest gemaakte fout

Probleem wat is een unit test nu eigenlijk

Test piramide SCENARIO TEST INTEGRATION TEST UNIT TEST

Wat test je bij een unit test? “ Intuitively, one can view a unit as the smallest testable part of an application” Wikipedia

Designing for testability Controversieel Zorgt voor betere code

Architectuur Standaard N-Tier architectuur

Architectuur public class Car { public Car() _engine = new Engine(); } public class Engine public Engine() _battery = new Battery(); _transmission = new Transmission();

“new” is evil! En globals/singleton

Dependency Injection public class Car { public Car() _engine = new Engine(); } public class Car { public Car(IEngine engine) _engine = engine; }

Hoe knoop je het aan elkaar? Dependency Injection Container IKernel kernel = new StandardKernel(); kernel.Bind<IEngine>().To<Engine>(); kernel.Bind<Car>().ToSelf(); Demo

Mocking Vervangen van dependencies in test IEngine engineStub = MockRepository.GenerateStub<IEngine>(); Demo

Dus… Test in volledige isolatie Dependency Injection / Inversion of Control Mocking & Stubbing Nieuw project Legacy Code

Waar hebben we het over gehad Unit Testen bied mogelijkheden TDD helpt Designing for testability Dependency Injection Nieuw project Legacy Code

Waar begin ik? Bugs Nieuwe functionaliteit Nieuw project Legacy Code

Unit Testen zonder excuses

Vragen

Wouter de Kort Coach/trainer/auteur @ Seize IT wouter@seizeit.nl @wouterdekort www.seizeit.nl

Probleem onderhoudbaarheid

Koppeling Klaarzetten van je test Address billingAddress = new Address(“Concourslaan 17", "Groningen", "9727KC“, “Gasunie"); Address shippingAddress = new Address(“E van de Beekstraat 354", “Schiphol", “1118 CZ", “Microsoft"); Customer customer = new Customer(99, "Piet", "Klaassens", 30, billingAddress, shippingAddress); Product product = new Product(88, “Surface PRO", 499); Invoice invoice = new Invoice(customer); Nodig om veel test data aan te maken Voor een klant hebben we een adres nodig Slecht onderhoudbaar  iedere wijziging in constructor enz zorgt voor werk in je unit tests

AutoFixture https://github.com/AutoFixture/AutoFixture Fixture fixture = new Fixture(); Customer customer = fixture.Build<Customer>() .With(c => c.Discount, discount) .CreateAnonymous(); Product product = fixture.Build<Product>() .With(p => p.Price, productPrice) Factory pattern Object Mother Builder Demo