Junior
Vertel me over load testing.
sobes.tech AI
Antwoord van AI
Load testing is een soort test dat gericht is op het bepalen van de prestaties, stabiliteit en schaalbaarheid van een applicatie (systeem) onder verschillende belastingen.
Doelen van load testing:
- Het bepalen van de maximale belasting die het systeem aankan.
- Het identificeren van knelpunten.
- Het beoordelen van de reactietijd van het systeem bij een bepaalde belasting.
- Het controleren van de stabiliteit van het systeem op lange termijn onder belasting.
- Het testen van de schaalbaarheid van het systeem.
Soorten load testing:
- Load Testing: Het gedrag van het systeem bij verwachte (normale) belasting testen.
- Stress Testing: Het systeem testen bij belasting die de normale overschrijdt, tot het falen. Doel is het bepalen van de grens van de duurzaamheid.
- Endurance/Soak Testing: Het testen van de stabiliteit van het systeem bij langdurige belasting, het detecteren van geheugenlekken en prestatie-degradatie.
- Spike Testing: Het gedrag van het systeem testen bij plotselinge, grote toename van de belasting.
- Scalability Testing: Het beoordelen van het vermogen van het systeem om toenemende belasting te verwerken door horizontale of verticale schaalvergroting.
- Volume Testing: Het gedrag van het systeem testen bij groei van de datavolume.
Stappen voor het uitvoeren van load testing:
- Doelstellingen bepalen: Het definiëren van prestatie-indicatoren (reactietijd, throughput, foutaantallen) en succescriteria.
- Scenario's plannen en ontwerpen: Analyse van gebruikersscenario's, bepalen van het belastingprofiel.
- Testscripts ontwikkelen: Scripts schrijven die gebruikersacties simuleren met behulp van load testing tools.
- Testomgeving voorbereiden: Configureren van een testopstelling die de productieomgeving simuleert.
- Testen uitvoeren: Tests uitvoeren met verschillende belastingniveaus.
- Monitoring en gegevensverzameling: Prestatiegegevens verzamelen van het systeem, servers, databases.
- Resultaten analyseren en rapporteren: Resultaten vergelijken met doelen, problemen identificeren, rapport opstellen.
Tools voor load testing:
- JMeter
- LoadRunner
- Gatling
- k6
- Locust
Voorbeeld van een eenvoudige JMeter-script (HTTP Request):
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.2">
<hashTree>
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Voorbeeld load test">
<hashTree>
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group">
<intProp name="ThreadGroup.num_threads">100</intProp>
<intProp name="ThreadGroup.ramp_time">10</intProp>
<longProp name="ThreadGroup.duration">60</longProp>
<boolProp name="ThreadGroup.scheduler">true</boolProp>
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request">
<stringProp name="HTTPSampler.domain">example.com</stringProp>
<stringProp name="HTTPSampler.path">/</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
<boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp>
<boolProp name="HTTPSampler.embedded_url_report">true</boolProp>
<boolProp name="HTTPSampler.connect_timeout"></boolProp>
<boolProp name="HTTPSampler.response_timeout"></boolProp>
<stringProp name="HTTPSampler.protocol">https</stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.comment"></stringProp>
<stringProp name="HTTPSampler.port"></stringProp>
<stringProp name="HTTPSampler.image_parser">true</stringProp>
<stringProp name="HTTPSampler.concurrentDwn">Both</stringProp>
<stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
<stringProp name="HTTPSampler.implementation_status">OK</stringProp>
<boolProp name="HTTPSampler.postBodyRaw">false</boolProp>
<listProp name="HTTPSampler.HTTP_HEADERS"></listProp>
</HTTPSamplerProxy>
<hashTree/>
</hashTree>
</hashTree>
</hashTree>
</TestPlan>
</hashTree>
</jmeterTestPlan>
Metriken die tijdens load testing worden verzameld:
- Reactietijd
- Throughput
- Foutaantallen per seconde
- Verzoekaantallen per seconde
- CPU-gebruik
- Geheugen gebruik
- Disk I/O activiteit
- Netwerkactiviteit
- Database metrics
Load testing helpt om systeemstoringen in productie te voorkomen onder hoge belasting en zorgt voor een acceptabel kwaliteitsniveau voor eindgebruikers.