SlideShare a Scribd company logo
1 of 40
Download to read offline
David Gageot
2010
J6
Let's make this test suite
run faster
Agilité iPhone Java Incubateur
8:15 Accueil des participantsAccueil des participantsAccueil des participantsAccueil des participants
8:40 Mot des organisateurs & Criée des orateursMot des organisateurs & Criée des orateursMot des organisateurs & Criée des orateursMot des organisateurs & Criée des orateurs
9:00 Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)
9:40
10:40
- A1 -
Le terrain Agile
Jean-Philippe Vigniel
- I1-
Hello iPhone
Stephane Tavera
- J1 -
NOSQL also means RDF stores: an
Android case study
Fabrizio Giudci
- X1 -
Le développement durable
Dominic Williams
11:00
12:00
- A2 -
Integration of User Centered Design
in Agile Development of RIA
J. Borkenhagen, J. Desmazières
- I2 -
Développement d'une application
iPhone pilotée par les tests
Emmanuel Etasse, Van-Charles Tran
- J2 -
La Tequila du développement Web
Nicolas Martignole
- X2 -
Cloud Computing: anatomie et
pratique
Marc-Elian Bégin
12:20
13:20
- A3 -
Adoption de l'Agilité par les usages
Xavier Warzee
- I3 -
Distribution d'applications iPhone
en Entreprise: Réalisation d'un
AppStore interne
Géraud de Laval
- J3 -
Vaadin - Rich Web Applications in
Server-side Java without Plug-ins or
JavaScript
Joonas Lehtinen
- X3 -
Les DVCS sont vos amis
Sébastien Douche
Pause repas (50 minutes)Pause repas (50 minutes)Pause repas (50 minutes)Pause repas (50 minutes)
14h10 Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)
14h50
15h50
- A4 -
Scrum, introduction et mise en
oeuvre avec iceScrum
Claude Aubry
- I4 -
Agile iOS Development
Jérôme Layat, Alexander Osterwalder
- J4 -
JAX-RS and Java EE 6
Paul Sandoz
- X4 -
IT Design & Ergonomy
Pascal Petit, Aude Lussigny
16h10
17h10
- A5 -
Agilité : 10 ans déjà
Thierry Cros
- I5 -
Optimizing iOS applications
Marc-Antoine Scheurer
- J5 -
Ecrivez et automatisez vos tests
fonctionnels avec jBehave
Xavier Bourguignon
- X5 -
NoSQL : Enfin de la biodiversité
dans l'écosystème des BD
Olivier Mallassi
17h30
18h30
- A6 -
Lean engineering
Jean-Christophe Dubail
- I6 -
iPhone et Agile, l'amour vache
Guillaume Duquesnay
- J6 -
Let's make this test suite run faster
David Gageot
- X6 -
The feel of Scala
Mario Fusco
Mot de la fin & tombolaMot de la fin & tombolaMot de la fin & tombolaMot de la fin & tombola
Programme de la Conférence
www.soft-shake.ch
Let's make this test suite run faster!
What for ?
Let's make this test suite run faster!
Why?
http://farm1.static.flickr.com/158/349497988_fb751a5e3a_z.jpg
You test early and often
http://farm1.static.flickr.com/97/246816211_573c2901e1_z.jpg?zz=1
Don’t you?
Continuous integration, continuous testing...
http://vator.tv/images/attachments/150609195630ctd.gif
...even continuous deployment
Testing often
http://farm3.static.flickr.com/2505/3772118924_11fe195ef1.jpg
Often means waiting a lot
What for ?
Your coding room doesn’t have to look like this
http://upload.wikimedia.org/wikipedia/commons/3/3f/
Nespresso_boutique.JPG
Tests can be fast
Even if lines of code keep growing
Easy!
Let’s distribute across multiple hudson servers
It doesn’t have to be complicated
I’ll share a few simple tricks
Photo: http://www.flickr.com/photos/zoutedrop/2317065892/
It can make your product better
Simple to test, means simple to write, deploy and USE
http://all-the-movies.cowblog.fr/images/arton1122.jpg
How can we accelerate the tests?
The Cheater
The Lazy
The Brave
The Cheater
The Lazy
The Brave
http://all-the-movies.cowblog.fr/images/arton1122.jpg
Buy a faster machine
http://farm1.static.flickr.com/28/93569705_1c562b413a_z.jpg?zz=1
Tests are cpu/memory bound
Be warned
http://farm5.static.flickr.com/4096/4819945812_735744e0fc_z.jpg
Single threaded tests get slower over time
0
25
50
75
100
2007 2008 2009 2010
Use all the cores
mvn -T1 clean install : 5:05s
mvn -T4 clean install : 3:10s
parallel build with maven3
Use all the cores
parallel build with maven3
Use all the cores
For JUnit/TestNG tests
.
The Cheater
The Lazy
The Brave
http://all-the-movies.cowblog.fr/images/arton1122.jpg
http://geekandpoke.typepad.com/geekandpoke/images/2008/04/24/
turingtest.jpg
Delete redundant tests
It’s so simple, we don’t do it...
Even better, delete dead code
http://farm1.static.flickr.com/58/191393602_3d9b643ab0_z.jpg
To delete yet other useless tests
Work in a sandbox
In-memory database: H2
Behaves more like MySql than Hsqldb
The network is too slow
It’s Not only SQL
If going with NoSQL, take a server that
can run in-process
eg. Voldemort
In-memory SMTP Server
Ethereal
Everything local and in-memory
Apache VFS (Virtual File System)
Spring Resource...
Files
As a bonus, tests will
run smoother
.
The Cheater
The Lazy
The Brave
http://all-the-movies.cowblog.fr/images/arton1122.jpg
Don’t test business rules in integration tests
Unit tests is often a better place
http://upload.wikimedia.org/wikipedia/commons/b/bd/
Contortionist_Ravi_standing.jpg
Don’t test business rules in integration tests
Unit tests is often a better place
Functional test
(on a web page)
10s
Unit test
0.01s
Take the longer integration test
Break it in one faster integration test
and a lot of small unit tests
http://farm2.static.flickr.com/1168/3166709586_96f9a3fd95.jpg
Or mock the slowest layers
eg. functional test with Spring and Mockito
Or mock the slowest layers
eg. functional test with Spring and Mockito
Mocks are
not just for
unit tests
Don’t test through the browser
Selenium is often overkill
Photo: http://www.flickr.com/photos/zoutedrop/2317065892/
«But my application is
complex!»
«My users want complex
features,
My users want Ajax»
«I need to test browser
compatibility!»
Really ?
http://i.zdnet.com/blogs/complexity-and-false-hope.jpg
Complexity has a cost
That you pay each time a test runs
http://thehongkongfixereng.files.wordpress.com/2008/07/couteau-suisse.jpg
Test through the browser the strict minimal
Use javascript unit tests for the rest
http://farm2.static.flickr.com/1168/3166709586_96f9a3fd95.jpg
I tend to be old school
And write server-side code most of the time
http://www.celebridiot.com/wp-content/uploads/2009/06/
rick_astley_death_hoax.jpg
One more thing...
Simplify and optimize your code
Tests will run faster
.
Thank you
Q/A
David Gageot
CTO algodeal.com
The Crowd Sourced
Quant Hedge Fund
@dgageot
javabien.net
Who am I?

