Mock applicatie (liefst gebouw op java) t.b.v. piek-loadtest

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Falcon
  • Registratie: Februari 2000
  • Laatst online: 08-10 08:15

Falcon

DevOps/Q.A. Engineer

Topicstarter
Voor diverse organisaties hou ik mij al een tijdje bezig met performance/loadtesten. Dit kan zowel voor een gehele keten, maar ook voor individuele applicaties binnen de keten. Dit bijvoorbeeld met het doel om te bekijken hoe de code + datamodel van een applicatie acteert bij hoge load, maar vooral ook bij steeds meer vullende database (indexering-proces).

Nu is het voor een applicatie met relatief lage piek-load (laten we zeggen een 1000 in het uur) vrij simpel om een geschikte/robuuste (java) mock-applicatie te vinden die voor de juiste (geparametiseerde) antwoorden terug zorgt en dus functioneel ook zorgt dat er een volledige functionele iteratie doorgelopen kan worden.
Voor sommige applicaties is dit maar 1 opvraging bij een ander intern/extern systeem, maar dat kan soms ook oplopen tot 10.

Al een tijdje maak ik gebruik van WireMock(.org). Deze is zowel via een rest api als java-client api te configureren. Zo zijn er nog meer diverse (gratis) varianten in omloop, SOAP-UI, Mockserver, etcetra, met allemaal hun eigen UX of manier van afhandeling. So far so good :P

Maar waar ik met loadtesten al gauw tegen aanloop is de performance onder load van deze mock applicaties wanneer de gebruiksverwachting op een individuele applicatie/testobject veel hoger dan die 1000p/u komt te liggen. Hier voor ben ik op zoek naar wat meer ervaring bij onze tweakers (bouwers, testers.. )

Een aantal vragen:

1. Zijn er (gratis/java, het liefst) mock applicaties die hun stubmappings vastleggen in een database-schema, waardoor ze makkelijker schaalbaarder zijn? (en dan bedoel ik dus niet support voor database response voor bijv een unit test ;))

2. Zijn er meer personen met dit soort loadtesten bezig i.c.m. mocking en wat zijn hier de ervaringen en resultaten van?

Voornaamste loadtest/performance tool die ik gebruik is Jmeter. (Dus het zetten van stubmapping in een mock applicatie zou daar op moeten kunnen aansluiten, al is met java een hoop mogelijk natuurlijk)

sorry voor typefaut in het onderwerp :(

"We never grow up. We just learn how to act in public" - "Dyslexie is a bitch"


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Ik snap niet helemaal hoe iets als WireMock niet schaalbaar zou zijn. Je kunt dit toch eenvoudig parallel maken? Sowieso kun je met WireMock duizenden requests per seconde doen.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • rvankruistum
  • Registratie: September 2012
  • Laatst online: 14-07 17:09
Interessant vraagstuk. Wat is de complexiteit die je van je mockservice nodig hebt? Ik vermoed dat je redelijk wat verlangt van hoe dynamisch je responses zijn?

Ik heb eigenlijk alleen ervaring met het mocken van webservices in SoapUI. Die heeft een functie waarbij de mockservice exporteert en vervolgens in Tomcat kan draaien, nog nooit meegemaakt dat die trager was dan wat ik verwachtte. Maar dat was alleen maar een simpel responseberichtje teruggeven.

Acties:
  • 0 Henk 'm!

  • Falcon
  • Registratie: Februari 2000
  • Laatst online: 08-10 08:15

Falcon

DevOps/Q.A. Engineer

Topicstarter
@Hydra

Goed punt, dit kwam niet duidelijk uit mijn verhaal. Ik maak zowel vanuit Jmeter als vanuit het testobject alleen gebruik van de rest interface van WireMock. Via Jmeter set ik een stubmapping met een JSON response. Deze JSON response is soms een array met meerdere waardes. Na het setten van de stubmapping parse ik het stubmappingsid uit de response, om later in de iteratie deze te gebruiken om de mapping te verwijderen. Het testobject maakt ook gebruik van wiremock via de rest-api, dit is voornamelijk omdat de applicatie ook via een rest-interface in de dictionary gekoppeld is aan de andere applicaties in de keten.

Zover ik heb kunnen concluderen is deze rest interface dermate trager dan de client/server-api (in java) dat ik daardoor een veel robuustere wiremockserver nodig heb. Maar dit kan ik nog niet staven door resultaten. (even server regelen met meer resources is niet zomaar gereed).

Omdat ik gebruik maak van de rest-api van Wiremock heb ik een uitdaging aangaande schaalbaarheid. Dit ligt niet aan het feit dat ik niet meerdere wiremock instanties kan hebben draaien op meerdere servers, maar dat ik nog steeds iedere wiremock instantie dezelfde stubmappings (en dus bij behorende load) moet toedoen zodat het testobject altijd de correcte response terug krijgt.

Nu is het voor mij bij de desbetreffende organisatie makkelijker om meerdere kleinere/lagere resource jvm neer te zetten, dan 1 hele grote (virtualisatie/containers).. alleen is dit niet makkelijk ivm dat er niet 1 centrale resource in Wiremock is in te stellen aka een database.

Ik vroeg mij daarom af of meer mensen hier ook zijn tegen aangelopen en misschien een andere mock-applicatie met rest-api + database support kennen?

@rvankruistum

De complexiteit van de response die ik set in Wiremock voor het testobject zit bij mij simpelweg in Jmeter. Dit doe ik in de iteratie voordat ik een event stuur naar het testobject die deze stubmappings gebruikt voor zijn proces.

[ Voor 4% gewijzigd door Falcon op 13-04-2017 09:43 ]

"We never grow up. We just learn how to act in public" - "Dyslexie is a bitch"