Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gatling | Arm yourself for performance

Gatling | Arm yourself for performance

Load test tool we use in Loyalty team

Patrik Mihalcin

May 10, 2016
Tweet

More Decks by Patrik Mihalcin

Other Decks in Programming

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>