Volledige gids voor belastingtesten voor beginners

Een Complete Load Testing Gids voor beginners:

In deze tutorial leren we waarom we Loadtests uitvoeren, wat we ermee bereiken, architectuur, de aanpak die moet worden gevolgd om een Loadtest succesvol uit te voeren, hoe we een Loadtest-omgeving opzetten, best practices en de beste Loadtest-tools die op de markt verkrijgbaar zijn.

We hebben gehoord van zowel functionele als niet-functionele testen. Bij niet-functionele testen hebben we verschillende soorten testen zoals performance testen, beveiligingstesten, gebruikersinterface testen enz.

Load Testing is dus een niet-functionele vorm van testen die een onderdeel is van Performance Testing.

Dus als we zeggen dat we een toepassing testen op prestaties, wat testen we dan allemaal? We testen de toepassing op belasting, volume, capaciteit, stress enz.

Wat zijn belastingtests?

Load Testing is een subset van Performance Testing, waarbij we de respons van het systeem testen onder verschillende belastingscondities door meerdere gebruikers te simuleren die gelijktijdig toegang hebben tot de applicatie. Deze tests meten meestal de snelheid en capaciteit van de applicatie.

Telkens wanneer we de belasting wijzigen, controleren we dus het gedrag van het systeem onder verschillende omstandigheden.

Voorbeeld : Laten we aannemen dat de eis van onze klant voor een Login-pagina 2-5 sec is en deze 2-5 sec moet consistent zijn tot de belasting 5000 gebruikers bedraagt. Wat moeten we dan observeren? Is het alleen de belastbaarheid van het systeem of is het alleen de reactietijd eis?

Het antwoord is beide. Wij willen een systeem dat 5000 gebruikers kan verwerken met een reactietijd van 2-5 seconden voor alle gelijktijdige gebruikers.

Wat wordt bedoeld met een concurrent gebruiker en een virtuele gebruiker?

Gelijktijdige gebruikers zijn degenen die inloggen op de toepassing en tegelijkertijd een reeks activiteiten uitvoeren en tegelijkertijd uitloggen. Virtuele gebruikers daarentegen springen gewoon in en uit het systeem, ongeacht de activiteiten van andere gebruikers.

Belastingstestarchitectuur

In het onderstaande diagram kunnen we zien hoe verschillende gebruikers toegang krijgen tot de applicatie. Hier doet elke gebruiker een verzoek via het internet, dat later door een firewall wordt geleid.

Na de firewall hebben we een Load Balancer die de belasting verdeelt over alle webservers, en dan doorgeeft aan de applicatieserver en later aan de databaseserver waar hij de nodige informatie ophaalt op basis van het verzoek van de gebruiker.

Loadtests kunnen zowel handmatig als met behulp van een tool worden uitgevoerd. Maar handmatige loadtests worden afgeraden, omdat we de applicatie niet testen op een lagere belasting.

Voorbeeld: Laten we aannemen dat we een online winkelapplicatie willen testen om de reactietijd van de applicatie te zien voor elke gebruikersklik, d.w.z. Stap1 -Launch URL, de reactietijd, Login op de applicatie en noteer de reactietijd en zo verder zoals het selecteren van een product, toevoegen aan de winkelwagen, betalen en uitloggen. Dit alles moet gebeuren voor 10 gebruikers.

Dus, als we nu de belasting van de applicatie voor 10 gebruikers moeten testen, kunnen we dit bereiken door handmatig de belasting door 10 fysieke gebruikers van verschillende machines te bepalen in plaats van een tool te gebruiken. In dit scenario is het raadzaam om te kiezen voor een handmatige belastingstest in plaats van te investeren in een tool en een omgeving op te zetten voor de tool.

Stel dat we een belastingstest moeten uitvoeren voor 1500 gebruikers, dan moeten we de belastingstest automatiseren met een van de beschikbare tools op basis van de technologieën waarin de applicatie is gebouwd en ook op basis van het budget dat we voor het project hebben.

Als we een budget hebben, kunnen we gaan voor commerciële tools zoals Load runner, maar als we niet veel budget hebben, kunnen we gaan voor open source tools zoals JMeter, enz.

Of het nu gaat om een commerciële tool of een open source tool, de details moeten met de klant worden gedeeld voordat we de tool definitief maken. Meestal wordt een proof of concept voorbereid, waarbij we een voorbeeldscript genereren met de tool en de voorbeeldrapporten aan de klant laten zien ter goedkeuring van de tool voordat we deze definitief maken.