More Related Content

Viewers also liked

Rachel spoont portfolio
Rachel spoont portfolioRachel spoont portfolio
Rachel spoont portfolioRachelSpoont
 
KONG Gloves now from Project Sales Corp in India Call +91-98851-49412
KONG Gloves now from Project Sales Corp in India Call +91-98851-49412KONG Gloves now from Project Sales Corp in India Call +91-98851-49412
KONG Gloves now from Project Sales Corp in India Call +91-98851-49412Project Sales Corp
 
Alex pella ultima su participación en la Route du Rhum
Alex pella ultima su participación en la Route du RhumAlex pella ultima su participación en la Route du Rhum
Alex pella ultima su participación en la Route du RhumMarina de Dénia
 
Haya Labs African Mango - Analytical Report
Haya Labs African Mango - Analytical ReportHaya Labs African Mango - Analytical Report
Haya Labs African Mango - Analytical ReportHaya Labs
 
Newsletter Summer 2013
Newsletter Summer 2013Newsletter Summer 2013
Newsletter Summer 2013Zeeshan Ali
 
JUDO LONDRES 2012, SORTEO KIYOSHI UEMATSU/SUGOI URIARTE
JUDO LONDRES 2012, SORTEO KIYOSHI UEMATSU/SUGOI URIARTEJUDO LONDRES 2012, SORTEO KIYOSHI UEMATSU/SUGOI URIARTE
JUDO LONDRES 2012, SORTEO KIYOSHI UEMATSU/SUGOI URIARTEBASQUETEAM
 
