SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Spring Stack Testing:
               Continuous integration,
                Continuous Agitation


                              Massimiliano Dessì CRS4
 http://wiki.java.net/bin/view/People/MassimilianoDessi

Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         1
Cagliari, 28 ottobre 2006
Lo speaker
  Consulente Java, Spring e Jetspeed per Società e Università
  Co-fondatore e consigliere Java User Group Sardegna (2002)
  Fondatore e coordinatore degli User Group:
     Spring Framework Italian User Group (70 utenti)
     Jetspeed Italian User Group (27 utenti)
  Jug Avis Web (Spring) Lead
  Vari talk tecnici e articoli dal 2003: Mokabyte, Dev, Java
  Journal, Programmazione.it, Jug Sardegna, Java Conference
  Utilizza Spring da Luglio 2004, ad oggi 12 progetti: Turismo,
  Banche, Open Source, Pubblica Amministrazione

Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         2
Cagliari, 28 Ottobre 2006
Spring Framework
 Leading full-stack Java/J2EE application framework, Spring
 delivers significant benefits for many projects, reducing
 development effort and costs while improving test coverage
 and quality.




 We believe not only that J2EE development should be much
 simpler than the mixture of drudgery and complexity it’s
 often made out to be, but that developing J2EE applications
 should be fun.
Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         3
Cagliari, 28 Ottobre 2006
Non sono tutte rose e fiori...
Purtroppo utilizzare software Open Source non significa
automaticamente che il proprio progetto sia di ottima qualità.
Se è vero che usando Spring si scrive meno codice, non è detto
che “magicamente” le nostre applicazioni diventino migliori.
Spring ha già di suo molte caratteristiche “sotto il cofano”,
come l'uso di variabili ThreadLocal, molte classi Template per
l'utilizzo di Api JEE, l'uso di default di singole istanze di oggetti
condivise sul modello delle Servlet, astrazioni, programmazione
completamente ad Interfacce, programmazione ad aspetti,
eppure tutto ciò può essere usato male.
Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         4
Cagliari, 28 Ottobre 2006
Dove si può sbagliare ?
Il primo rischio è usare Spring ma scrivere il codice alla
maniera “ortodossa” JEE, Spring diventa solo un jar in più nel
classpath, in questo modo Spring diventa solo una sigla per il
marketing, e si perde il valore aggiunto che può portare.
Il secondo è usare di usare Spring, ma non scrivere codice OO.
Il terzo è di farsi generare interamente il codice da tool
appositi, lo sviluppo non è più nelle mani del team di sviluppo,
ma di chi ha fatto il tool di generazione, magari vengono
generati pure i test, lo sviluppo guidato dai wizard...


Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         5
Cagliari, 28 Ottobre 2006
Ho cambiato un jar e il tool di generazione è esploso !
          Ho fatto un commit e non funziona più nulla !




                                                              Continuous Stress...

Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         6
Cagliari, 28 Ottobre 2006
Test: No Fear !
Aiutano a scrivere codice migliore,
perchè i difetti vengono individuati
prima.
Codice difficile da testare avrà
costi maggiori quando i difetti
verranno trovati successivamente.
Aumenta la percezione della
qualità effettiva del codice scritto.
Diminuisce il costo degli errori.


Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         7
Cagliari, 28 Ottobre 2006
Buoni valori, Buone Abitudini

   Programmazione OO
   Evitare complessità non necessaria, la cosa più semplice
   che possa funzionare (Xp)
   Facile da testare (aumenta la conoscenza del codice scritto
   facilitando i miglioramenti e il refactoring)




Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         8
Cagliari, 28 Ottobre 2006
Cosa si può fare per avere buone
           abitudini ?
 Pensare le applicazioni completamente ad oggetti, classi con
 una sola responsabilità.
 Una classe con un metodo da 500 righe anche se funziona mi
 presenterà il prezzo del suo mantenimento in futuro...
 Programmare per interfacce, oltre a poter migliorare
 singole porzioni di applicazione cambiando l'implementazione,
 verrà più semplice anche scrivere i test
 Lasciare che i test guidino lo sviluppo, non i wizard dei tool.



Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         9
Cagliari, 28 Ottobre 2006
TDD
 Scrivo meno codice perchè scrivo solo quello necessario
 I bachi non ritornano
 Le nuove funzionalità non rompono il funzionamento
 del sistema
 Feedback immediato
 L'applicazione avrà la forma più semplice possibile




                                        Tradotto: Lavori meglio e sei più produttivo

Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         10
Cagliari, 28 Ottobre 2006
Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         11
Cagliari, 28 Ottobre 2006
Tipi di Test :Unitari
   Unitari: Testo le classi senza Spring o altri container,
    usando dei MockObject dove necessario.
    Controller:




Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         12
Cagliari, 28 Ottobre 2006
Tipi di Test : integrazione
Utilizzando Spring, esattamente come a runtime




Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         13
Cagliari, 28 Ottobre 2006
Code Coverage

   Una volta scritti i test, in maniera automatica devo avere
  indicazione sulla percentuale della applicazione
   coperta dai test.


   Ho il feedback su quali oggetti devo ancora testare, o
   quali metodi ancora non testati.




Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         14
Cagliari, 28 Ottobre 2006
Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         15
Cagliari, 28 Ottobre 2006
Test di Accettazione
  Sono quelli che il cliente chiede perchè ai suoi occhi il sistema
  soddisfi i requisiti richiesti.
  Può scrivere lui stesso i requisiti pur non essendo un tecnico
 I test vengono
 “scritti” anche
 con un
 plugin per
 firefox




Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         16
Cagliari, 28 Ottobre 2006
Integrazione Continua
  Integro spesso il mio lavoro con quello del team
  Ho un feedback rapido sui cambiamenti (report, indicatori)
  Vengono mitigati i costi degli errori
  Ad intervalli regolari, il sistema di build continuo, verificata
  immediatamente i cambiamenti, se il build e i test hanno
  successo il codice viene “taggato”.

   Imperfect tests, run frequently, are much better than
  perfect tests that are never written at all.
  Martin Fowler



Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         17
Cagliari, 28 Ottobre 2006
Con ant viene automatizzata:
   la creazione del db, l'inserimento dei dati di test,
   l'esecuzione della suite di test dell'intera applicazione
   Il code Coverage con Clover o Emma,
   la generazione dei report di Junit di Clover e di Emma
   L' esecuzione dei test di accettazione con Selenium
 , e la generazione dei report                    con i risultati
  La documentazione sulla configurazione (beandoc) e delle
  classi (Javadoc)
 Il deploy della applicazione

Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         18
Cagliari, 28 Ottobre 2006
Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         19
Cagliari, 28 Ottobre 2006
Luntbuild
 Ora è necessario che i task di ant vengano eseguiti,
  in maniera            automatica e schedulata, per poter creare un
  ambiente di integrazione continua con cui si può avere un
  feedback immediato sulla intera applicazione




Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         20
Cagliari, 28 Ottobre 2006
Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         21
Cagliari, 28 Ottobre 2006
Per la Demo Live ci vediamo
                             al Javaday a
                              Cagliari il
                          25 novembre 2006



                                               Have a lot of
                                                             Fun !


Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         22
Cagliari, 28 Ottobre 2006
Ringraziamenti.




                                           Spring Framework Team
                                                  Grazie del lavoro !




Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         23
Cagliari, 28 Ottobre 2006
Grazie per l'attenzione


         http://www.jugsardegna.org/vqwiki/jsp/Wiki?MassimilianoDessi

           http://wiki.java.net/bin/view/People/MassimilianoDessi
                        http://www.jroller.com/page/desmax


Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation
                                                                                         24
