let's make this test suite run faster - paris jug 2011

38
Let's make this test suite run faster! Paris Java User Group

Post on 18-Oct-2014

795 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Let's make this test suite run faster - Paris JUG 2011

Let's make this test suite run faster!

Paris Java User Group

Page 2: Let's make this test suite run faster - Paris JUG 2011

www.parisjug.orgCopyright(c) 2010 Paris JUG, Licence CC-Creatives Commons 2.0 France - Paternité - Pas d’utilisation commerciale - Partage des Conditions à l’identique

Page 3: Let's make this test suite run faster - Paris JUG 2011

What for ?

Let's make this test suite run faster!Why?

http://farm1.static.flickr.com/158/349497988_fb751a5e3a_z.jpg

Page 4: Let's make this test suite run faster - Paris JUG 2011

You test early and often

http://farm1.static.flickr.com/97/246816211_573c2901e1_z.jpg?zz=1

Don’t you?

Page 5: Let's make this test suite run faster - Paris JUG 2011

Continuous integration, continuous testing...

http://vator.tv/images/attachments/150609195630ctd.gif

...even continuous deployment

Page 6: Let's make this test suite run faster - Paris JUG 2011

Testing often

http://farm3.static.flickr.com/2505/3772118924_11fe195ef1.jpg

Often means waiting a lot

Page 8: Let's make this test suite run faster - Paris JUG 2011

Tests can be fastEven if lines of code keep growing

Page 9: Let's make this test suite run faster - Paris JUG 2011

Easy!Let’s distribute across multiple hudson servers

Page 10: Let's make this test suite run faster - Paris JUG 2011

It doesn’t have to be complicatedI’ll share a few simple tricks

Page 11: Let's make this test suite run faster - Paris JUG 2011

Photo: http://www.flickr.com/photos/zoutedrop/2317065892/

It can make your product betterSimple to test, means simple to write, deploy and USE

Page 12: Let's make this test suite run faster - Paris JUG 2011

http://all-the-movies.cowblog.fr/images/arton1122.jpg

How can we accelerate the tests?

The CheaterThe LazyThe Brave

Page 13: Let's make this test suite run faster - Paris JUG 2011

The CheaterThe LazyThe Brave

http://all-the-movies.cowblog.fr/images/arton1122.jpg

Page 14: Let's make this test suite run faster - Paris JUG 2011

Buy a faster machine

http://farm1.static.flickr.com/28/93569705_1c562b413a_z.jpg?zz=1

Tests are cpu/memory bound

Page 15: Let's make this test suite run faster - Paris JUG 2011

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

Page 16: Let's make this test suite run faster - Paris JUG 2011

Use all the cores

mvn -T1 clean install : 5:05smvn -T4 clean install : 3:10s

parallel build with maven3

Page 17: Let's make this test suite run faster - Paris JUG 2011

Use all the coresparallel build with maven3

Page 18: Let's make this test suite run faster - Paris JUG 2011

Use all the coresSurefire 2.7.1 For JUnit/TestNG tests

.

Page 19: Let's make this test suite run faster - Paris JUG 2011

The CheaterThe LazyThe Brave

http://all-the-movies.cowblog.fr/images/arton1122.jpg

Page 20: Let's make this test suite run faster - Paris JUG 2011

http://geekandpoke.typepad.com/geekandpoke/images/2008/04/24/turingtest.jpg

Delete redundant testsIt’s so simple, we don’t do it...

Page 21: Let's make this test suite run faster - Paris JUG 2011

Even better, delete dead code

http://farm1.static.flickr.com/58/191393602_3d9b643ab0_z.jpg

To delete yet other useless tests

Page 22: Let's make this test suite run faster - Paris JUG 2011

Work in a sandbox

In-memory database: H2

Behaves more like MySql than Hsqldb

The network is too slow

Page 23: Let's make this test suite run faster - Paris JUG 2011

It’s Not only SQL

If going with NoSQL, take a server thatcan run in-process

eg. Voldemort

Page 24: Let's make this test suite run faster - Paris JUG 2011

In-memory SMTP ServerSubEtha SMTP

Page 25: Let's make this test suite run faster - Paris JUG 2011

Everything local and in-memory

Apache VFS (Virtual File System)Spring Resource...

Files

As a bonus, tests will run smoother

.

Page 26: Let's make this test suite run faster - Paris JUG 2011

The CheaterThe LazyThe Brave

http://all-the-movies.cowblog.fr/images/arton1122.jpg

Page 27: Let's make this test suite run faster - Paris JUG 2011

Don’t test business rules in integration testsUnit tests is often a better place

http://upload.wikimedia.org/wikipedia/commons/b/bd/Contortionist_Ravi_standing.jpg

Page 28: Let's make this test suite run faster - Paris JUG 2011

Don’t test business rules in integration testsUnit tests is often a better place

Functional test(on a web page)

10s

Unit test0.01s

Page 29: Let's make this test suite run faster - Paris JUG 2011

Take the longer integration testBreak it in one faster integration test

and a lot of small unit tests

http://farm2.static.flickr.com/1168/3166709586_96f9a3fd95.jpg

Page 30: Let's make this test suite run faster - Paris JUG 2011

Or mock the slowest layerseg. functional test with Spring and Mockito

Mocks are not just for unit tests

Page 31: Let's make this test suite run faster - Paris JUG 2011

Don’t test through the browserSelenium 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!»

Page 33: Let's make this test suite run faster - Paris JUG 2011

Complexity has a costThat you pay each time a test runs

http://thehongkongfixereng.files.wordpress.com/2008/07/couteau-suisse.jpg

Page 34: Let's make this test suite run faster - Paris JUG 2011

Test through the browser the strict minimalUse javascript unit tests for the rest

http://farm2.static.flickr.com/1168/3166709586_96f9a3fd95.jpg

Page 35: Let's make this test suite run faster - Paris JUG 2011

I tend to be old schoolAnd write server-side code most of the time

http://www.celebridiot.com/wp-content/uploads/2009/06/rick_astley_death_hoax.jpg

Page 36: Let's make this test suite run faster - Paris JUG 2011

One more thing...

Simplify and optimize your code

Tests will run faster

.

Page 37: Let's make this test suite run faster - Paris JUG 2011

Thank youQ/A

Page 38: Let's make this test suite run faster - Paris JUG 2011

www.parisjug.orgCopyright(c) 2010 Paris JUG, Licence CC-Creatives Commons 2.0 France - Paternité - Pas d’utilisation commerciale - Partage des Conditions à l’identique