Foro Sobre Fundamentos Para Una ConsejeríA AcadéMica En
Foro  Sobre Fundamentos Para Una ConsejeríA AcadéMica EnForo  Sobre Fundamentos Para Una ConsejeríA AcadéMica En
Foro Sobre Fundamentos Para Una ConsejeríA AcadéMica EnMaría Gómez
 
El cannabis como riesgo social. controversias entre expertos y consumidores
El cannabis como riesgo social. controversias entre expertos y consumidoresEl cannabis como riesgo social. controversias entre expertos y consumidores
El cannabis como riesgo social. controversias entre expertos y consumidoresUniversitat Autònoma de Barcelona.
 
Powernet - Scotiabank
Powernet - ScotiabankPowernet - Scotiabank
Powernet - ScotiabankPowernet
 
The Top 5 DITA Conversion and Authoring Pitfalls (and how to avoid them)
The Top 5 DITA Conversion and Authoring Pitfalls (and how to avoid them)The Top 5 DITA Conversion and Authoring Pitfalls (and how to avoid them)
The Top 5 DITA Conversion and Authoring Pitfalls (and how to avoid them)JANA, Inc.
 
Portfolio Personal de Guillermo Irigoras (I): El Valor de una rica experienci...
Portfolio Personal de Guillermo Irigoras (I): El Valor de una rica experienci...Portfolio Personal de Guillermo Irigoras (I): El Valor de una rica experienci...
Portfolio Personal de Guillermo Irigoras (I): El Valor de una rica experienci...Euskaltel, S.A. (Telecomunicaciones)
 

Viewers also liked (17)

Rachel spoont portfolio
Rachel spoont portfolioRachel spoont portfolio
Rachel spoont portfolio
 
Banlieue: Grands ensembles
Banlieue: Grands ensemblesBanlieue: Grands ensembles
Banlieue: Grands ensembles
 
KONG Gloves now from Project Sales Corp in India Call +91-98851-49412
KONG Gloves now from Project Sales Corp in India Call +91-98851-49412KONG Gloves now from Project Sales Corp in India Call +91-98851-49412
KONG Gloves now from Project Sales Corp in India Call +91-98851-49412
 
Proyectos tecnologicos
Proyectos tecnologicosProyectos tecnologicos
Proyectos tecnologicos
 
Julfer S.A. Puertas Cortafuegos de Madera
Julfer S.A. Puertas Cortafuegos de MaderaJulfer S.A. Puertas Cortafuegos de Madera
Julfer S.A. Puertas Cortafuegos de Madera
 
Portfolio personal II: Enfoque y visión profesional
Portfolio personal II: Enfoque y visión profesionalPortfolio personal II: Enfoque y visión profesional
Portfolio personal II: Enfoque y visión profesional
 
Alex pella ultima su participación en la Route du Rhum
Alex pella ultima su participación en la Route du RhumAlex pella ultima su participación en la Route du Rhum
Alex pella ultima su participación en la Route du Rhum
 
Giam unicor
Giam unicorGiam unicor
Giam unicor
 
Praca plastyczna Włochy
Praca plastyczna WłochyPraca plastyczna Włochy
Praca plastyczna Włochy
 
Haya Labs African Mango - Analytical Report
Haya Labs African Mango - Analytical ReportHaya Labs African Mango - Analytical Report
Haya Labs African Mango - Analytical Report
 
Newsletter Summer 2013
Newsletter Summer 2013Newsletter Summer 2013
Newsletter Summer 2013
 
JUDO LONDRES 2012, SORTEO KIYOSHI UEMATSU/SUGOI URIARTE
JUDO LONDRES 2012, SORTEO KIYOSHI UEMATSU/SUGOI URIARTEJUDO LONDRES 2012, SORTEO KIYOSHI UEMATSU/SUGOI URIARTE
JUDO LONDRES 2012, SORTEO KIYOSHI UEMATSU/SUGOI URIARTE
 
Foro Sobre Fundamentos Para Una ConsejeríA AcadéMica En
Foro  Sobre Fundamentos Para Una ConsejeríA AcadéMica EnForo  Sobre Fundamentos Para Una ConsejeríA AcadéMica En
Foro Sobre Fundamentos Para Una ConsejeríA AcadéMica En
 
El cannabis como riesgo social. controversias entre expertos y consumidores
El cannabis como riesgo social. controversias entre expertos y consumidoresEl cannabis como riesgo social. controversias entre expertos y consumidores
El cannabis como riesgo social. controversias entre expertos y consumidores
 