Cagliari, 28 Ottobre 2006

Mais conteúdo relacionado

Mais procurados

PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
 
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftAsp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringMarcello Teodori
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular jsRiccardo Cardin
 
Tutte le novità di ASP.NET MVC3
Tutte le novità di ASP.NET MVC3Tutte le novità di ASP.NET MVC3
Tutte le novità di ASP.NET MVC3Manuel Scapolan
 
Spring Framework
Spring FrameworkSpring Framework
Spring FrameworkNaLUG
 

Mais procurados (7)

PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftAsp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular js
 
Tutte le novità di ASP.NET MVC3
Tutte le novità di ASP.NET MVC3Tutte le novità di ASP.NET MVC3
Tutte le novità di ASP.NET MVC3
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 

Semelhante a Spring Stack Testing:Continuous integration,Continuous Agitation

Fiera di Pordenone 26/04/2014 - Testing in Ubuntu
Fiera di Pordenone 26/04/2014 - Testing in UbuntuFiera di Pordenone 26/04/2014 - Testing in Ubuntu
Fiera di Pordenone 26/04/2014 - Testing in UbuntuCarla Sella
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSergio Santoro
 
Unit Tests VS End To End Tests
Unit Tests VS End To End TestsUnit Tests VS End To End Tests
Unit Tests VS End To End Testsmimmozzo_
 
