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. 2.

    Agenda ˂ Why? ˂ Gatling overview ˂ Killer features ˂

    Nifty features ˂ Concepts ˂ How we use Gatling in Loyalty ˂ Demo time… ˂ Your questions? <2>
  2. 3.
  3. 4.

    <4>

  4. 5.

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

    test tool ˂ designed asynchronous & resource-efficient in nature
  5. 6.

    Addressing problems ˂ 1 thread = 1 user ˂ blocking

    I/O ˂ think time = Thread.sleep(…); <6>
  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>
  7. 8.

    Killer features ˂ you write code, no huge xml dumps

    in Git ˂ friendly expressive DSL ˂ cool comprehensive reports <8>
  8. 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>
  9. 11.

    Concepts ˂ simulation | collection of scenarios ˂ data feeders,

    Gatling EL ˂ injection profile ˂ assertions ˂ error handling, retry mechanism <11>
  10. 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>
  11. 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>