Gatling | Arm yourself for performance

Gatling | Arm yourself for performance

Load test tool we use in Loyalty team

83b6b15f9125db82e7b64c0178df2245?s=128

Patrik Mihalcin

May 10, 2016
Tweet

Transcript

  1. Gatling Arm yourself for performance 10.05.2016 Patrik Mihalčin http://mihalc.in/

  2. Agenda ˂ Why? ˂ Gatling overview ˂ Killer features ˂

    Nifty features ˂ Concepts ˂ How we use Gatling in Loyalty ˂ Demo time… ˂ Your questions? <2>
  3. Starters ˂ Why would one bother thinking about non-functional requirements?

    ˂ Why would one use yet another test tool? <3>
  4. <4>

  5. Gatling overview <5> ˂ Async Scala Akka Netty based load

    test tool ˂ designed asynchronous & resource-efficient in nature
  6. Addressing problems ˂ 1 thread = 1 user ˂ blocking

    I/O ˂ think time = Thread.sleep(…); <6>
  7. Solving the pain ˂ high performance ˂ do I need

    a cluster of injectors? ˂ usability ˂ do I need GUI? ˂ maintainability ˂ I want to store load tests in Git <7>
  8. Killer features ˂ you write code, no huge xml dumps

    in Git ˂ friendly expressive DSL ˂ cool comprehensive reports <8>
  9. Easy peasy ˂ scenario <9>

  10. Nifty features ˂ http://gatling.io/#/cheat-sheet/2.2.0 ˂ very good support for build

    tooling ˂ recorder ˂ you just set up browser as a proxy and it will act as a man in the middle <10>
  11. Concepts ˂ simulation | collection of scenarios ˂ data feeders,

    Gatling EL ˂ injection profile ˂ assertions ˂ error handling, retry mechanism <11>
  12. Actions & checks ˂ actions: ˂ http ˂ jms ˂

    server sent events ˂ websockets ˂ engine is protocol agnostic, can be extended ˂ checks ˂ regex ˂ xpath ˂ lambdas ˂ css selectors ˂ jsonpath ˂ and others: http://gatling.io/#/cheat-sheet/2.2.0 <12>
  13. How we use Gatling in Loyalty ˂ simulate incoming JMS

    msgs, WSs, UI actions against Loyalty app in Dockerized Azure IaaS ˂ page object pattern to organize tests and for easy maintenance ˂ tests are part of continuous testing cycle in Teamcity ˂ use dynamic data in order to rule out pesticide paradox and server side optimizations ˂ system responsiveness (hourly rates of incoming messages) ˂ execute multiple requests at once in order to rule out concurrency issues – WS retry mechanism ˂ system resiliency - how we actually go about OptimisticLockExceptions <13>
  14. Demo time… <14>

  15. Your questions? <15>

  16. Something to ponder upon ˂ http://gatling.io/#/ ˂ http://gatling.io/docs/2.2.0/ ˂ http://gatling.io/#/cheat-sheet/2.2.0

    ˂ http://gatling.io/docs/2.2.0/quickstart.html <16>