Unit Test di Gabriele Seroni
Unit Test di Gabriele SeroniUnit Test di Gabriele Seroni
Unit Test di Gabriele SeroniGiuneco S.r.l
 
PowerMock TDD User Group Milano
PowerMock TDD User Group MilanoPowerMock TDD User Group Milano
PowerMock TDD User Group MilanoMassimo Groppelli
 
Software testing with mocking framework (Android App)
Software testing with mocking framework (Android App)Software testing with mocking framework (Android App)
Software testing with mocking framework (Android App)gioacchinolonardo
 
Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013DomusDotNet
 
Le 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile DayLe 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile DayClaudio Perrone
 
Lavorare con applicazioni Brownfield: il caso di 39x27.com
Lavorare con applicazioni Brownfield: il caso di 39x27.comLavorare con applicazioni Brownfield: il caso di 39x27.com
Lavorare con applicazioni Brownfield: il caso di 39x27.comSimone Chiaretta
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del SoftwareYeser Rema
 
Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016Luciano Amodio
 
Il tuo team "agile" scrive codice "flaccido"? Forse scrum non basta
Il tuo team "agile" scrive codice "flaccido"? Forse scrum non bastaIl tuo team "agile" scrive codice "flaccido"? Forse scrum non basta
Il tuo team "agile" scrive codice "flaccido"? Forse scrum non bastaStefano Muro
 

Semelhante a Spring Stack Testing:Continuous integration,Continuous Agitation (20)

Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
 
Unit test
Unit testUnit test
Unit test
 
Testing
TestingTesting
Testing
 
Workshop: Introduzione ad TDD
Workshop: Introduzione ad TDDWorkshop: Introduzione ad TDD
Workshop: Introduzione ad TDD
 
Dessi Tech Day2008 Cagliari
Dessi Tech Day2008 CagliariDessi Tech Day2008 Cagliari
Dessi Tech Day2008 Cagliari
 
Fiera di Pordenone 26/04/2014 - Testing in Ubuntu
Fiera di Pordenone 26/04/2014 - Testing in UbuntuFiera di Pordenone 26/04/2014 - Testing in Ubuntu
Fiera di Pordenone 26/04/2014 - Testing in Ubuntu
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven Development
 
Unit Tests VS End To End Tests
Unit Tests VS End To End TestsUnit Tests VS End To End Tests
Unit Tests VS End To End Tests
 
Unit testing 101
Unit testing 101Unit testing 101
Unit testing 101
 
Unit Test di Gabriele Seroni
Unit Test di Gabriele SeroniUnit Test di Gabriele Seroni
Unit Test di Gabriele Seroni
 
