Testdriven utveckling av Web Services. Ole Matzura

Relevanta dokument
Kärnfunktionalitet. Middleware. Samverkande system. Service Oriented Architecture. Kommunikationsmekanismer. Tjänsteorienterade arkitekturer

Arkitektur. Den Röda Tråden

Några grundläggande begrepp

TDDC74 Programmering, abstraktion och modellering DUGGA 2

SAST Q1. Som att börja arbeta på ett nytt jobb. Testautomatisera med Modell-baserad testning

Services + REST och OAuth

Slutrapport för JMDB.COM. Johan Wibjer

Arkitektur för Bistånd

LEFI Online. Anslutningsinformation

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Webbtjänster med API er

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Systemutvecklare.NET, C#/VB, C/C++, ASP.NET, T-SQL, JAVA Systemdesign

Agil testning i SCRUM

XML-produkter. -Registret över verkliga huvudmän (RVH) Teknisk handledning för webbtjänst mot RVH (Web Services) Datum: Version: 1.

Webbtjänster med API er

Slutrapport YUNSIT.se Portfolio/blogg

Från Data till Process

Fordringsanmälan skuldsanering

Förbättringsrapportering enligt art 69, MRR

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

vattenweb.smhi.se Esa Falkenroth, SMHI Molntjänster för GIS, Stockholm

Bakom kulisserna. SMHI webservices. Infrastruktur och säkerhetslösningar Demonstration av webservices

Objektorienterad programmering

Projektrapport EDA095

F5 Introduktion till digitalteknik

Webbtjänster med API er

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

Prototyping. Planera och genomföra webbproduktionsprojekt. Innehåll. Fördelarna med Pappersprototyper. Lofi-prototyp. Prototyping

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

12 principer of agile practice (rörlig)

Hantera informationspaket i system för bevarande

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

GYMKEEPER ANDREAS SÖDERSTRÖM

Prototyping. Susanna Olsson, TietoEnator Funda Denizhan, TietoEnator Ann Lantz, CID

Web Services. Cognitude 1

Webservice tjänsten GetPerson Slagning mot befolkningsregister

Operatörer och användargränssnitt vid processtyrning

MTM:S INFORMATIONSSERIE. Taktila bilderböcker. Att läsa med fingrarna

Enhetstester på.netplattformen

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Referensarkitektur: T-boken, RIV-TA och tjänstekontrakt Referensimplementationen av T-boken: SKLTP


RDT Externt Webbtjänst Gränssnitt

Projektpresentation Wapspel

Therese Hansson & Magnus Jonsson. Motivationsfaktorer - Test inom Agila utvecklingsprojekt

Testdriven utveckling. Teorin bakom testdriven utveckling. Bakgrund. Januari 2009, KTH. Alexander Tarnowski

KUNDREGISTER Sid 2(7) Teknisk specifikation

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Senior utvecklare/arkitekt Rama Pour Rajaei Utbildningar Certifieringar Kontaktinformation

Designmönster - EMW. Kent Petersson epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL:

LOGISTIKSYSTEM FÖR SNABBA HJULET AB UTVECKLINGSPROCESS BASERAD PÅ DR. DEBORAH J. MAYHEW S THE USABILITY ENGINEERING LIFECYCLE

Rapport från Läkemedelsverket

Föreläsning 6: Introduktion av listor

Retrieve a set of frequently asked questions about digital loans and their answers

Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga A. Tekniska ramverk. Version: 1.0

Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter

En snabb titt på XML LEKTION 6

Facit Tentamen 17/3 Informationsinfrastruktur

Automater. Matematik för språkteknologer. Mattias Nilsson

Chapter 3: Using Classes and Objects

Handledning Konfigurationsstyrning tjänstedomäner

Rhino3D. Schackbräde. Krav. Några detaljer som kan vara bra att känna till:

Skriftlig tentamen i kursen TDTS04 Datornät och distribuerade system kl. 8 12

Elektroniskt informationsutbyte mellan arbetsgivare och Försäkringskassan. Information om filöverföring

Identitetsfederationer

Laboration 2: Ett kommunikationssystem

Nordisk balansavräkning - NBS. NBS informationsdag - Arlanda Meddelandeflöden Jan Owe

Xpmetodik inom Enterpriseutveckling

Kurser och seminarier från AddQ Consulting

Introduktion till arv

