De functionaliteit van een product is tegenwoordig ongetwijfeld een belangrijk en integraal onderdeel van het testproces. Maar er zijn ook responstijd, betrouwbaarheid, resourcegebruik en schaalbaarheid die ertoe doen. Prestatie testen is een apart type testen waarmee u kunt garanderen dat softwareapplicaties zonder problemen presteren onder de verwachte werkbelasting.
Onder de omstandigheden voor de ontwikkeling van geautomatiseerde testen, is er een verscheidenheid aan kant-en-klare tools die het mogelijk maken om loads te genereren, scripts op te nemen en deze volgens een schema uit te voeren. Maar voordat u hiermee begint, moet u de basisconcepten van prestaties kennen, de belangrijkste prestatieparameters begrijpen en weten hoe u deze kunt beïnvloeden. Uiteindelijk zal dit het proces van het automatiseren van loads objectiever maken en u in staat stellen om de juiste gegevens te gebruiken, nuttige scenario’s te ontwerpen en resultaten vakkundig te analyseren.
Dus, vandaag zullen we de volgende punten bespreken:
- wat moeten we testen
- technische vereisten en hun typen
- lijst van prestatie testtools
- doelen van prestatie testen
- prestatie testen
- loadmodellen
- prestatie metingen
- bronnen van problemen
Wat moeten we testen?
Definities van prestatie testen
Efficiëntie – een set attributen met betrekking tot de verhouding tussen het kwaliteitsniveau van de softwarefunctie en de hoeveelheid gebruikte middelen onder de gegeven omstandigheden.
Efficiëntiekenmerken:
- tijdgedrag – de softwareattributen met betrekking tot de reactie- en verwerkingstijden en de uitvoeringssnelheid van zijn functies.
- resourcegedrag – attributen van de software met betrekking tot de hoeveelheid gebruikte middelen en de duur van dat gebruik bij de uitvoering van de functie.
Dit zijn de 2 kenmerken die we proberen te controleren bij het uitvoeren van prestatie testen – dat de aard van de verandering met tijd en middelen voldoet aan de vereisten.
Bij het onthouden van de basisprincipes van testontwerp, moeten we weten dat de meest interessante fouten optreden aan de grenzen van de waarden. Dus het meest interessante gedrag van het systeem begint wanneer de middelen beginnen op te raken – CPU, geheugen, netwerk, schijf, enz. En wanneer we de grenswaarden van de middelen bereiken, begint de server prestatieproblemen te ondervinden, samen met functionele problemen.
Daarom besteden we bij het uitvoeren van prestatie testen enerzijds aandacht aan efficiëntie (aan resourceverbruik), en anderzijds zijn we ook geïnteresseerd in functionele defecten die optreden wanneer de grenzen van beschikbare serverbronnen worden bereikt.
Betrouwbaarheid – een set attributen die verband houden met het vermogen van de software om zijn prestatieniveau onder de gegeven omstandigheden voor een gespecificeerde periode te handhaven.
Betrouwbaarheidskenmerken:
- stabiliteit (volwassenheid) – softwareattributen met betrekking tot de foutenmarge in geval van softwarefouten.
- fouttolerantie – softwareattributen met betrekking tot het vermogen om een bepaald prestatieniveau te handhaven in geval van softwarefouten of -schendingen.
- herstelbaarheid – softwareattributen met betrekking tot het vermogen om het prestatieniveau te herstellen en de direct beschadigde gegevens te herstellen in geval van storing, evenals de tijd en moeite die hiervoor nodig zijn.
Deze drie kenmerken moeten worden opgenomen in prestatie testen; met andere woorden, prestatie testen is het testen van betrouwbaarheid + het testen van efficiëntie, met behulp van dezelfde tools en dezelfde methoden voor gegevensanalyse.
Technische vereisten
De vereisten voor volledigheid van de presentatie kunnen worden onderverdeeld in gedetailleerde en informele vereisten.
Gedetailleerde vereisten zijn niet altijd goed, zoals het lijkt, omdat ze de tester kunnen ontspannen. Informele vereisten bieden daarentegen meer ruimte voor creativiteit. De meest geschikte optie is die met onvolledig beschreven vereisten. En u zult zelden strikt nageleefde vereisten zien.
Drie basiselementen van technische vereisten:
- loadgeneratie – de load moet worden gegenereerd voor load testen;
- monitoring van prestatiekenmerken – aangezien de serverbelasting hoog is, is het noodzakelijk om een voldoende grote hoeveelheid indicatoren uit te lezen, en als u ze wilt gebruiken voor analyse, moet u ze eerst verzamelen;
- resultatenanalyse – bereiken van gemiddelde waarden van verschillende parameters, evenals analyse van ernstige afwijkingen (anomalieën).
Tools voor prestatietesten
Tools voor loadgeneratie
Tools voor loadgeneratie worden gebruikt om een groot aantal verzoeken te genereren, scripts te schrijven en deze op te nemen/af te spelen. Hieronder vindt u een lijst met enkele van de populairdere tools.
- JMeter
- Grinder
- Multi-mechanize
- Gatling
- Tsung
- LoadUI
- Curl-loader
- BlazeMeter
- Blitz
- Load Impact
- LoadStorm
- SOASTA
Monitoring tools
Dit type tools stelt u in staat om het belangrijkste kenmerk – responstijd – aan de clientzijde te meten, niet aan de serverzijde.
- ingebouwde tools
- tools van het besturingssysteem
- middelen van servers, DBMS
- gespecialiseerde middelen
- Zabbix, Nagios, Hyper
Tools voor resultatenanalyse
Als we het hebben over de analyse van resultaten bij prestatie testen, betekent dit in de eerste plaats het vermogen om verschillende grafieken te bouwen. De volgende tools kunnen worden gebruikt:
- ingebouwde tools.
- spreadsheets.
- pakketten voor statistische gegevensverwerking.
Doelen van prestatie testen
In eenvoudige termen gaat het doel van prestatie testen over “prestatie-informatie verkrijgen en deze aan belanghebbenden verstrekken, zodat zij deze kunnen gebruiken om beslissingen te nemen”. Hoe kan deze informatie verder worden gebruikt?
- Om de naleving van vereisten te verifiëren.
- Om verschillende versies of systeemconfiguraties te vergelijken.
- Om knelpunten te identificeren.
Loadmodellen
Afhankelijk van het type prestatie testen moet u een van de standaard loadmodellen kennen en gebruiken.
Loadmodel – hoeveel impact u op elk specifiek moment op het systeem moet hebben.
1. Constante load