Powernet - Scotiabank
Powernet - ScotiabankPowernet - Scotiabank
Powernet - Scotiabank
 
The Top 5 DITA Conversion and Authoring Pitfalls (and how to avoid them)
The Top 5 DITA Conversion and Authoring Pitfalls (and how to avoid them)The Top 5 DITA Conversion and Authoring Pitfalls (and how to avoid them)
The Top 5 DITA Conversion and Authoring Pitfalls (and how to avoid them)
 
Portfolio Personal de Guillermo Irigoras (I): El Valor de una rica experienci...
Portfolio Personal de Guillermo Irigoras (I): El Valor de una rica experienci...Portfolio Personal de Guillermo Irigoras (I): El Valor de una rica experienci...
Portfolio Personal de Guillermo Irigoras (I): El Valor de una rica experienci...
 

More from soft-shake.ch

soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch
 
soft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easysoft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easysoft-shake.ch
 
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch
 
soft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch
 
soft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch
 
soft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch
 
soft-shake.ch - JBoss AS 7, la révolution
soft-shake.ch - JBoss AS 7, la révolutionsoft-shake.ch - JBoss AS 7, la révolution
soft-shake.ch - JBoss AS 7, la révolutionsoft-shake.ch
 
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coinsoft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coinsoft-shake.ch
 
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch
 
soft-shake.ch - Un zeste d’Erlang dans le shaker!
soft-shake.ch - Un zeste d’Erlang dans le shaker!soft-shake.ch - Un zeste d’Erlang dans le shaker!
soft-shake.ch - Un zeste d’Erlang dans le shaker!soft-shake.ch
 
soft-shake.ch - Déploiement continu sur le cloud avec SlipStream
soft-shake.ch - Déploiement continu sur le cloud avec SlipStreamsoft-shake.ch - Déploiement continu sur le cloud avec SlipStream
soft-shake.ch - Déploiement continu sur le cloud avec SlipStreamsoft-shake.ch
 
soft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecturesoft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecturesoft-shake.ch
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch
 
soft-shake.ch - De Hermes RUP à Hermes Scrum
soft-shake.ch - De Hermes RUP à Hermes Scrumsoft-shake.ch - De Hermes RUP à Hermes Scrum
soft-shake.ch - De Hermes RUP à Hermes Scrumsoft-shake.ch
 
soft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivationsoft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivationsoft-shake.ch
 
soft-shake.ch - Agile qu'es aco : scrum xp lean
soft-shake.ch - Agile qu'es aco : scrum xp leansoft-shake.ch - Agile qu'es aco : scrum xp lean
soft-shake.ch - Agile qu'es aco : scrum xp leansoft-shake.ch
 
soft-shake.ch - Documentation et agilité
soft-shake.ch - Documentation et agilitésoft-shake.ch - Documentation et agilité
soft-shake.ch - Documentation et agilitésoft-shake.ch
 
soft-shake.ch - Agilité = discipline et rigueur ?
soft-shake.ch - Agilité = discipline et rigueur ?soft-shake.ch - Agilité = discipline et rigueur ?
soft-shake.ch - Agilité = discipline et rigueur ?soft-shake.ch
 
soft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changementsoft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changementsoft-shake.ch
 

More from soft-shake.ch (20)

soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
soft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easysoft-shake.ch - WebMatrix: Your Web Made Easy
soft-shake.ch - WebMatrix: Your Web Made Easy
 
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NETsoft-shake.ch - Domotique et robotique avec le micro Framework .NET
soft-shake.ch - Domotique et robotique avec le micro Framework .NET
 
soft-shake.ch - Clojure Values
soft-shake.ch - Clojure Valuessoft-shake.ch - Clojure Values
soft-shake.ch - Clojure Values
 
soft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Grids
 
soft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Caching
 
soft-shake.ch - JBoss AS 7, la révolution
soft-shake.ch - JBoss AS 7, la révolutionsoft-shake.ch - JBoss AS 7, la révolution
soft-shake.ch - JBoss AS 7, la révolution
 
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coinsoft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
soft-shake.ch - Java SE 7: The Fork/Join Framework and Project Coin
 
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
 
soft-shake.ch - Un zeste d’Erlang dans le shaker!
soft-shake.ch - Un zeste d’Erlang dans le shaker!soft-shake.ch - Un zeste d’Erlang dans le shaker!
soft-shake.ch - Un zeste d’Erlang dans le shaker!
 