RDT Externt Webbtjänst Gränssnitt

HexaFlip. Kravspecifikation

Datum Vår referens Sida Dnr: /72 1(8) 1 Kravspecifikation för upphandling av växtskötsel och fruktleverans

Närmare riktlinjer och tillämpningsanvisningar för Oskarshamns kommuns finanspolicy för avsnitten 5, 6, och 7

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Angreppssätt. Vilka är våra studieobjekt? Population och stickprov

Redogörelse för utvecklingsprocessen av spelet The Legend of Chalmers

FHIR OCH INTEROPERABILITET I SJUKVÅRDEN OSKAR THUNMAN

Den första 3D-utskrivna cykelramen i metall har tillverkats av Renishaw åt Empire Cycles


Resultatrapport. Utvärdering. Anbudslämnare. Utvärderingskriterium

24-timmarsmyndigheten

Objektorientering Användning

Integrering av formgivningsprocessen i en produktutvecklingsprocess

JavaScript in SharePoint and not just for Apps. Wictor Wilén

Integrationsmöjligheter till Quality ID

DB, DATA, LOGIC, EXPOSURE (WEB)

Projekt i Nätverksprogrammering. MegaNet Handledare: Pierre Nugues

Digitalt lärande och programmering i klassrummet

Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga A. Tekniska ramverk. Version: 3.0

Reform av bedrägerifilter LTH Ingenjörshögskolan vid Campus Helsingborg Institutionen för datavetenskap

Nulägesanalys & Kravspecifikation

TJÄNSTEBESKRIVNING FASAD Tjänstebaserad direktåtkomst Adress

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Schematransformation SLU

VIDEODAGBOKEN. Individuellt Mjukvaruutvecklingsprojekt. En dagbok i videoform online. Robert Forsgren (rf222ce) UD

AGILA METODER. (för oss som inte kodar) Nina Berlin

Med den här boken får du: Författaren:

Bas - Utvecklingsstöd

Transkript:

Testdriven utveckling av Web Services Ole Matzura eviware 1

Vad är Test-Driven utveckling? 2

Test Driven Utveckling 2 Grundregler (Kent Beck) Skriv aldrig kod utan ett fallerande test Eliminera duplicering Tester ska vara automatiserade, enkla och testa av så små enheter som möjligt unit-tester Tester skrivs alltid innan eftersträvad funktionalitet / förbättringar implementeras Refaktorera för att optimera kod, testerna = skyddsnät 3

TDD Processen Specifikation / Krav måste vara tydliga och uppfattade! T.ex. User-stories, Sekvens-diagram, etc Följande iterative process används sedan: 1. Skapa ett test 2. Kör alla tester och se att det nya fallerar (viktigt!) 3. Implementera 4. Kör alla tester och se att de går igenom 5. Refaktorera koden efter behov 6. Börja om till specifikationen är uppfylld 4

Externa beroenden Externa beroenden som koden har bör alltid abstraheras i gränssnitt som kan mockas/simuleras Mock-objekt kan både delta i testet genom att validera input och returnera förväntat data Nackdel: de externa beroenden testas inte: tester med riktiga externa beroende; integrations-tester 5

TDD Fördelar Fokus på funktionalitet som faktiskt behövs Utveckling sker i små steg -> fel hittas tidigt Abstraktion av externa beroenden leder till ökad modularisering Fokus på test leder till ökad kvalitet Refaktorerings-säker kod Tester = Utvecklardokumentation 6

TDD Myter En lösning måsta testas till 100% Unit-tester = Specifikation Det räcker med unit-tester TDD räcker som test-insats i ett projekt TDD skalar inte 7

TDD i ett större perspektiv : AMDD Agile Model Driven Development hanterar övergripande frågor 1. Iteration 0 : System-vision Projektets omfattning Övergripande krav Arkitekturell vision 2. Iteration 1..X : Utveckling Modellering TDD Reviews (helst...) 8

Vad är Web Services? 9

Web Services XML-baserade meddelandeutbyten Vanligtvis SOAP / HTTP som meddelande / transport-protokoll Tjänstegränssnitt definieras i WSDL (Web Service Description Language) Meddelanden definieras inom en WSDL med XML Schema En uppsjö av standarder (kallas för WS-*, WS-Star ) finns för t.ex. Säkerhet WS-Security Tillförlitlighet WS-ReliableMessaging Etc.. 10

