SlideShare a Scribd company logo
Continuous Performance
Load testing for developers with Gatling
Tim	van	Eijndhoven
@TimvEijndhoventvaneijndhoven@jpoint.nl
@bjschrijver@TimvEijndhoven
Let’s meet
Tim van Eijndhoven
@bjschrijver@TimvEijndhoven
Let’s meet
Bert Jan Schrijver
@bjschrijver@TimvEijndhoven
Outline
• Performance testing process
• Introduction to Gatling
• Demo
• Results
• Looking forward
• Summary
• Q&A
@bjschrijver@TimvEijndhoven
How it all started…
@bjschrijver@TimvEijndhoven
Performance testing
should be part of the
process
@bjschrijver@TimvEijndhoven
Performance testing traditionally…
…happens several times per year



…and/or at major releases



…is performed by specialists



.. which is far from ideal:



- changes were made long ago



- many different code changes



- at a certain moment in time



- when is a test required?



@bjschrijver@TimvEijndhoven
Traditional performance testing
design
write code
test code
performance test
release
unit tests
integration tests
@bjschrijver@TimvEijndhoven
design
write code
test code
release
unit tests
integration tests
performance tests
Performance testing in 

continuous delivery
@bjschrijver@TimvEijndhoven
Continuous Delivery
Demands code to be
Always production ready
Short feedback cycles
Maintained by self-supporting

teams
In regard to performance
Has to be under control
Effects should be clear ASAP
No external specialists
@bjschrijver@TimvEijndhoven
Part of the process
With the same level of support as

- Unit tests and integration tests

- Continuous Integration

- Zero-downtime deployments

Performed by the development team
@bjschrijver@TimvEijndhoven
Performance testing process
Design Record Operationalise Execute Report
@bjschrijver@TimvEijndhoven
Designing scenarios
Generic tests 

that test core functionality
Specialised tests 

that test specific features in depth
@bjschrijver@TimvEijndhoven
Tool support is key for
performance test adoption
@bjschrijver@TimvEijndhoven
Gatling
package computerdatabase // 1
import io.gatling.core.Predef._ // 2
import io.gatling.http.Predef._
import scala.concurrent.duration._
class BasicSimulation extends Simulation { // 3
val httpConf = http // 4
.baseURL("http://computer-database.gatling.io") // 5
.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // 6
.doNotTrackHeader("1")
.acceptLanguageHeader("en-US,en;q=0.5")
.acceptEncodingHeader("gzip, deflate")
.userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0")
val scn = scenario("BasicSimulation") // 7
.exec(http("request_1") // 8
.get("/")) // 9
.pause(5) // 10
setUp( // 11
scn.inject(atOnceUsers(1)) // 12
).protocols(httpConf) // 13
}
@bjschrijver@TimvEijndhoven
Alternative tools
And many more…
@bjschrijver@TimvEijndhoven
Gatling core concepts
Scenario
Feeder
A sequence of http requests used to simulate application usage
A tool used to fill request parameters
Recorder The tool used to record http requests or take a HAR-file 

and convert it to Gatling DSL
Gatling DSL Easy-to-read, developer-friendly way of defining tests
@TimvEijndhoven
DEMO
@bjschrijver@TimvEijndhoven
Scenario to outcome
Browser HAR-file
Gatling recorder DSL
Custom changes DSL
Gatling Report
@bjschrijver@TimvEijndhoven
Re-record
Front
end
Back
end
client / server interaction
before change
front-end
code change
Front
end
Back
end
client / server interaction
after change
@TimvEijndhoven
DEMO
@bjschrijver@TimvEijndhoven
Performance predicting trends
- Automatically execute test at start and end of work day



- Pushing test environment to the breaking point



- Analyse average response time graph to see the trend
@bjschrijver@TimvEijndhoven
Trend reports
@bjschrijver@TimvEijndhoven
Trend interpretations
We can

See how changes affect performance

Have feedback on performance in short amount of time



We cannot

See which load the application can endure in production

@bjschrijver@TimvEijndhoven
Results so far
- Prevented multiple issues in production
- Helped testing performance fixes and database tuning
- Discovered configuration error in test infrastructure
- Helped track down and validate a fix for a memory leak
- Helped tweak database indexes
- Made teams more aware of their product’s performance
@bjschrijver@TimvEijndhoven
- Automate (re-)recording process
- Re-use functional test scenarios as performance tests
- Eliminate custom code changes
Further development
@TimvEijndhoven
SUMMARY
@bjschrijver@TimvEijndhoven
Some take-aways
- Performance testing should be a first class citizen in your development cycle
- Frontend changes can impact backend performance
- Gatling is an awesome programmer friendly tool for load testing
- The approach I shared monitors performance trends - it does NOT determine
the maximum load a production environment can endure
https://github.com/timve/continuous-performance-demo
https://github.com/bertjan/gatling-seed
@bjschrijver@TimvEijndhoven
Questions?Questions?
@bjschrijver@TimvEijndhoven
Thanks for your time!
Liked it? Tweet it!

More Related Content

