SlideShare uma empresa Scribd logo
1 de 53
Testing Test Driver Development Design Improvement alias Refactoring Continuous Integration  e altre pratiche Domenico Briganti 14/06/2006
Agenda ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Domanda... ,[object Object],[object Object]
I problemi durante lo sviluppo... ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Come migliorare la situazione? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Altri vantaggi di TDD... ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
E ancora… ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Due concetti: Alta coesione e basso accoppiamento ,[object Object],[object Object],[object Object]
Cos’è il  Refactoring  (Design Improvement) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
NON Regressione... ,[object Object],[object Object],[object Object],[object Object]
Ma...quando testare? ,[object Object],[object Object],[object Object],Risposte????
Creare nuovi test:  quando … ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Come scriverli ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ottimizzare i test... ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ne vale la pena? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Costo di un bug e “località” Fonte: http://www.dia.uniroma3.it/~merialdo/didattica/aa2005-2006/poo/trasparenze/POO-17-testing-tecniche.ppt
Quindi... ,[object Object],[object Object],[object Object],[object Object],[object Object]
Testing e fasi di sviluppo ,[object Object],[object Object],Maintenance ,[object Object],[object Object],Coding ,[object Object],[object Object],[object Object],[object Object],Design ,[object Object],[object Object],[object Object],Analysis Attività di test Fase
Tipi di test ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
JUnit, the java testing framework ,[object Object],[object Object],[object Object],[object Object],[object Object]
JUnit Framework http://junit.sourceforge.net
Creare test con JUnit < 4.0 ,[object Object],[object Object],[object Object],[object Object],setUp() testXXX() tearDown()
Creare test con JUnit 4.X ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
I metodi assert / fail ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Unit Best Practices 1/4 ,[object Object],[object Object],[object Object],[object Object]
Unit Best Practices 2/4 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Unit Best Practices 3/4 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Unit Best Practices 4/4 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DEMO ,[object Object],[object Object]
Ant & JUnit Best Practices ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Passaggio di parametri al tests <junit printsummary=&quot;no”… <sysproperty key=&quot;docs.dir” file=&quot;${test.dir}”/> <sysproperty key=&quot;index.dir” file=&quot;${test.dir}/index”/>  … </junit> private String docsDir =  System.getProperty(&quot;docs.dir&quot;); private String indexDir =  System.getProperty(&quot;index.dir&quot;);
TestRunners con swing (SwingUI)
Avviare il test con ANT ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Report del test ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Report del test
DEMO ,[object Object]
Tutto bello...ma... ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Mock Object ,[object Object],[object Object],[object Object],[object Object]
EasyMock ,[object Object],[object Object],[object Object],[object Object]
Usare EasyMock ,[object Object],[object Object],[object Object],[object Object],[object Object]
DEMO ,[object Object],[object Object]
Atri tool xUnit ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Continuous integration ,[object Object],[object Object]
C.I.: punti salienti ,[object Object],[object Object],[object Object],[object Object],[object Object]
Ciclo di build di C.I. VCS Build Artifacts Dir Mail/Sound/Light… 1. Bootstrap 2. Check for modifications 3. Get the revision log Cruise Control Your project’s  Build file Ant, Maven, Make 2. Run Build 5. Publish Artifacts 6. Send  to publisher 1. Get the latest  source 3. Tag source  (optional) Project Specific Adapter - Ant Script 4. Run Build
CruiseControl ,[object Object],[object Object],[object Object],[object Object]
Come funziona CruiseControl
DEMO ,[object Object],[object Object]
Conclusioni ,[object Object]
Di cosa abbiamo parlato...
Riferimenti 1/2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Riferimenti 2/2 ,[object Object],[object Object]
 

Mais conteúdo relacionado

Mais procurados

Java Unit Testing - In container and database testing
Java Unit Testing - In container and database testingJava Unit Testing - In container and database testing
Java Unit Testing - In container and database testingfgianneschi
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven DevelopmentEnnio Masi
 
Test Driven Development for iOS
Test Driven Development for iOSTest Driven Development for iOS
Test Driven Development for iOSAlessandro Ceseno
 
Dependency injection: the good parts
Dependency injection:  the good partsDependency injection:  the good parts
Dependency injection: the good partsMassimo Groppelli
 
Unit Test di Gabriele Seroni
Unit Test di Gabriele SeroniUnit Test di Gabriele Seroni
Unit Test di Gabriele SeroniGiuneco S.r.l
 
Baby Steps TripServiceKata
Baby Steps TripServiceKataBaby Steps TripServiceKata
Baby Steps TripServiceKataAndrea Francia
 
TDD patterns and TDD strategies
TDD patterns and TDD strategiesTDD patterns and TDD strategies
TDD patterns and TDD strategiesAlessandro Ceseno
 
Tdd.Every.Where.21012012
Tdd.Every.Where.21012012Tdd.Every.Where.21012012
Tdd.Every.Where.21012012LEGALDESK
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capturefcospito
 
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...Emerasoft, solutions to collaborate
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSergio Santoro
 
Lezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingLezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingAndrea Della Corte
 

Mais procurados (17)

Java Unit Testing - In container and database testing
Java Unit Testing - In container and database testingJava Unit Testing - In container and database testing
Java Unit Testing - In container and database testing
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven Development
 
Test Driven Development for iOS
Test Driven Development for iOSTest Driven Development for iOS
Test Driven Development for iOS
 
Dependency injection: the good parts
Dependency injection:  the good partsDependency injection:  the good parts
Dependency injection: the good parts
 
Unit Test di Gabriele Seroni
Unit Test di Gabriele SeroniUnit Test di Gabriele Seroni
Unit Test di Gabriele Seroni
 
Baby Steps TripServiceKata
Baby Steps TripServiceKataBaby Steps TripServiceKata
Baby Steps TripServiceKata
 
Unit test
Unit testUnit test
Unit test
 
TDD patterns and TDD strategies
TDD patterns and TDD strategiesTDD patterns and TDD strategies
TDD patterns and TDD strategies
 
Tdd.Every.Where.21012012
Tdd.Every.Where.21012012Tdd.Every.Where.21012012
Tdd.Every.Where.21012012
 
TDD Casi Studio
TDD Casi StudioTDD Casi Studio
TDD Casi Studio
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capture
 
Unit testing 2014
Unit testing 2014Unit testing 2014
Unit testing 2014
 
Java introduzione
Java introduzioneJava introduzione
Java introduzione
 
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven Development
 
Lezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingLezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme Programming
 

Semelhante a Testing

DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...Alessandro Alpi
 
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
 
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
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capturefcospito
 
Android Test Driven Development
Android Test Driven DevelopmentAndroid Test Driven Development
Android Test Driven Developmentsazilla
 
Android Test Driven Development
Android Test Driven DevelopmentAndroid Test Driven Development
Android Test Driven Developmentsazilla
 
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...Boymix81
 
Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)XeDotNet
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5Matteo Baccan
 
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_
 
Tech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloTech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloCodemotion
 
Testing in javascript
Testing in javascriptTesting in javascript
Testing in javascriptPiero Bozzolo
 
TDD in WordPress
TDD in WordPressTDD in WordPress
TDD in WordPresslucatume
 
Delphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingDelphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingMarco Breveglieri
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro Alpi
 

Semelhante a Testing (20)

DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
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
 
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
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capture
 
TTT - Test, Tools and Tips - jug roma
TTT - Test, Tools and Tips - jug romaTTT - Test, Tools and Tips - jug roma
TTT - Test, Tools and Tips - jug roma
 
Build Automation Tips
Build Automation TipsBuild Automation Tips
Build Automation Tips
 
Total Testing in DevOps
Total Testing in DevOpsTotal Testing in DevOps
Total Testing in DevOps
 
Android Test Driven Development
Android Test Driven DevelopmentAndroid Test Driven Development
Android Test Driven Development
 
Android Test Driven Development
Android Test Driven DevelopmentAndroid Test Driven Development
Android Test Driven Development
 
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
Presentazione della Tesi di Laurea Specialistica : STRUMENTI PER LA GENERAZIO...
 
Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5
 
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
 
Tech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloTech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non solo
 
Testing in javascript
Testing in javascriptTesting in javascript
Testing in javascript
 
TDD in WordPress
TDD in WordPressTDD in WordPress
TDD in WordPress
 
Delphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingDelphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del Testing
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL Server
 

Mais de Domenico Briganti (7)

XSLT
XSLT XSLT
XSLT
 
XSL-FO
XSL-FOXSL-FO
XSL-FO
 
XML Schema (XSD)
XML Schema (XSD)XML Schema (XSD)
XML Schema (XSD)
 
Xml annessi e connessi
Xml annessi e connessiXml annessi e connessi
Xml annessi e connessi
 
Jersey Guice AOP
Jersey Guice AOPJersey Guice AOP
Jersey Guice AOP
 
Java codestyle & tipstricks
Java codestyle & tipstricksJava codestyle & tipstricks
Java codestyle & tipstricks
 
Xml Xslt
Xml  XsltXml  Xslt
Xml Xslt
 

Último

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
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
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
 
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
 
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
 
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
 
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
 

Último (9)

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...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
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...
 
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...
 
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...
 
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...
 
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”
 

