let's make this test suite run faster! softshake 2010

38
Let's make this test suite run faster!

Post on 18-Oct-2014

1.799 views

Category:

Technology


0 download

DESCRIPTION

The more the tests, the longer the build. And when the build gets longer, the bugs take longer to fix, the features take longer to deploy. Every build should be minutes long, all tests included.Now lets say, our test suite takes much longer than that. How to reduce its duration? Where to start?Making tests become useless, converting functional tests to unit tests, running tests in parallel, building projects in parallel, doing slow tasks only once, writing fast DBMS tests... Let's share dozens of tips to fasten you test suite A LOT.

TRANSCRIPT

Page 1: Let's make this test suite run faster! SoftShake 2010

Let's make this test suite run faster!

Page 2: Let's make this test suite run faster! SoftShake 2010

What for ?

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

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

Page 3: Let's make this test suite run faster! SoftShake 2010

You test early and often

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

Don’t you?

Page 4: Let's make this test suite run faster! SoftShake 2010

Continuous integration, continuous testing...

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

...even continuous deployment

Page 5: Let's make this test suite run faster! SoftShake 2010

Testing often

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

Often means waiting a lot

Page 7: Let's make this test suite run faster! SoftShake 2010

Tests can be fastEven if lines of code keep growing

Page 8: Let's make this test suite run faster! SoftShake 2010

Easy!Let’s distribute across multiple hudson servers

Page 9: Let's make this test suite run faster! SoftShake 2010

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

Page 10: Let's make this test suite run faster! SoftShake 2010

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

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

Page 11: Let's make this test suite run faster! SoftShake 2010

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

How can we accelerate the tests?

The CheaterThe LazyThe Brave

Page 12: Let's make this test suite run faster! SoftShake 2010

The CheaterThe LazyThe Brave

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

Page 13: Let's make this test suite run faster! SoftShake 2010

Buy a faster machine

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

Tests are cpu/memory bound

Page 14: Let's make this test suite run faster! SoftShake 2010

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 15: Let's make this test suite run faster! SoftShake 2010

Use all the cores

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

parallel build with maven3

Page 16: Let's make this test suite run faster! SoftShake 2010

Use all the coresparallel build with maven3

Page 17: Let's make this test suite run faster! SoftShake 2010

Use all the coresFor JUnit/TestNG tests

.

Page 18: Let's make this test suite run faster! SoftShake 2010

The CheaterThe LazyThe Brave

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

Page 19: Let's make this test suite run faster! SoftShake 2010

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

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

Page 20: Let's make this test suite run faster! SoftShake 2010

Even better, delete dead code

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

To delete yet other useless tests

Page 21: Let's make this test suite run faster! SoftShake 2010

Work in a sandbox

In-memory database: H2

Behaves more like MySql than Hsqldb

The network is too slow

Page 22: Let's make this test suite run faster! SoftShake 2010

It’s Not only SQL

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

eg. Voldemort

Page 23: Let's make this test suite run faster! SoftShake 2010

In-memory SMTP ServerEthereal

Page 24: Let's make this test suite run faster! SoftShake 2010

Everything local and in-memory

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

Files

As a bonus, tests will run smoother

.

Page 25: Let's make this test suite run faster! SoftShake 2010

The CheaterThe LazyThe Brave

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

Page 26: Let's make this test suite run faster! SoftShake 2010

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 27: Let's make this test suite run faster! SoftShake 2010

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 28: Let's make this test suite run faster! SoftShake 2010

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 29: Let's make this test suite run faster! SoftShake 2010

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

Page 30: Let's make this test suite run faster! SoftShake 2010

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! SoftShake 2010

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! SoftShake 2010

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! SoftShake 2010

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! SoftShake 2010

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! SoftShake 2010

One more thing...

Simplify and optimize your code

Tests will run faster

.

Page 37: Let's make this test suite run faster! SoftShake 2010

Thank youQ/A

Page 38: Let's make this test suite run faster! SoftShake 2010

David Gageot

CTO algodeal.com The Crowd SourcedQuant Hedge Fund

@dgageotjavabien.net

Who am I?