PowerMock TDD User Group Milano
PowerMock TDD User Group MilanoPowerMock TDD User Group Milano
PowerMock TDD User Group Milano
 
Software testing with mocking framework (Android App)
Software testing with mocking framework (Android App)Software testing with mocking framework (Android App)
Software testing with mocking framework (Android App)
 
Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013
 
Le 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile DayLe 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile Day
 
Lavorare con applicazioni Brownfield: il caso di 39x27.com
Lavorare con applicazioni Brownfield: il caso di 39x27.comLavorare con applicazioni Brownfield: il caso di 39x27.com
Lavorare con applicazioni Brownfield: il caso di 39x27.com
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del Software
 
Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016
 
Il tuo team "agile" scrive codice "flaccido"? Forse scrum non basta
Il tuo team "agile" scrive codice "flaccido"? Forse scrum non bastaIl tuo team "agile" scrive codice "flaccido"? Forse scrum non basta
Il tuo team "agile" scrive codice "flaccido"? Forse scrum non basta
 

Mais de Massimiliano Dessì

When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...Massimiliano Dessì
 
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome Massimiliano Dessì
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudMassimiliano Dessì
 
Web Marketing Training 2014 Community Online
Web Marketing Training 2014 Community OnlineWeb Marketing Training 2014 Community Online
Web Marketing Training 2014 Community OnlineMassimiliano Dessì
 
Vert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMVert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMMassimiliano Dessì
 
Reactive applications Linux Day 2013
Reactive applications Linux Day 2013Reactive applications Linux Day 2013
Reactive applications Linux Day 2013Massimiliano Dessì
 
Scala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVCScala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVCMassimiliano Dessì
 
Codemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_sprayCodemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_sprayMassimiliano Dessì
 
Why we cannot ignore functional programming
Why we cannot ignore functional programmingWhy we cannot ignore functional programming
Why we cannot ignore functional programmingMassimiliano Dessì
 
Three languages in thirty minutes
Three languages in thirty minutesThree languages in thirty minutes
Three languages in thirty minutesMassimiliano Dessì
 

Mais de Massimiliano Dessì (20)

Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
 
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
 
Hacking Maven Linux day 2017
Hacking Maven Linux day 2017Hacking Maven Linux day 2017
Hacking Maven Linux day 2017
 
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
 
Docker dDessi november 2015
Docker dDessi november 2015Docker dDessi november 2015
Docker dDessi november 2015
 
Docker linuxday 2015
Docker linuxday 2015Docker linuxday 2015
Docker linuxday 2015
 
Openshift linuxday 2014
Openshift linuxday 2014Openshift linuxday 2014
Openshift linuxday 2014
 
Web Marketing Training 2014 Community Online
Web Marketing Training 2014 Community OnlineWeb Marketing Training 2014 Community Online
Web Marketing Training 2014 Community Online
 
Vert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMVert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVM
 
Reactive applications Linux Day 2013
Reactive applications Linux Day 2013Reactive applications Linux Day 2013
Reactive applications Linux Day 2013
 
Scala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVCScala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVC
 
Codemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_sprayCodemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_spray
 
Why we cannot ignore functional programming
Why we cannot ignore functional programmingWhy we cannot ignore functional programming
Why we cannot ignore functional programming
 
Scala linux day 2012
Scala linux day 2012 Scala linux day 2012
Scala linux day 2012
 
Three languages in thirty minutes
Three languages in thirty minutesThree languages in thirty minutes
Three languages in thirty minutes
 
MongoDB dessi-codemotion
MongoDB dessi-codemotionMongoDB dessi-codemotion
MongoDB dessi-codemotion
 
MongoDB Webtech conference 2010
MongoDB Webtech conference 2010MongoDB Webtech conference 2010
MongoDB Webtech conference 2010
 
RESTEasy
RESTEasyRESTEasy
RESTEasy
 
