$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Let's make this test suite run faster! - BeJUG
Search
dgageot
April 05, 2012
Programming
1
580
Let's make this test suite run faster! - BeJUG
dgageot
April 05, 2012
Tweet
Share
More Decks by dgageot
See All by dgageot
Docker on Google Cloud Platform
dgageot
0
1.7k
Lightning Talk Mix-IT 2014
dgageot
0
800
CodeStory 2013 "La Selection Finale"
dgageot
0
750
Finale Code Story
dgageot
1
710
Le facilitateur, un rôle encore méconnu
dgageot
1
200
Mockito. Ecrire des tests unitaires est devenu simple.
dgageot
2
430
Git, la gestion de configuration qui vous veut du bien
dgageot
1
460
My own preferred testing techniques
dgageot
1
110
Let's make this test suite run faster
dgageot
1
66
Other Decks in Programming
See All in Programming
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
150
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
120
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
120
TestingOsaka6_Ozono
o3
0
160
GISエンジニアから見たLINKSデータ
nokonoko1203
0
140
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
210
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
350
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.7k
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
100
関数実行の裏側では何が起きているのか?
minop1205
1
710
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
120
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
150
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Documentation Writing (for coders)
carmenintech
77
5.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Making Projects Easy
brettharned
120
6.5k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Transcript
Let's make this test suite run faster!
David Gageot Freelance developer @dgageot javabien.net
Why make a test suite run faster?
“ I firmly believe it can make your product better.
Faster to test leads to faster to write, deploy and use ” Anonymous bearded freelance developper
You test early and often. Right?
Continuous integration?
Continuous testing?
Continuous deployment?
Testing a lot can lead to waiting a lot
How wants his coding room to look like
Test suite duration can be contained
Jenkins slaves to the rescue
Jenkins slaves to the rescue. not.
Why complicated when it can be simple?
I’ll share a few easy tricks
“ I firmly believe it can make your product better.
Faster to test leads to faster to write, deploy and use ” Anonymous bearded freelance developper
How can we accelerate the tests? The Cheater The Lazy
The Cheater
Buy a faster machine. Tests are cpu/
Thank you Q/A
BUT single threaded tests get slower 0 25 50 75
100 2007 2008 2009 2010
Use all the cores with Maven3 mvn -T1 clean install
: 5:05s mvn -T4 clean install : 3:10s Beware of tests with side effects
It’s not just me
Use all the cores with JUnit/TestNG Beware of tests with
side effects
That’s it for cheaters No silver bullet
The Lazy
Delete useless tests It’s so simple, we don’t do it...
Even better, delete dead code
Even better, delete dead code Leads to deleting even more
useless tests
Work in a sandbox In-memory database H2 behaves much like
MySql As simple as changing an xml file The database is slow
It’s Not only SQL If going for NoSQL, choose a
server that can run in-process eg. Voldemort The network is slow
In-memory SMTP Server SubEtha SMTP
Abstract the filesystem Apache VFS (Virtual File System) Spring Resource...
In-memory everything As a bonus, tests will run smoother
Of course all of these are easier to setup at
the beginning of a project
The
5 minutes a day can make a difference
Don’t test business rules in integration Unit tests are often
a better place
Not the same scale of speed 10sec .01sec
Action #1 - Break the longer integration Into one faster
integration test and a lot of small
Action #2 - Mock the slowest layers Mocks are not
just for unit tests eg. with Spring and Mockito spies
Action #3 - Don’t test through the Selenium is often
overkill «But my application is complex!» «My users want complex features, My users want Ajax» «I need to test browser compatibility!»
Really?
Complexity has a cost That you pay each time tests
run
Test through the browser the strict Unit test Javascript
Action #4 - Sometimes be old school write (easier to
test) server-side code
Thank you Q/A
One more thing™ Action #0 - Simplify and optimize your
code Tests will run faster Keep that one secret...
Thank you Q/A