PDF
Continuous performance: Load testing for developers with gatling
PDF
TestWorks Conf Performance testing made easy with gatling - Guillaume Corré
PDF
Continuous Performance - Load testing for developers with gatling @ iSense 2016
PDF
Feature toggling
PDF
Amsterdam JUG - Continuous performance
PDF
Codemotion tech pills - Continuous performance
PPTX
Continuous Performance Testing with Taurus and Jmeter
ODP
Boost your App with Gatling
Continuous performance: Load testing for developers with gatling
TestWorks Conf Performance testing made easy with gatling - Guillaume Corré
Continuous Performance - Load testing for developers with gatling @ iSense 2016
Feature toggling
Amsterdam JUG - Continuous performance
Codemotion tech pills - Continuous performance
Continuous Performance Testing with Taurus and Jmeter
Boost your App with Gatling

What's hot (20)

PDF
Gatling - Bordeaux JUG
PDF
Performance testing for web-scale
PPTX
Automation and Technical Debt
PPTX
WiKi Based Automation Testing: Fitness & DevOps
PPTX
Gatling overview
PPT
Chrome release cycle
PDF
Test Driven Development Methodology and Philosophy
PPT
Integris Security - Hacking With Glue ℠
PDF
Gatling Performance Workshop
PPTX
Simulating Different-Network Speeds using JMETER
PPTX
Manual qa versus automation qa
PDF
How to organize qa process in agile speed
PPTX
Automation testing
PPTX
What does it take to be a performance tester?
PPTX
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
PDF
Shift-Left Testing: QA in a DevOps World by David Laulusa
PDF
Quality Loopback
PDF
Integration testing in enterprises using TaaS
PDF
Verification for system companies (LI) - value proposition
PDF
Neotys PAC 2018 - Gayatree Nalwadad
Gatling - Bordeaux JUG
Performance testing for web-scale
Automation and Technical Debt
WiKi Based Automation Testing: Fitness & DevOps
Gatling overview
Chrome release cycle
Test Driven Development Methodology and Philosophy
Integris Security - Hacking With Glue ℠
Gatling Performance Workshop
Simulating Different-Network Speeds using JMETER
Manual qa versus automation qa
How to organize qa process in agile speed
Automation testing
What does it take to be a performance tester?
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
Shift-Left Testing: QA in a DevOps World by David Laulusa
Quality Loopback
Integration testing in enterprises using TaaS
Verification for system companies (LI) - value proposition
Neotys PAC 2018 - Gayatree Nalwadad
Ad

Similar to Continuous performance: Load testing for developers with gatling @ JavaOne 2016 (20)

PDF
DeTesters meetup november 2018 - Continuous performance: load testing with G...
PDF
Continuous performance: Load testing for developers with gatling @ Utrecht JUG
ODP
Gatling
ODP
Performance Test Automation With Gatling
PPTX
Gatling
PDF
Continuous performance management with Gatling
PPTX
Интеграция решения по тестированию производительности в существующий фреймвор...
PDF
Gatling - SoftShake 2013
PDF
Gatling workshop lets test17
PPTX
Performance tests with Gatling
PPTX
Gatling and Page Object: a way to performance testing
PDF
GatlingJAX2022.pdf
PDF
Continuous Delivery Testing @HiQ
PPTX
Neev QA Offering
PDF
Continuous Performance Testing
PPTX
Angelique henry performance non regression
PPTX
Stress test your backend with Gatling
PPTX
performance testing training in hyderabad
ODP
Gatling - Stress test tool
PDF
JDD 2017: Performance tests with Gatling (Andrzej Ludwikowski)
DeTesters meetup november 2018 - Continuous performance: load testing with G...
Continuous performance: Load testing for developers with gatling @ Utrecht JUG
Gatling
Performance Test Automation With Gatling
Gatling
Continuous performance management with Gatling
Интеграция решения по тестированию производительности в существующий фреймвор...
Gatling - SoftShake 2013
Gatling workshop lets test17
Performance tests with Gatling
Gatling and Page Object: a way to performance testing
GatlingJAX2022.pdf
Continuous Delivery Testing @HiQ
Neev QA Offering
Continuous Performance Testing
Angelique henry performance non regression
Stress test your backend with Gatling
performance testing training in hyderabad
Gatling - Stress test tool
JDD 2017: Performance tests with Gatling (Andrzej Ludwikowski)
Ad

Recently uploaded (20)

PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Electronic commerce courselecture one. Pdf
PPT
Teaching material agriculture food technology
PDF
KodekX | Application Modernization Development
PPTX
A Presentation on Artificial Intelligence
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Empathic Computing: Creating Shared Understanding
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Cloud computing and distributed systems.
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
cuic standard and advanced reporting.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Chapter 3 Spatial Domain Image Processing.pdf
Electronic commerce courselecture one. Pdf
Teaching material agriculture food technology
KodekX | Application Modernization Development
A Presentation on Artificial Intelligence
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Empathic Computing: Creating Shared Understanding
The Rise and Fall of 3GPP – Time for a Sabbatical?
CIFDAQ's Market Insight: SEC Turns Pro Crypto
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Cloud computing and distributed systems.
Advanced methodologies resolving dimensionality complications for autism neur...
cuic standard and advanced reporting.pdf
Spectral efficient network and resource selection model in 5G networks
Encapsulation_ Review paper, used for researhc scholars
Building Integrated photovoltaic BIPV_UPV.pdf
The AUB Centre for AI in Media Proposal.docx

Continuous performance: Load testing for developers with gatling @ JavaOne 2016