Spring Roo Internals Javaday IV
Spring Roo Internals Javaday IVSpring Roo Internals Javaday IV
Spring Roo Internals Javaday IV
 

Último

Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 

Último (9)

Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 

Spring Stack Testing:Continuous integration,Continuous Agitation

  • 1. Spring Stack Testing: Continuous integration, Continuous Agitation Massimiliano Dessì CRS4 http://wiki.java.net/bin/view/People/MassimilianoDessi Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 1 Cagliari, 28 ottobre 2006
  • 2. Lo speaker Consulente Java, Spring e Jetspeed per Società e Università Co-fondatore e consigliere Java User Group Sardegna (2002) Fondatore e coordinatore degli User Group: Spring Framework Italian User Group (70 utenti) Jetspeed Italian User Group (27 utenti) Jug Avis Web (Spring) Lead Vari talk tecnici e articoli dal 2003: Mokabyte, Dev, Java Journal, Programmazione.it, Jug Sardegna, Java Conference Utilizza Spring da Luglio 2004, ad oggi 12 progetti: Turismo, Banche, Open Source, Pubblica Amministrazione Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 2 Cagliari, 28 Ottobre 2006
  • 3. Spring Framework Leading full-stack Java/J2EE application framework, Spring delivers significant benefits for many projects, reducing development effort and costs while improving test coverage and quality. We believe not only that J2EE development should be much simpler than the mixture of drudgery and complexity it’s often made out to be, but that developing J2EE applications should be fun. Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 3 Cagliari, 28 Ottobre 2006
  • 4. Non sono tutte rose e fiori... Purtroppo utilizzare software Open Source non significa automaticamente che il proprio progetto sia di ottima qualità. Se è vero che usando Spring si scrive meno codice, non è detto che “magicamente” le nostre applicazioni diventino migliori. Spring ha già di suo molte caratteristiche “sotto il cofano”, come l'uso di variabili ThreadLocal, molte classi Template per l'utilizzo di Api JEE, l'uso di default di singole istanze di oggetti condivise sul modello delle Servlet, astrazioni, programmazione completamente ad Interfacce, programmazione ad aspetti, eppure tutto ciò può essere usato male. Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 4 Cagliari, 28 Ottobre 2006
  • 5. Dove si può sbagliare ? Il primo rischio è usare Spring ma scrivere il codice alla maniera “ortodossa” JEE, Spring diventa solo un jar in più nel classpath, in questo modo Spring diventa solo una sigla per il marketing, e si perde il valore aggiunto che può portare. Il secondo è usare di usare Spring, ma non scrivere codice OO. Il terzo è di farsi generare interamente il codice da tool appositi, lo sviluppo non è più nelle mani del team di sviluppo, ma di chi ha fatto il tool di generazione, magari vengono generati pure i test, lo sviluppo guidato dai wizard... Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 5 Cagliari, 28 Ottobre 2006
  • 6. Ho cambiato un jar e il tool di generazione è esploso ! Ho fatto un commit e non funziona più nulla ! Continuous Stress... Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 6 Cagliari, 28 Ottobre 2006
  • 7. Test: No Fear ! Aiutano a scrivere codice migliore, perchè i difetti vengono individuati prima. Codice difficile da testare avrà costi maggiori quando i difetti verranno trovati successivamente. Aumenta la percezione della qualità effettiva del codice scritto. Diminuisce il costo degli errori. Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 7 Cagliari, 28 Ottobre 2006
  • 8. Buoni valori, Buone Abitudini Programmazione OO Evitare complessità non necessaria, la cosa più semplice che possa funzionare (Xp) Facile da testare (aumenta la conoscenza del codice scritto facilitando i miglioramenti e il refactoring) Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 8 Cagliari, 28 Ottobre 2006
  • 9. Cosa si può fare per avere buone abitudini ? Pensare le applicazioni completamente ad oggetti, classi con una sola responsabilità. Una classe con un metodo da 500 righe anche se funziona mi presenterà il prezzo del suo mantenimento in futuro... Programmare per interfacce, oltre a poter migliorare singole porzioni di applicazione cambiando l'implementazione, verrà più semplice anche scrivere i test Lasciare che i test guidino lo sviluppo, non i wizard dei tool. Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 9 Cagliari, 28 Ottobre 2006
  • 10. TDD Scrivo meno codice perchè scrivo solo quello necessario I bachi non ritornano Le nuove funzionalità non rompono il funzionamento del sistema Feedback immediato L'applicazione avrà la forma più semplice possibile Tradotto: Lavori meglio e sei più produttivo Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 10 Cagliari, 28 Ottobre 2006
  • 11. Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 11 Cagliari, 28 Ottobre 2006
  • 12. Tipi di Test :Unitari Unitari: Testo le classi senza Spring o altri container, usando dei MockObject dove necessario. Controller: Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 12 Cagliari, 28 Ottobre 2006
  • 13. Tipi di Test : integrazione Utilizzando Spring, esattamente come a runtime Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 13 Cagliari, 28 Ottobre 2006
  • 14. Code Coverage Una volta scritti i test, in maniera automatica devo avere indicazione sulla percentuale della applicazione coperta dai test. Ho il feedback su quali oggetti devo ancora testare, o quali metodi ancora non testati. Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 14 Cagliari, 28 Ottobre 2006
  • 15. Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 15 Cagliari, 28 Ottobre 2006
  • 16. Test di Accettazione Sono quelli che il cliente chiede perchè ai suoi occhi il sistema soddisfi i requisiti richiesti. Può scrivere lui stesso i requisiti pur non essendo un tecnico I test vengono “scritti” anche con un plugin per firefox Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 16 Cagliari, 28 Ottobre 2006
  • 17. Integrazione Continua Integro spesso il mio lavoro con quello del team Ho un feedback rapido sui cambiamenti (report, indicatori) Vengono mitigati i costi degli errori Ad intervalli regolari, il sistema di build continuo, verificata immediatamente i cambiamenti, se il build e i test hanno successo il codice viene “taggato”. Imperfect tests, run frequently, are much better than perfect tests that are never written at all. Martin Fowler Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 17 Cagliari, 28 Ottobre 2006
  • 18. Con ant viene automatizzata: la creazione del db, l'inserimento dei dati di test, l'esecuzione della suite di test dell'intera applicazione Il code Coverage con Clover o Emma, la generazione dei report di Junit di Clover e di Emma L' esecuzione dei test di accettazione con Selenium , e la generazione dei report con i risultati La documentazione sulla configurazione (beandoc) e delle classi (Javadoc) Il deploy della applicazione Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 18 Cagliari, 28 Ottobre 2006
  • 19. Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 19 Cagliari, 28 Ottobre 2006
  • 20. Luntbuild Ora è necessario che i task di ant vengano eseguiti, in maniera automatica e schedulata, per poter creare un ambiente di integrazione continua con cui si può avere un feedback immediato sulla intera applicazione Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 20 Cagliari, 28 Ottobre 2006
  • 21. Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 21 Cagliari, 28 Ottobre 2006
  • 22. Per la Demo Live ci vediamo al Javaday a Cagliari il 25 novembre 2006 Have a lot of Fun ! Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 22 Cagliari, 28 Ottobre 2006
  • 23. Ringraziamenti. Spring Framework Team Grazie del lavoro ! Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 23 Cagliari, 28 Ottobre 2006
  • 24. Grazie per l'attenzione http://www.jugsardegna.org/vqwiki/jsp/Wiki?MassimilianoDessi http://wiki.java.net/bin/view/People/MassimilianoDessi http://www.jroller.com/page/desmax Massimiliano Dessì, Spring Stack Testing: Continuous integration, Continuous Agitation 24 Cagliari, 28 Ottobre 2006