Bij geautomatiseerde belastingstests vervangen wij de gebruikers met behulp van een automatiseringsinstrument, dat de gebruikersacties in real time nabootst. Door de belasting te automatiseren kunnen wij zowel middelen als tijd besparen.

Hieronder staat het schema dat weergeeft hoe de gebruikers worden vervangen door een hulpmiddel.

Waarom belastingstesten?

Laten we aannemen dat er een online winkelwebsite is die het tijdens normale werkdagen vrij goed doet, d.w.z. gebruikers kunnen inloggen op de applicatie, door de verschillende productcategorieën bladeren, producten selecteren, artikelen aan het winkelwagentje toevoegen, afrekenen en uitloggen binnen een aanvaardbaar bereik en er zijn geen paginafouten of enorme reactietijden.

Ondertussen komt er een piekdag, laten we zeggen de Thanks Giving dag en er zijn duizenden gebruikers die zijn ingelogd op het systeem, het systeem is gecrasht alle van een plotselinge en de gebruikers ervaren een zeer trage reactie, sommigen konden niet eens inloggen op de site, een paar niet toe te voegen aan winkelwagen en sommige niet uit te checken.

Vandaar dat het bedrijf op deze grote dag een enorm verlies moest incasseren omdat het veel klanten en ook veel business verloor. Dit alles gebeurde alleen omdat ze de gebruikersbelasting voor piekdagen niet voorspelden, zelfs als ze dat wel hadden gedaan, was er geen belastingstest gedaan op de website van het bedrijf, vandaar dat ze niet weten hoeveel belasting de applicatie aankan op de piekdagen.

Dus om dergelijke situaties aan te pakken en om de enorme inkomsten te overwinnen, is het raadzaam om belastingstests uit te voeren voor dit soort toepassingen.

  • Load Testing helpt om sterke en betrouwbare systemen te bouwen.
  • Het knelpunt in het systeem wordt ruim van tevoren geïdentificeerd, voordat de toepassing live gaat.
  • Het helpt bij het vaststellen van de capaciteit van de toepassing.

Wat wordt bereikt tijdens een Load test?

Met een goede Load test kunnen we een exact inzicht krijgen in het volgende:

  1. Het aantal gebruikers dat het systeem aankan of waartoe het in staat is.
  2. De reactietijd van elke transactie.
  3. Hoe gedraagt elke component van het gehele systeem zich onder belasting, d.w.z. applicatieservercomponenten, webservercomponenten, databasecomponenten enz.
  4. Welke serverconfiguratie is het beste om de belasting aan te kunnen?
  5. Is de bestaande hardware voldoende of is er extra hardware nodig?
  6. Knelpunten zoals CPU-gebruik, geheugengebruik, netwerkvertragingen, enz. worden geïdentificeerd.

Milieu

We hebben een speciale loadtestomgeving nodig om onze tests uit te voeren, omdat de loadtestomgeving meestal dezelfde is als de productieomgeving en ook de gegevens in de loadtestomgeving dezelfde zijn als in de productieomgeving, hoewel het niet dezelfde gegevens zijn.

Er zullen meerdere testomgevingen zijn zoals SIT-omgeving, QA-omgeving enz. Deze omgevingen zijn niet dezelfde productie, want in tegenstelling tot belastingtests hebben zij niet zoveel servers of testgegevens nodig om functionele tests of integratietests uit te voeren.

Voorbeeld:

In een productieomgeving hebben we 3 applicatieservers, 2 webservers en 2 databaseservers. In QA hebben we slechts 1 applicatieserver, 1 webserver en 1 databaseserver. Als we dus een belastingstest uitvoeren op de QA-omgeving die niet gelijk is aan de productieomgeving, dan zijn onze tests niet geldig en ook onjuist en kunnen we dus niet afgaan op deze resultaten.

Probeer dus altijd een speciale omgeving voor Load testing te hebben die vergelijkbaar is met die van een productieomgeving.

Ook hebben we soms toepassingen van derden die ons systeem zal aanroepen, dus in die gevallen kunnen we stubs gebruiken, omdat we niet altijd kunnen samenwerken met de externe leveranciers voor het verversen van gegevens of andere problemen of ondersteuning.

