Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
590
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Let's make this test suite run faster! - BeJUG
dgageot
April 05, 2012
More Decks by dgageot
See All by dgageot
Docker on Google Cloud Platform
dgageot
0
1.7k
Lightning Talk Mix-IT 2014
dgageot
0
810
CodeStory 2013 "La Selection Finale"
dgageot
0
780
Finale Code Story
dgageot
1
730
Le facilitateur, un rôle encore méconnu
dgageot
1
210
Mockito. Ecrire des tests unitaires est devenu simple.
dgageot
2
440
Git, la gestion de configuration qui vous veut du bien
dgageot
1
480
My own preferred testing techniques
dgageot
1
120
Let's make this test suite run faster
dgageot
1
81
Other Decks in Programming
See All in Programming
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
520
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
170
RTSPクライアントを自作してみた話
simotin13
0
610
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
400
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.1k
Contextとはなにか
chiroruxx
1
320
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
180
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
120
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.1k
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4k
OSもどきOS
arkw
0
560
Featured
See All Featured
Paper Plane
katiecoart
PRO
1
51k
First, design no harm
axbom
PRO
2
1.2k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Being A Developer After 40
akosma
91
590k
Done Done
chrislema
186
16k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
A designer walks into a library…
pauljervisheath
211
24k
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