Comment j'ai mis ma suite de tests au régime en 5 minutes par jour

1,984 views
1,931 views

Published on

David gageot @Mix-IT 2011

Published in: Technology, Design
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,984
On SlideShare
0
From Embeds
0
Number of Embeds
1,030
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Comment j'ai mis ma suite de tests au régime en 5 minutes par jour

  1. 1. Lets make this test suiterun faster!David GageotCTO Algodeal Twitter: @dgageotdavid@gageot.net Blog: http://javabien.net
  2. 2. Lets make this test suite run faster! Why? What for ? http://farm1.static.flickr.com/158/349497988_fb751a5e3a_z.jpg
  3. 3. You test early and often Don’t you? http://farm1.static.flickr.com/97/246816211_573c2901e1_z.jpg?zz=1
  4. 4. Continuous integration, continuous testing... ...even continuous deployment http://vator.tv/images/attachments/150609195630ctd.gif
  5. 5. Testing oftenOften means waiting a lot http://farm3.static.flickr.com/2505/3772118924_11fe195ef1.jpg
  6. 6. Your coding room doesn’t have to look like this What for ? http://upload.wikimedia.org/wikipedia/commons/3/3f/ Nespresso_boutique.JPG
  7. 7. Tests can be fastEven if lines of code keep growing
  8. 8. Easy!Let’s distribute across multiple hudson servers
  9. 9. It doesn’t have to be complicated I’ll share a few simple tricks
  10. 10. It can make your product betterSimple to test, means simple to write, deploy and USE Photo: http://www.flickr.com/photos/zoutedrop/2317065892/
  11. 11. How can we accelerate the tests? The Cheater The Lazy The Brave http://all-the-movies.cowblog.fr/images/arton1122.jpg
  12. 12. The CheaterThe LazyThe Brave http://all-the-movies.cowblog.fr/images/arton1122.jpg
  13. 13. Buy a faster machineTests are cpu/memory bound http://farm1.static.flickr.com/28/93569705_1c562b413a_z.jpg?zz=1
  14. 14. Be warnedSingle threaded tests get slower over time 100 75 50 25 0 2007 2008 2009 2010 http://farm5.static.flickr.com/4096/4819945812_735744e0fc_z.jpg
  15. 15. Use all the cores parallel build with maven3mvn -T1 clean install : 5:05smvn -T4 clean install : 3:10s
  16. 16. Use all the coresparallel build with maven3
  17. 17. Use all the coresSurefire 2.7.1 For JUnit/TestNG tests .
  18. 18. The CheaterThe LazyThe Brave http://all-the-movies.cowblog.fr/images/arton1122.jpg
  19. 19. Delete redundant testsIt’s so simple, we don’t do it... http://geekandpoke.typepad.com/geekandpoke/images/2008/04/24/ turingtest.jpg
  20. 20. Even better, delete dead codeTo delete yet other useless tests http://farm1.static.flickr.com/58/191393602_3d9b643ab0_z.jpg
  21. 21. Work in a sandbox The network is too slow In-memory database: H2Behaves more like MySql than Hsqldb
  22. 22. It’s Not only SQLIf going with NoSQL, take a server that can run in-process eg.Voldemort
  23. 23. In-memory SMTP Server SubEtha SMTP
  24. 24. Everything local and in-memory FilesApache VFS (Virtual File System) Spring Resource... As a bonus, tests will run smoother .
  25. 25. The CheaterThe LazyThe Brave http://all-the-movies.cowblog.fr/images/arton1122.jpg
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. Or mock the slowest layerseg. functional test with Spring and Mockito Mocks are not just for unit tests
  30. 30. Don’t test through the browser Selenium is often overkill «But my application is complex!» «My users want complex features, My users want Ajax» «I need to test browser compatibility!» Photo: http://www.flickr.com/photos/zoutedrop/2317065892/
  31. 31. Really ? http://i.zdnet.com/blogs/complexity-and-false-hope.jpg
  32. 32. Complexity has a costThat you pay each time a test runs http://thehongkongfixereng.files.wordpress.com/2008/07/couteau-suisse.jpg
  33. 33. Test through the browser the strict minimal Use javascript unit tests for the rest http://farm2.static.flickr.com/1168/3166709586_96f9a3fd95.jpg
  34. 34. 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
  35. 35. One more thing...Simplify and optimize your code Tests will run faster .
  36. 36. MerciDes questions ?

×