Probeer een momentopname te maken van de omgeving zodra deze klaar is, zodat u, wanneer u de omgeving opnieuw wilt opbouwen, deze momentopname kunt gebruiken, wat zou helpen bij het tijdbeheer. Er zijn enkele hulpmiddelen op de markt om de omgeving op te zetten, zoals Puppet, Docker enz.

Benadering

Voordat we de belastingtest starten, moeten we weten of er al een belastingtest op het systeem is uitgevoerd of niet. Als er al eerder belastingtests zijn uitgevoerd, moeten we weten wat de responstijd was, welke client- en servergegevens zijn verzameld, hoeveel de gebruikerscapaciteit was, enz.

Als het om een nieuwe toepassing gaat, moeten we de vereisten begrijpen, wat is de beoogde belasting, wat is de verwachte reactietijd en of die echt haalbaar is of niet.

Als het een bestaande toepassing is, kunt u de belastingseisen en de gebruikerstoegangspatronen uit de serverlogboeken halen. Maar als het een nieuwe toepassing is, moet u contact opnemen met het bedrijfsteam om alle informatie te krijgen.

Zodra we de vereisten hebben, moeten we bepalen hoe we de belastingstest gaan uitvoeren: handmatig of met hulpmiddelen? Een belastingstest handmatig uitvoeren vergt veel middelen en is ook erg duur. Ook het herhalen van de test, keer op keer, is lastig.

Open source tools zijn gratis beschikbaar, deze tools hebben misschien niet alle functies zoals de andere commerciële tools, maar als het project een budgetbeperking heeft, kunnen we gaan voor open source tools.

Commerciële instrumenten hebben veel mogelijkheden, ondersteunen veel protocollen en zijn zeer gebruiksvriendelijk.

De aanpak van onze belastingstest is als volgt:

#1) Bepaal de acceptatiecriteria voor de belastingstest

Bijvoorbeeld:

  1. De reactietijd van de aanmeldingspagina mag niet meer dan 5 seconden bedragen, zelfs niet bij maximale belasting.
  2. Het CPU-gebruik mag niet meer dan 80% bedragen.
  3. De verwerkingscapaciteit van het systeem moet 100 transacties per seconde bedragen.

#2) Identificeer de bedrijfsscenario's die moeten worden getest.

Test niet alle flows, maar probeer de belangrijkste business flows te begrijpen die naar verwachting in productie zullen plaatsvinden. Als het een bestaande applicatie is, kunnen we zijn informatie halen uit de server logs van de productieomgeving.

Als het een nieuw gebouwde applicatie is, moeten we samenwerken met de business teams om de stroompatronen, het applicatiegebruik, enz. te begrijpen. Soms zal het projectteam workshops houden om een overzicht of details te geven over elk onderdeel van de applicatie.

We moeten de workshop over de toepassing bijwonen en alle vereiste informatie noteren om onze belastingstest uit te voeren.

#3) Modellering van de werklast

Zodra we de details hebben over de business flows, de gebruikerstoegangspatronen en het aantal gebruikers, moeten we de workload zo ontwerpen dat hij de werkelijke gebruikersnavigatie in de productie nabootst of zoals die in de toekomst wordt verwacht wanneer de applicatie in productie zal zijn.

De belangrijkste punten om te onthouden bij het ontwerpen van een workload model is om te zien hoeveel tijd een bepaalde business flow in beslag zal nemen. Hier moeten we de denktijd zo toewijzen dat de gebruiker op een meer realistische manier door de applicatie zal navigeren.

Het werkbelastingpatroon zal gewoonlijk bestaan uit een Ramp up, Ramp down en een steady state. We moeten het systeem langzaam belasten en daarom worden ramp up en ramp down gebruikt. De steady state zal gewoonlijk een belastingstest van een uur zijn met Ramp up van 15 min en Ram down van 15 min.

Laten we een voorbeeld nemen van het Workload Model:

Overzicht van de applicatie - Laten we uitgaan van een online shopping, waar de gebruikers inloggen op de applicatie en een grote verscheidenheid aan jurken hebben om te winkelen, en ze kunnen navigeren over elk product.

Om de details van elk product te bekijken, moeten zij op het product klikken. Als de kosten en het merk van het product hen bevallen, kunnen zij het product toevoegen aan de winkelwagen en het kopen door uit te checken en de betaling te verrichten.