soft-shake.ch - Déploiement continu sur le cloud avec SlipStream
soft-shake.ch - Déploiement continu sur le cloud avec SlipStreamsoft-shake.ch - Déploiement continu sur le cloud avec SlipStream
soft-shake.ch - Déploiement continu sur le cloud avec SlipStream
 
soft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecturesoft-shake.ch - An introduction to social architecture
soft-shake.ch - An introduction to social architecture
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.js
 
soft-shake.ch - De Hermes RUP à Hermes Scrum
soft-shake.ch - De Hermes RUP à Hermes Scrumsoft-shake.ch - De Hermes RUP à Hermes Scrum
soft-shake.ch - De Hermes RUP à Hermes Scrum
 
soft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivationsoft-shake.ch - Stewardship et motivation
soft-shake.ch - Stewardship et motivation
 
soft-shake.ch - Agile qu'es aco : scrum xp lean
soft-shake.ch - Agile qu'es aco : scrum xp leansoft-shake.ch - Agile qu'es aco : scrum xp lean
soft-shake.ch - Agile qu'es aco : scrum xp lean
 
soft-shake.ch - Documentation et agilité
soft-shake.ch - Documentation et agilitésoft-shake.ch - Documentation et agilité
soft-shake.ch - Documentation et agilité
 
soft-shake.ch - Agilité = discipline et rigueur ?
soft-shake.ch - Agilité = discipline et rigueur ?soft-shake.ch - Agilité = discipline et rigueur ?
soft-shake.ch - Agilité = discipline et rigueur ?
 
soft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changementsoft-shake.ch - Transition agile & Accompagnement au changement
soft-shake.ch - Transition agile & Accompagnement au changement
 

Recently uploaded

A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 

Recently uploaded (20)

A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 

