Performance Test Automation
With Gatling
Gaurav Kumar Shukla
Trainee Software Consultant
Knoldus Software LLP
Agenda
● Performance Testing
● Performance related testing and tools
● Load testing (The Gatling way)
● Demo
Performance Testing
Performance testing, a non-functional testing technique performed to
determine the system parameters in terms of responsiveness and
stability under various workload. Performance testing measures the
quality attributes of the system, such as scalability, reliability and
resource usage.
Conti...
Performance is very crucial part of an application so it is very
important to keep our eyes on following points
● Response time
● Throughput
● Scalability
● Availability
Performance Related Testing
● Load Testing
● Stress Testing
● Spike Testing
● Endurance Testing
● Scalability Testing
● Volume Testing
Performance testing tools
There are many tools available in the market with their own feture
which enables to test the performance of the applicaiton in more
efficient way.
Open Source Tools License Tools
JMeter Load Runner
Jcrawler Silk Performer
loadUI Rational Performance Tester
The Grinder Cloud Test
Let's start With Gatling
About Gatling
Gatling is a lightwaight dsl written in scala by which you can treat your
performance test as a production code means you can easily write a
readable code to test the performance of an application it s a framework
based on Scala, Akka and Netty.
Why Gatling
● Dynamic Reports :- Gatling's reports are clear, concise, dynamic and
exhaustive. Share it with your team and get everyone on board.
● Continuous integration and performance testing :- Gatling’s code-like
scripting is a new approach of performance testing. Experience
continuous integration with the Maven, SBT and Jenkins’ plugins.
● High concurrency rate :- Gatling is based on cutting-edge
technologies and frameworks like Scala, Akka and Netty. High
performance and efficiency are Gatling’s DNA.
● Thanks to Stéphane Landelle is the main contributor and creator of
Gatling tool.
● The latest stable release is : Gatling 2.1.7
● There are various Key features with Gatling 2.1.7.
● DSL for simulation to treat performance as a code
● Produces higher load by using an asynchronous non-
blocking approach.
● Full support of HTTP(S) protocols
● Supports input files CSV, TSV, SSV to access random data for
data-driven tests.
● Generation of graphical reports using Graphite
Benifits of using Gatling
• All reports and graphs are generated automatically in HTML after
successful execution
• It is able to sustain high concurrent load with no obvious
degradation in response times at 20K users
• It gives more accurate results with less memory and CPU usage
• It can run on any operating system
Why Gatling
• It is an Open source stress testing tool under apache license.
• Easy to understand and reuse our simulation scripts to perform
operations again and again.
• Less Cpu utilization
• It can simulate multiple virtual users with a single Thread
• Gatling has a separate web proxy recorder, which enables to
generates a Scala simulation from the recorded user session.
• Generation of graphical reports using Graphite
• Easily integrate gatling with jenkins and other delivery tools and
continiously get the update of ur performance test against ur
applicaiton .
Issues with other tools
● Performance
● Blocking IO
● Usability
● Maintainability
● Matrices
● Plugins
● Demo
Performance :-
● Traditional Approach works on
1 virtual user = 1 Thread
50 virtual user = 50 Threads
10000 virtual user = 10000 Threads
● There is a lots of context switching, lots of cpu utilization occurs at the
time of process scheduling.
● It consume approx 60% to 70% cpu at the time of execution which
degrade the system performance.
Blocking IO
Most of the tools work on this approach :-
● In this Approach if 10000 requests sends then the most of the time
Your threads are sleeping.
● Drastically increase the responce time and degrade the performance.
The Gatling Approach
● Gatling Increase the performance with asynchronous akka actor
model.
● Actor model consist in two small entities
– MailBox- Stores all the messages recieved
– Computational unit- Execute a predefine action for each recieved
message
Gatling:- NonBlocking I/O
● Gatling uses Java framework Netty which is the no 1 Non-blocking
I/O framework running on the jvm.
● Which increase the response time of the threads and make the
application more responsive.
Usability Issue
● Most of the tools are comming with there own GUI platform.
● It is good even more compatible but the problems are more complex
then Hello world program.
– Versioning
– Refactoring
– Peer Review
Gatling = (Real programming language + Dsl +Api)
● As an Automation Tester
– Deals with the real code
– Easily able to use the various Api
– To write their own code which is more flexible to perform the Gui
operations and resolve these issues
– Versioning
– Refactoring
– Pear Review
Maintainability
● Most of the tools have their own default save mode.
– For example :- Jmeter save your result in Xml format .
Problems:-
● very difficult to understand
● Its not possible to change and edit these result
● To perform operations like git merge there is conflict occures
● Using gatling saves the result in normal scala format.
● Easy to understand
● Easy to make cahnges in the scripts
● Resolve the conflict easily
Matrics issue
● The next thing is about what kind of matrix you use.
● Most of the tools providing
– Minimum Value
– Maximum Value
– Average Time
– Standard Daviations
● For the accurate result they are using standard daviation.
● Sometimes the standard daviations are the crap.
● Standard daviation only meaningful for the normal distribution and the
real time distribution in IT systems never based on the normal
distribution.
Gatling :- Percentiles
● To resolve the matrics issue gatling uses the percentile approach.
Nth percentile = value >= Nth % of the value
● To implement the percentile there is proper java libraries are available
● HtrHistogram
● Tdigest
Plugins
● Inbuild plugins
● Websocket
● SSE
● JMS support
● Maven plugin
● Maven Artifacts
● Maven Archetype
● SBT plugin
● Jenkins Plugin
● Third party Plugins
● Gradle
● Cassandra
● AMQP
● RabbitMQ
● SQL
Special Thanks to
Stéphane Landelle
References
1) http://gatling.io/docs/2.1.7
2) http://gatling.io/docs/2.1.7/extensions/sbt_plugin.html
3) https://www.youtube.com/watch?v=VUPTaPms210
Thank You