Testing

  • 1. Testing Test Driver Development Design Improvement alias Refactoring Continuous Integration e altre pratiche Domenico Briganti 14/06/2006
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. Costo di un bug e “località” Fonte: http://www.dia.uniroma3.it/~merialdo/didattica/aa2005-2006/poo/trasparenze/POO-17-testing-tecniche.ppt
  • 17.
  • 18.
  • 19.
  • 20.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31. Passaggio di parametri al tests <junit printsummary=&quot;no”… <sysproperty key=&quot;docs.dir” file=&quot;${test.dir}”/> <sysproperty key=&quot;index.dir” file=&quot;${test.dir}/index”/> … </junit> private String docsDir = System.getProperty(&quot;docs.dir&quot;); private String indexDir = System.getProperty(&quot;index.dir&quot;);
  • 33.
  • 34.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45. Ciclo di build di C.I. VCS Build Artifacts Dir Mail/Sound/Light… 1. Bootstrap 2. Check for modifications 3. Get the revision log Cruise Control Your project’s Build file Ant, Maven, Make 2. Run Build 5. Publish Artifacts 6. Send to publisher 1. Get the latest source 3. Tag source (optional) Project Specific Adapter - Ant Script 4. Run Build
  • 46.
  • 48.
  • 49.
  • 50. Di cosa abbiamo parlato...
  • 51.
  • 52.
  • 53.  

Notas do Editor

  1. Trovare e correggere un problema software dopo la consegna è 100 volte più costoso che nelle fasi di raccolta requisiti e early design.
  2. Quando un test funziona? Quando fallisce! TDD è una delle pratiche che si usano durante lo sviluppo in un team XP. Le altre sono: Whole Team Planning Game Customer Tests Small Releases Simple Design Pair Programming Refactoring Continuos Integration Collective Code Ownerschip Coding Standard Metaphor Sustainable Pace http://www.xprogramming.com/xpmag/whatisxp.htm
  3. Coesione La coesione fa riferimento al numero e alla eterogeneità dei compiti di cui una singola unità è responsabile Se ciascuna unità è responsabile di un singolo compito, diciamo che tale unità ha una alta coesione La coesione si applica alle classi e ai metodi Noi puntiamo ad una alta coesione Un’alta coesione rende più semplice: Capire ciò che fa una classe o un metodo L’uso di nomi appropriati Il riuso delle classi e dei metodi Coesione dei metodi Un metodo dovrebbe essere responsabile di un solo compito ben definito Coesione delle classi Ogni classe dovrebbe rappresentare una singola entità ben definita Accoppiamento L’accoppiamento si riferisce ai legami tra unità separate di un programma Se due classi dipendono strettamente per molti dettagli l’una dall’altra, diciamo che sono strettamente accoppiate Per un codice di qualità dobbiamo puntare ad un basso accoppiamento Un basso accoppiamento permette di: Capire il codice di una classe senza leggere i dettagli delle altre Modificare una classe senza che le modifiche abbiano impatti sulle altre classi Quindi un basso accoppiamento migliora la manutenibilità del software
  4. La manutenzione del software spesso richiede l’aggiunta di nuovo codice Le classi e i metodi tendono così a diventare più lunghi, a perdere in coesione e ad aumentare l’accoppiamento A seguito delle modifiche, per mantenere un’alta coesione ed un basso accoppiamento classi e metodi dovranno essere riorganizzate Questo processo di riorganizzazione del codice viene definito “ refactoring ”
  5. Per mantenere il codice pulito e con un eccellente design abbiamo visto che dobbiamo attenerci ai due parametri principali Basso accoppiamento e alta coesione. Questo significa che dobbiamo rifattorizzare spesso, mantenendo un ottimo design del codice, ma rischiamo di inserire malfunzionamenti dovute alle modifiche. Le suite di test ci proteggono dalla regressione. Controllando ad ogni loro avvio (diverse volte durante la modifica al codice) che il tutto continui a funzionare correttamente.
  6. Regression Test: Qual è la prima cosa da fare quando un bug viene segnalato? Scrivere il test più semplice possibile che fallisce segnalandolo.
  7. Dal fallimento di un test alla rimozione dell’errore deve trascorre pochissimo tempo grazie alla località errori...
  8. “ altrimenti barre rosse” significa che il giorno dopo sai da dove riprendere a lavorare, ma solo se non si è in team! Inoltre “...devi avere 2 problemi…” è essenziale dato che stiamo parlando di unit test, quindi test a livello di classe e isolati tra loro
  9. Nonexecution-Based Testing walk-through Ispezione diretta del codice Cleanroom Nel ciclo di vita incrementale, letture e controlli di qualità del codice. Verifica di correttezza tecniche formali logico-matematiche Execution-Based Testing testing rispetto alle specifiche ( black box testing ) Considera i requisiti nel derivare i test case Non considera la struttura del software testing to code ( white box testing ) test case basati sul codice Considera la struttura del software nel derivare i test case Valutato in termini di coverage (statements, branches, paths, etc.)
  10. A set of assert methods. Messages are only displayed when an assert fails.
  11. Haltonfailute evitarli perchè se c’è un fail durante I test, il buil si blocca con il messaggio “Buil Failed” errorproperty e failureproperty impostano il valore della variabile contenuta a true per far scattare il &lt;fail&gt; sotto &lt;Fail&gt; stampa un messaggio di errore sulla console dopo l’esecuzione di un test fallito
  12. Integrare giornalmente significa ridurre drasticamente il rischio di blocchi e incoerenze più radicali tra le parti software.
  13. Executes every “n” seconds or schedulable at particular times. The process: Bootstrap (setup) Check for modifications Run build Publish results