Web Services och SOA SOA är ett arkitektur-mönster, inte en teknologi SOA kan realiseras utan Web Services Web Services kan finnas utan SOA Web Services passar dock väl i en SOA pga deras abstrakta definition meddelande-centrering lösa kopplingar teknikoberoende 11

Web Services och REST REST (Representational State Transfer) är i grunden ett design-mönster för informationsöverföring Resurser exponeras via URL:ar och bearbetas via HTTP HTTP används som envelope istället för t.ex. SOAP Används lite slarvigt för att beskriva XML / HTTP (utan SOAP/WSDL) Saknar standardiserat definitions-språk JSR-311 : JAX-RS Redan nu finns dock visst REST stöd i JAX-WS 12

Hur sker utveckling av Web Services i Java? 13

Utveckling av Web Services i Java Utmaningar Översätta meddelanden till/från java-objekt Meddelandecentrering vs RPC Hantera WS-* standarder Välja Ramverk (Axis, CXF, SpringWS, JWSDP, JBossWS, etc..) Standarder JAX-WS annotations-baserat JAX-RPC konfigurations-baserat Verktyg för generering av kod <-> WSDL 14

Kod-driven utveckling av Web Services Utgå från kod, generera WSDL via verktyg Fördelar : absolut enklast kräver mindre WSDL kunskap vanliga POJOs kan exponeras standardiserat i Java (JAX-WS) Nackdelar : lämpar sig ffa för RPC genererad WSDL inte alltid som man vill Ramverk kan sätta begränsningar 15

Kontraktsdriven utveckling med WSDL / XML Schema Utgå ifrån WSDL / XML Schema, generera kod via verktyg Fördelar : Lättare att skapa meddelande-centrerade gränssnitt WSDL kan dela XML-scheman, versioneras, stödja standarder etc. efter behov. Ej bundet till funktionalitet i ramverk och kan lätt byta ramverk WSDL kan ses som en design-specifikation Nackdelar: Kräver WSDL kunskaper Kan vara mer tidskrävande Inte alla ramverk stödjer alls WSDL konstruktioner 16

Test och Mockning av Web Services Funktionella Tester mot WSDL kontraktet Black Box tester Kan köras mot olika miljöer / implementationer Kan köras kontinuerligt för t.ex. Övervakning Kan mha mock skapas utan befintlig implementation Bör kunna köras via verktyg för en CI/CT miljö Mockning / Simulering för klient-tester Skapande av tester innan implementation finns på plats Mockning av externa beroenden soapui! 17

Hur applicera TDD på Web Service utveckling? 18

Hur Applicera TDD på WS Utveckling? Vid kod-driven utveckling tester kan skrivas i java direkt mot web-service objekten innan de publiceras som web services = standard unit-tester Vid både kod och kontraktsdriven utveckling tester kan skrivas mot tomma web-services som endera publiceras eller genereras från befintlig kod/wsdl Vid kontraktsdriven utveckling Tester kan skapas mot mockade web services redan innan kod genereras/implementeras 19

När man tänker efter... Så passar TDD alldeles utmärkt till Kontrakts-driven utveckling av Web Services! 20

TDD vid kontraktsdriven utveckling WSDL:en fungerar som specifikation och utökas för varje iteration Sen: Operationer/Meddelanden skapas via prototyper 1. Skapa test(er) mot tillägget i WSDL:en 2. Kör alla tester och se att det nya fallerar 3. Generera kod och implementera 4. Kör alla tester och se att de går igenom 5. Refaktorera koden efter behov 6. Börja om Bra på pappret, men hur är det i praktiken? 21

Demo Skapa specifikation/wsdl inför TDD iteration Vår demo-tjänst: OrderService addorder <addorder> <productid></productid> <quantity></quantity> </addorder> <addorderreceipt> <orderid></orderid> </addorderreceipt> 22

Demo! 23

Demo Skapa specifikation/wsdl inför TDD iteration Vår demo-tjänst: OrderService addorder getorders getorders: <getorders> <productid></productid> </addorder> <orderlist> <order> <orderid></orderid> <productid></productid> <quantity></quantity> </order> </orderlist> 24

Demo? 25

Utökat användande av Mockning vid WS-utveckling 1. WSDL soapui 2. Mock 3. Test 2-4. Implementation 2-4. Klient 26

Tack! ole@eviware.com http://www.eviware.com 27