Gatling

  • 1.
    Performance Test Automation WithGatling Gaurav Kumar Shukla Trainee Software Consultant Knoldus Software LLP
  • 2.
    Agenda ● Performance Testing ●Performance related testing and tools ● Load testing (The Gatling way) ● Demo
  • 3.
    Performance Testing Performance testing,a non-functional testing technique performed to determine the system parameters in terms of responsiveness and stability under various workload. Performance testing measures the quality attributes of the system, such as scalability, reliability and resource usage.
  • 4.
    Conti... Performance is verycrucial part of an application so it is very important to keep our eyes on following points ● Response time ● Throughput ● Scalability ● Availability
  • 5.
    Performance Related Testing ●Load Testing ● Stress Testing ● Spike Testing ● Endurance Testing ● Scalability Testing ● Volume Testing
  • 6.
    Performance testing tools Thereare many tools available in the market with their own feture which enables to test the performance of the applicaiton in more efficient way. Open Source Tools License Tools JMeter Load Runner Jcrawler Silk Performer loadUI Rational Performance Tester The Grinder Cloud Test
  • 7.
  • 8.
    About Gatling Gatling isa lightwaight dsl written in scala by which you can treat your performance test as a production code means you can easily write a readable code to test the performance of an application it s a framework based on Scala, Akka and Netty.
  • 9.
    Why Gatling ● DynamicReports :- Gatling's reports are clear, concise, dynamic and exhaustive. Share it with your team and get everyone on board. ● Continuous integration and performance testing :- Gatling’s code-like scripting is a new approach of performance testing. Experience continuous integration with the Maven, SBT and Jenkins’ plugins. ● High concurrency rate :- Gatling is based on cutting-edge technologies and frameworks like Scala, Akka and Netty. High performance and efficiency are Gatling’s DNA.
  • 10.
    ● Thanks toStéphane Landelle is the main contributor and creator of Gatling tool. ● The latest stable release is : Gatling 2.1.7 ● There are various Key features with Gatling 2.1.7. ● DSL for simulation to treat performance as a code ● Produces higher load by using an asynchronous non- blocking approach. ● Full support of HTTP(S) protocols ● Supports input files CSV, TSV, SSV to access random data for data-driven tests. ● Generation of graphical reports using Graphite
  • 11.
    Benifits of usingGatling • All reports and graphs are generated automatically in HTML after successful execution • It is able to sustain high concurrent load with no obvious degradation in response times at 20K users • It gives more accurate results with less memory and CPU usage • It can run on any operating system
  • 12.
    Why Gatling • Itis an Open source stress testing tool under apache license. • Easy to understand and reuse our simulation scripts to perform operations again and again. • Less Cpu utilization • It can simulate multiple virtual users with a single Thread • Gatling has a separate web proxy recorder, which enables to generates a Scala simulation from the recorded user session. • Generation of graphical reports using Graphite • Easily integrate gatling with jenkins and other delivery tools and continiously get the update of ur performance test against ur applicaiton .
  • 13.
    Issues with othertools ● Performance ● Blocking IO ● Usability ● Maintainability ● Matrices ● Plugins ● Demo
  • 14.
    Performance :- ● TraditionalApproach works on 1 virtual user = 1 Thread 50 virtual user = 50 Threads 10000 virtual user = 10000 Threads ● There is a lots of context switching, lots of cpu utilization occurs at the time of process scheduling. ● It consume approx 60% to 70% cpu at the time of execution which degrade the system performance.
  • 15.
    Blocking IO Most ofthe tools work on this approach :- ● In this Approach if 10000 requests sends then the most of the time Your threads are sleeping. ● Drastically increase the responce time and degrade the performance.
  • 16.
    The Gatling Approach ●Gatling Increase the performance with asynchronous akka actor model. ● Actor model consist in two small entities – MailBox- Stores all the messages recieved – Computational unit- Execute a predefine action for each recieved message
  • 17.
    Gatling:- NonBlocking I/O ●Gatling uses Java framework Netty which is the no 1 Non-blocking I/O framework running on the jvm. ● Which increase the response time of the threads and make the application more responsive.
  • 18.
    Usability Issue ● Mostof the tools are comming with there own GUI platform. ● It is good even more compatible but the problems are more complex then Hello world program. – Versioning – Refactoring – Peer Review
  • 19.
    Gatling = (Realprogramming language + Dsl +Api) ● As an Automation Tester – Deals with the real code – Easily able to use the various Api – To write their own code which is more flexible to perform the Gui operations and resolve these issues – Versioning – Refactoring – Pear Review
  • 20.
    Maintainability ● Most ofthe tools have their own default save mode. – For example :- Jmeter save your result in Xml format . Problems:- ● very difficult to understand ● Its not possible to change and edit these result ● To perform operations like git merge there is conflict occures ● Using gatling saves the result in normal scala format. ● Easy to understand ● Easy to make cahnges in the scripts ● Resolve the conflict easily
  • 21.
    Matrics issue ● Thenext thing is about what kind of matrix you use. ● Most of the tools providing – Minimum Value – Maximum Value – Average Time – Standard Daviations ● For the accurate result they are using standard daviation. ● Sometimes the standard daviations are the crap. ● Standard daviation only meaningful for the normal distribution and the real time distribution in IT systems never based on the normal distribution.
  • 22.
    Gatling :- Percentiles ●To resolve the matrics issue gatling uses the percentile approach. Nth percentile = value >= Nth % of the value ● To implement the percentile there is proper java libraries are available ● HtrHistogram ● Tdigest
  • 23.
    Plugins ● Inbuild plugins ●Websocket ● SSE ● JMS support ● Maven plugin ● Maven Artifacts ● Maven Archetype ● SBT plugin ● Jenkins Plugin
  • 24.
    ● Third partyPlugins ● Gradle ● Cassandra ● AMQP ● RabbitMQ ● SQL
  • 25.
  • 26.
  • 27.