Hieronder volgt een lijst van scenario's:

  1. Bladeren op - Hier start de gebruiker de toepassing, logt in de toepassing, bladert door verschillende categorieën en logt uit de toepassing.
  2. Bladeren, Product bekijken, Toevoegen aan mandje - Hier logt de gebruiker in op de applicatie, bladert door verschillende categorieën, bekijkt productdetails, voegt het product toe aan het winkelwagentje en logt uit.
  3. Bladeren, Product bekijken, In winkelwagen leggen en afrekenen - In dit scenario logt de gebruiker in op de toepassing, bladert door verschillende categorieën, bekijkt productdetails, voegt het product toe aan het winkelwagentje, rekent af en logt uit.
  4. Bladeren, Product bekijken, Toevoegen aan winkelwagen Uitchecken en Betalen - Hier logt de gebruiker in op de applicatie, bladert door verschillende categorieën, bekijkt productdetails, voegt het product toe aan het winkelwagentje, rekent af, doet de betaling en logt uit.
Nr. Bedrijfsstroom Aantal transacties Virtuele gebruikersbelasting

Reactietijd (sec) % Toegestane storingspercentage Transacties per uur

1 Bladeren op 17

1600

3 Minder dan 2%. 96000

2 Bladeren, Product bekijken, Toevoegen aan mandje 17

200

3 Minder dan 2%. 12000

3 Bladeren, Product bekijken, In winkelwagen leggen en afrekenen 18

120

3 Minder dan 2%. 7200

4 Bladeren, Product bekijken, Toevoegen aan winkelwagen Uitchecken en Betalen 20 80

3 Minder dan 2%. 4800

De bovenstaande waarden zijn afgeleid op basis van de volgende berekeningen:

  • Transacties per uur = Aantal gebruikers*Transacties van één gebruiker in één uur.
  • Het aantal gebruikers = 1600.
  • Het totale aantal transacties in het Browse-scenario = 17.
  • Reactietijd voor elke transactie = 3.
  • Totale tijd voor één gebruiker om 17 transacties te voltooien = 17*3 = 51 afgerond op 60 sec (1 min).
  • Transacties per uur = 1600*60 = 96000 Transacties.

#4) Ontwerp de belastingstesten - De Load Test moet worden ontworpen met de gegevens die we tot nu toe hebben verzameld, d.w.z. de Business flows, het aantal gebruikers, gebruikerspatronen, te verzamelen en te analyseren metrieken. Bovendien moeten de tests op een veel realistische manier worden ontworpen.

#5) Belastingstest uitvoeren - Voordat we de Load test uitvoeren, moeten we ervoor zorgen dat de applicatie draait. De Load test omgeving is klaar. De applicatie is functioneel getest en is stabiel.

Controleer de configuratie-instellingen van de Loadtest-omgeving. Deze moet hetzelfde zijn als de productieomgeving. Zorg ervoor dat alle testgegevens beschikbaar zijn. Zorg ervoor dat de nodige tellers worden toegevoegd om de systeemprestaties tijdens de testuitvoering te controleren.

Begin altijd met een lage belasting en voer de belasting geleidelijk op. Begin nooit met de volle belasting en breek het systeem af.

#6) Analyseer de resultaten van de belastingstest - Neem een basistest om altijd te vergelijken met de andere testruns. Verzamel de metriek en serverlogs na de testrun om de knelpunten te vinden.

Sommige projecten gebruiken Application Performance Monitoring Tools om het systeem tijdens de testrun te monitoren, deze APM-tools helpen om de hoofdoorzaak gemakkelijker te identificeren en besparen veel tijd. Deze tools zijn heel gemakkelijk om de hoofdoorzaak van het knelpunt te vinden, omdat ze een brede kijk hebben om vast te stellen waar het probleem zit.

Enkele APM-tools op de markt zijn DynaTrace, Wily Introscope, App Dynamics enz.

#7) Rapportage - Zodra de testrun is voltooid, verzamelt u alle statistieken en stuurt u het samenvattend testrapport naar het betrokken team met uw opmerkingen en aanbevelingen.

Beste praktijken

Lijst van Performance Testing Tools beschikbaar op de markt voor het uitvoeren van exclusieve belastingstesten.

Conclusie

In deze tutorial hebben we geleerd hoe Load testing een belangrijke rol speelt bij Performance testing van een applicatie, hoe het helpt om de efficiëntie en het vermogen van de applicatie te begrijpen, enz.

We kwamen ook te weten hoe het helpt te voorspellen of er extra hardware, software of tuning nodig is voor een toepassing.

Veel leesplezier!

Scroll naar boven