Dit betekent dat we gedurende een lange periode ongeveer hetzelfde aantal verzoeken versturen. En we observeren de responstijd; deze moet gedurende de gehele laadtijd ongeveer constant, onveranderd blijven. Het hoofddoel van de constante load is het observeren van de responstijd – deze moet gedurende deze hele tijd onveranderd blijven.
2. Continu toenemende load

In tegenstelling tot het vorige model, waarbij er geen problemen zouden moeten zijn met een uniforme load, verwachten we hier bij toenemende load problemen tegen te komen. Het hoofddoel van dit model is het vinden van een verzadigingspunt waarna er ernstige problemen optreden in het systeem – afwijkingen van het verwachte gedrag (storingen).
3. Constante load, dicht bij de limiet

Na het continu verhogen van de load moeten we de stabiliteit van het systeem controleren in staten die dicht bij kritieke waarden liggen. Hiervoor moeten we een waarde nemen die gelijk is aan tweederde van de kritieke waarde en verifiëren dat het systeem stabiel zal werken onder dergelijke loads. En vervolgens moeten we dezelfde test uitvoeren voor een waarde die 10 procent lager is dan de kritieke waarde. De laatste maakt het mogelijk om resourcelekken te detecteren. Dit type load biedt dus testen van de systeemstabiliteit onder loads die dicht bij de marges liggen.
Loadtestmetingen
Een meting is een standaard voor het meten van een computerresource. Metingen kunnen verwijzen naar een resource en eenheden van meting, of naar de gegevens die op die resource zijn verzameld.
De beschreven metingen voor load testen zijn belangrijke prestatiestatistieken voor uw webapplicatie of website. Responstie-metingen tonen de prestatie meting vanuit een gebruikersperspectief, terwijl volume-metingen het verkeer tonen dat door de load testtool tegen de doelwebapplicatie wordt gegenereerd. De meest voorkomende prestatiemetingen worden hieronder vermeld:
- responstijd – de meest basale meting, een lange responstijd – zowel het gemiddelde als de individuele anomalieën en afwijkingen die tot vertragingen leiden.
- aantal fouten – storingen aan de server als gevolg van de load.
- resourceverbruik – hoeveel middelen worden verbruikt door de server.
Er zijn andere prestatie-indicatoren die u kunt meten, afhankelijk van uw project, server, vereisten, problemen. Maar de metingen die we hierboven hebben beschreven, zijn de kernmetingen.
Bronnen van problemen
De volgende belangrijkste redenen die de knelpunten kunnen zijn, zijn bekend.
- Gebrek aan middelen – CPU-tijd, RAM, netwerkbandbreedte, werkingstijd van het schijfonderdeel
- Niet-optimale algoritmen – de computer berekent langzaam, gebruikt algoritmen die leiden tot lange rekentijden
- Onjuiste load balancing – één server is overbelast terwijl de andere server onderbelast is
- Onjuiste resource caching – veelgebruikte gegevens verbruiken evenveel middelen als wanneer we ze voor de eerste keer opvragen, bijvoorbeeld.
- Onjuist wachtrijbeheer – aan één verzoek worden meer middelen toegewezen dan aan een ander.
- Functionele defecten – bugs in het product kunnen leiden tot prestatieproblemen
Samenvatting
Prestatie testen beschermt investeringen tegen productfalen. De kosten van prestatie testen worden meestal ruimschoots gecompenseerd door een verbeterde klanttevredenheid en retentie.
En in dit artikel hebben we de belangrijkste aspecten behandeld die u moet weten om geautomatiseerde prestatie testen van uw product op te zetten. Prestatie testen is niet inherent moeilijk. Begin er niet aan, houd de grondbeginselen van prestatie testen in gedachten, evalueer ook gebruikersgedragingen, workflows en wees voorbereid op scenario’s uit de echte wereld.
Over QAwerk
QAwerk is een Oekraïens bedrijf dat testdiensten op aanvraag levert. De expertise van het team omvat alle testfasen en -methoden die de stabiliteit van afzonderlijke eenheden en het systeem als geheel monitoren, integratiemogelijkheden bieden en zorgen voor positieve feedback van uw klanten. Op deze manier fungeert QAwerk als een one-stop-shop voor de kwaliteitsborging van uw project.