Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Load testing made easy
Pierre DAL-PRA @ eBusiness Information
@pierre_dalpra
Load Testing
Gatling
Load Testing
Gatling
Load testing?
Performance
Performance
Why care?
(from business POV)
It’s all ‘bout the money!
Conversion rates
Platform costs
Results/page : 10 => 30
 +500 ms
 -20% pages seen
+100 ms
 -1 % sales
 Estimated loss: $160M/y
Performance
Why care?
(from dev POV)
Fun!
(happens to be useful too)
Anticipate
Reproduce
Train
Performance
WDYM?
Performance
means
Fast?
Robust?
Cost effective?
Performance
= Requirements
Speed is
suggestive
contextualized
Traffic & Behaviors
Analytics
Business people
Methodology
(tentative)
Prerequisite
Proper local perf testing!!!

client + network
app debugging
Be scientists
Analyze!!!
Data
Monitor
Tooling
• Load injector: Gatling, JMeter,
Locust.io...
• JVM monitoring: JMXtrans, Yammer
Metrics...
• System monitoring: ...
Simulate
Behaviors
Situations
Capacity test
Stress test
Endurance test
Metrics
min/max? mean?
The good, the bad
and the ugly
Metrics
Percentiles FTW!
Iterate!!!
Test

Analyze

Fix hotspot
Jmeter, The Grinder,
LoadUI, Tsung, Locust,
Load Runner, Rational,
NeoLoad…
Issue #1

High Performance
1 user =
1 thread
50 threads on a JVM
With 2000 threads
Blocking
I/O
Threads ?
Waiting…
… and sleeping
Issue #2

Usability
Graphical User
Interface
Listen, it's not
that
complicated...
Issue #3

Maintainability
What is this change about ?
Gatling can
change all that !
Synchronous - Asynchronous
1user=1thread - Actor model
Blocking I/O - Non blocking
I/O
Actors
NIO
Reach new limits
From the Play2 Computer-Database sample.
(cf: https://github.com/gatling/computer-database)
Scenario
Scala
= code
= DSL
Use the rich DSL …
Checks
regex / css / xpath / jsonPath
find / findAll / count
is / in / not / whatever
Structures
doIf /...
… or write your own
Scala code…
… or use the Recorder
•
•
•
•

Maven Plugin
Maven archetype (run in IDE)
Jenkins plugin
Graphite live reporting
Coming soon…

•
•

Websockets, JDBC…
Clustering
http://gatling-tool.org
http://github.com/excilys/gatling
@GatlingTool
Gatling - SoftShake 2013
Gatling - SoftShake 2013
Gatling - SoftShake 2013
Gatling - SoftShake 2013
Gatling - SoftShake 2013
Gatling - SoftShake 2013
Upcoming SlideShare
Loading in …5
×

Gatling - SoftShake 2013

1,524 views

Published on

Slides of my talk about Performance Testing and Gatling @ SoftShake 2013

Published in: Technology
  • Be the first to comment

Gatling - SoftShake 2013

  1. 1. Load testing made easy Pierre DAL-PRA @ eBusiness Information @pierre_dalpra
  2. 2. Load Testing Gatling
  3. 3. Load Testing Gatling
  4. 4. Load testing? Performance
  5. 5. Performance Why care? (from business POV) It’s all ‘bout the money! Conversion rates Platform costs
  6. 6. Results/page : 10 => 30  +500 ms  -20% pages seen
  7. 7. +100 ms  -1 % sales  Estimated loss: $160M/y
  8. 8. Performance Why care? (from dev POV) Fun! (happens to be useful too) Anticipate Reproduce Train
  9. 9. Performance WDYM?
  10. 10. Performance means Fast? Robust? Cost effective?
  11. 11. Performance = Requirements
  12. 12. Speed is suggestive contextualized
  13. 13. Traffic & Behaviors Analytics Business people
  14. 14. Methodology (tentative)
  15. 15. Prerequisite Proper local perf testing!!! client + network app debugging
  16. 16. Be scientists Analyze!!! Data Monitor
  17. 17. Tooling • Load injector: Gatling, JMeter, Locust.io... • JVM monitoring: JMXtrans, Yammer Metrics... • System monitoring: Nagios • Network monitoring • Database monitoring • Dashboard: Graphite, Ganglia • Webapp mock: H. Gomez's basic perf webapp
  18. 18. Simulate Behaviors Situations
  19. 19. Capacity test
  20. 20. Stress test
  21. 21. Endurance test
  22. 22. Metrics min/max? mean? The good, the bad and the ugly
  23. 23. Metrics Percentiles FTW!
  24. 24. Iterate!!! Test Analyze Fix hotspot
  25. 25. Jmeter, The Grinder, LoadUI, Tsung, Locust, Load Runner, Rational, NeoLoad…
  26. 26. Issue #1 High Performance
  27. 27. 1 user = 1 thread
  28. 28. 50 threads on a JVM
  29. 29. With 2000 threads
  30. 30. Blocking I/O
  31. 31. Threads ? Waiting…
  32. 32. … and sleeping
  33. 33. Issue #2 Usability
  34. 34. Graphical User Interface Listen, it's not that complicated...
  35. 35. Issue #3 Maintainability
  36. 36. What is this change about ?
  37. 37. Gatling can change all that !
  38. 38. Synchronous - Asynchronous 1user=1thread - Actor model Blocking I/O - Non blocking I/O
  39. 39. Actors
  40. 40. NIO
  41. 41. Reach new limits
  42. 42. From the Play2 Computer-Database sample. (cf: https://github.com/gatling/computer-database)
  43. 43. Scenario Scala = code = DSL
  44. 44. Use the rich DSL … Checks regex / css / xpath / jsonPath find / findAll / count is / in / not / whatever Structures doIf / repeat / during / asLongAs randomSwitch / roundRobinSwitch Error handling tryMax / exitBlockOnFail Feeders csv / tsv / jdbc
  45. 45. … or write your own Scala code…
  46. 46. … or use the Recorder
  47. 47. • • • • Maven Plugin Maven archetype (run in IDE) Jenkins plugin Graphite live reporting
  48. 48. Coming soon… • • Websockets, JDBC… Clustering
  49. 49. http://gatling-tool.org http://github.com/excilys/gatling @GatlingTool

×