soft-shake.ch - Let's make this test suite run faster

  • 1. David Gageot 2010 J6 Let's make this test suite run faster
  • 2. Agilité iPhone Java Incubateur 8:15 Accueil des participantsAccueil des participantsAccueil des participantsAccueil des participants 8:40 Mot des organisateurs & Criée des orateursMot des organisateurs & Criée des orateursMot des organisateurs & Criée des orateursMot des organisateurs & Criée des orateurs 9:00 Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes)Keynote de Nicolas Martignole (30 minutes) 9:40 10:40 - A1 - Le terrain Agile Jean-Philippe Vigniel - I1- Hello iPhone Stephane Tavera - J1 - NOSQL also means RDF stores: an Android case study Fabrizio Giudci - X1 - Le développement durable Dominic Williams 11:00 12:00 - A2 - Integration of User Centered Design in Agile Development of RIA J. Borkenhagen, J. Desmazières - I2 - Développement d'une application iPhone pilotée par les tests Emmanuel Etasse, Van-Charles Tran - J2 - La Tequila du développement Web Nicolas Martignole - X2 - Cloud Computing: anatomie et pratique Marc-Elian Bégin 12:20 13:20 - A3 - Adoption de l'Agilité par les usages Xavier Warzee - I3 - Distribution d'applications iPhone en Entreprise: Réalisation d'un AppStore interne Géraud de Laval - J3 - Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaScript Joonas Lehtinen - X3 - Les DVCS sont vos amis Sébastien Douche Pause repas (50 minutes)Pause repas (50 minutes)Pause repas (50 minutes)Pause repas (50 minutes) 14h10 Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes)Keynote de Regis Medina (30 minutes) 14h50 15h50 - A4 - Scrum, introduction et mise en oeuvre avec iceScrum Claude Aubry - I4 - Agile iOS Development Jérôme Layat, Alexander Osterwalder - J4 - JAX-RS and Java EE 6 Paul Sandoz - X4 - IT Design & Ergonomy Pascal Petit, Aude Lussigny 16h10 17h10 - A5 - Agilité : 10 ans déjà Thierry Cros - I5 - Optimizing iOS applications Marc-Antoine Scheurer - J5 - Ecrivez et automatisez vos tests fonctionnels avec jBehave Xavier Bourguignon - X5 - NoSQL : Enfin de la biodiversité dans l'écosystème des BD Olivier Mallassi 17h30 18h30 - A6 - Lean engineering Jean-Christophe Dubail - I6 - iPhone et Agile, l'amour vache Guillaume Duquesnay - J6 - Let's make this test suite run faster David Gageot - X6 - The feel of Scala Mario Fusco Mot de la fin & tombolaMot de la fin & tombolaMot de la fin & tombolaMot de la fin & tombola Programme de la Conférence www.soft-shake.ch
  • 3. Let's make this test suite run faster!
  • 4. What for ? Let's make this test suite run faster! Why? http://farm1.static.flickr.com/158/349497988_fb751a5e3a_z.jpg
  • 5. You test early and often http://farm1.static.flickr.com/97/246816211_573c2901e1_z.jpg?zz=1 Don’t you?
  • 6. Continuous integration, continuous testing... http://vator.tv/images/attachments/150609195630ctd.gif ...even continuous deployment
  • 8. What for ? Your coding room doesn’t have to look like this http://upload.wikimedia.org/wikipedia/commons/3/3f/ Nespresso_boutique.JPG
  • 9. Tests can be fast Even if lines of code keep growing
  • 10. Easy! Let’s distribute across multiple hudson servers
  • 11. It doesn’t have to be complicated I’ll share a few simple tricks
  • 12. Photo: http://www.flickr.com/photos/zoutedrop/2317065892/ It can make your product better Simple to test, means simple to write, deploy and USE
  • 13. http://all-the-movies.cowblog.fr/images/arton1122.jpg How can we accelerate the tests? The Cheater The Lazy The Brave
  • 14. The Cheater The Lazy The Brave http://all-the-movies.cowblog.fr/images/arton1122.jpg
  • 15. Buy a faster machine http://farm1.static.flickr.com/28/93569705_1c562b413a_z.jpg?zz=1 Tests are cpu/memory bound
  • 16. Be warned http://farm5.static.flickr.com/4096/4819945812_735744e0fc_z.jpg Single threaded tests get slower over time 0 25 50 75 100 2007 2008 2009 2010
  • 17. Use all the cores mvn -T1 clean install : 5:05s mvn -T4 clean install : 3:10s parallel build with maven3
  • 18. Use all the cores parallel build with maven3
  • 19. Use all the cores For JUnit/TestNG tests .
  • 20. The Cheater The Lazy The Brave http://all-the-movies.cowblog.fr/images/arton1122.jpg
  • 22. Even better, delete dead code http://farm1.static.flickr.com/58/191393602_3d9b643ab0_z.jpg To delete yet other useless tests
  • 23. Work in a sandbox In-memory database: H2 Behaves more like MySql than Hsqldb The network is too slow
  • 24. It’s Not only SQL If going with NoSQL, take a server that can run in-process eg. Voldemort
  • 26. Everything local and in-memory Apache VFS (Virtual File System) Spring Resource... Files As a bonus, tests will run smoother .
  • 27. The Cheater The Lazy The Brave http://all-the-movies.cowblog.fr/images/arton1122.jpg
  • 28. Don’t test business rules in integration tests Unit tests is often a better place http://upload.wikimedia.org/wikipedia/commons/b/bd/ Contortionist_Ravi_standing.jpg
  • 29. Don’t test business rules in integration tests Unit tests is often a better place Functional test (on a web page) 10s Unit test 0.01s
  • 30. Take the longer integration test Break it in one faster integration test and a lot of small unit tests http://farm2.static.flickr.com/1168/3166709586_96f9a3fd95.jpg
  • 31. Or mock the slowest layers eg. functional test with Spring and Mockito
  • 32. Or mock the slowest layers eg. functional test with Spring and Mockito Mocks are not just for unit tests
  • 33. Don’t test through the browser Selenium is often overkill Photo: http://www.flickr.com/photos/zoutedrop/2317065892/ «But my application is complex!» «My users want complex features, My users want Ajax» «I need to test browser compatibility!»
  • 35. Complexity has a cost That you pay each time a test runs http://thehongkongfixereng.files.wordpress.com/2008/07/couteau-suisse.jpg
  • 36. Test through the browser the strict minimal Use javascript unit tests for the rest http://farm2.static.flickr.com/1168/3166709586_96f9a3fd95.jpg
  • 37. I tend to be old school And write server-side code most of the time http://www.celebridiot.com/wp-content/uploads/2009/06/ rick_astley_death_hoax.jpg
  • 38. One more thing... Simplify and optimize your code Tests will run faster .
  • 40. David Gageot CTO algodeal.com The Crowd Sourced Quant Hedge Fund @dgageot javabien.net Who am I?