Wat is STRESS-testen bij het testen van software?

⚡ Slimme samenvatting

Stresstesten drijven een applicatie tot voorbij de normale operationele limieten om het breekpunt te vinden, te bevestigen dat storingen op een gecontroleerde manier worden afgehandeld en aan te tonen dat het systeem zich netjes herstelt zodra de extreme belasting is verwijderd.

  • 🔘 Definitie: Stresstesten meten de robuustheid en foutafhandeling onder een belasting die veel zwaarder is dan de belasting die in de praktijk wordt ervaren.
  • ☑️ Doel: De test lokaliseert het exacte punt van falen en controleert of het systeem herstelbaar is zodra de belasting weer normaal is.
  • ✅ Domein: De gedistribueerde, applicatie-, transactionele, systemische en verkennende varianten belasten elk een andere laag van het systeem.
  • 🧪 Werkwijze: Plannen, scripten, uitvoeren, analyseren en vervolgens bijstellen — meestal in drie of vier volledige cycli voordat de doelstellingen zijn bereikt.
  • ️ tooling: LoadRunner, Apache JMeter, StressTester, en NeoDe load genereert gelijktijdige virtuele gebruikers en legt responsgegevens vast.
  • 📊 metrics: Doorvoer, pagina's per seconde, hittime, tijd tot eerste byte en mislukte verbindingen kwantificeren het resultaat.

Stresstesten in softwaretesten

Wat is stresstesten?

Stress testen Stresstesten is een vorm van softwaretesten die de stabiliteit en betrouwbaarheid van een softwareapplicatie verifieert. Het doel van stresstesten is om de robuustheid en foutafhandeling van software te meten onder extreem zware belasting, en ervoor te zorgen dat de software niet crasht in kritieke situaties. Er wordt bewust getest buiten de normale werkingslimieten en geëvalueerd hoe de software zich gedraagt ​​onder extreme omstandigheden.

Bij stresstesten wordt de te testen applicatie (AUT) gedurende een korte periode zwaar belast om te bepalen hoe goed deze bestand is tegen de belasting. Stresstesten worden met name gebruikt om de grens te bepalen waarop het systeem, de software of de hardware het begeeft. Ook wordt gecontroleerd of het systeem effectief fouten afhandelt zodra die grens is overschreden.

In Software EngineeringStresstesten worden vaak in dezelfde context genoemd. Uithoudingsvermogen testenMaar de twee verschillen: bij stresstesten wordt een abnormaal hoge belasting in een korte tijd toegepast om het breekpunt te vinden, terwijl bij duurtesten (stresstesten) een matige belasting urenlang wordt aangehouden om geleidelijke slijtage aan het licht te brengen.

De onderstaande schermafbeelding toont een groot blok gegevens dat van een webpagina wordt gekopieerd.

Een zeer groot gegevensblok van een webpagina kopiëren om een ​​desktopapplicatie te belasten.

De te testen applicatie wordt zwaar belast wanneer 5 GB aan gegevens van de website wordt gekopieerd en in Kladblok wordt geplakt. Kladblok wordt nu overbelast en geeft een foutmelding "Reageert niet", precies zoals de volgende schermafbeelding laat zien.

Kladblok geeft een foutmelding 'Reageert niet' weer nadat er 5 GB aan gegevens in is geplakt.

Hetzelfde principe is direct toepasbaar op systemen aan de serverzijde.

Noodzaak van stresstests

Neem de volgende praktijkvoorbeelden in overweging, waarin het nut van stresstesten duidelijk naar voren komt:

  • Tijdens de festivalperiode is er een online winkel.ping Een website kan een piek in het aantal bezoekers ervaren, of wanneer er een uitverkoop wordt aangekondigd.
  • Wanneer een blog in een toonaangevende krant wordt vermeld, ervaart deze een plotselinge toename van het verkeer.

Het is van essentieel belang om stresstests uit te voeren om dergelijke abnormale verkeerspieken op te vangen. Het niet kunnen opvangen van deze plotselinge verkeersdrukte kan leiden tot omzetverlies en reputatieschade.

Stresstesten zijn om de volgende redenen ook zeer waardevol:

  • Het controleert of het systeem ook onder abnormale omstandigheden functioneert.
  • Dit bevestigt dat er een passende foutmelding wordt weergegeven wanneer het systeem zwaar belast wordt.
  • Systeemuitval onder extreme omstandigheden kan leiden tot enorm omzetverlies.
  • Het is beter om voorbereid te zijn op extreme omstandigheden door vooraf stresstests uit te voeren.

In het volgende gedeelte wordt uiteengezet wat een succesvolle stresstest moet aantonen.

Doelen van stresstesten

Het doel van stresstesten is het analyseren van het gedrag van een systeem na een storing. Om een ​​stresstest succesvol te laten verlopen, moet een systeem een ​​passende foutmelding weergeven onder extreme omstandigheden.

Voor stresstests worden soms enorme datasets gebruikt, en die gegevens kunnen verloren gaan als het systeem uitvalt. Testers moeten ervoor zorgen dat deze beveiligingsgerelateerde gegevens niet verloren gaan tijdens stresstests.

Het hoofddoel van stresstesten is ervoor te zorgen dat het systeem zich herstelt na een storing; deze eigenschap wordt herstelbaarheid genoemd. Herstel testen Vervolgens wordt de restauratieprocedure nauwkeurig gecontroleerd.

Belastingstest versus stresstest

Beide technieken behoren tot de Performance Testing familie, dus ze zijn gemakkelijk te verwarren. Het onderstaande diagram vergelijkt de twee belastingprofielen.

Grafiek die het constante belastingsprofiel van de belastingstest vergelijkt met het oplopende belastingsprofiel van de spanningstest.

load Testen Stress testen
load Testen Het test het systeemgedrag onder normale werkbelastingomstandigheden; het simuleert de daadwerkelijke verwachte werkbelasting. Stresstesten testen het gedrag van het systeem onder extreme omstandigheden en worden uitgevoerd totdat het systeem uitvalt.
Belastingstests beschadigen het systeem niet. Stresstesten zijn er bewust op gericht het systeem te laten crashen door het te overladen met data of door het te weinig resources te geven.

Gerelateerde profielen zijn onder andere: Spike-testen (een plotselinge, korte uitbarsting), Volume testen (grote hoeveelheden data in plaats van veel gebruikers) en Schaalbaarheid testen (groeiruimte).

Soorten stresstests

Hieronder worden de verschillende soorten stresstests één voor één uitgelegd.

Gedistribueerde stresstesten

In gedistribueerde client-server-systemen wordt het testen uitgevoerd op alle clients vanaf de server. De rol van de stresstestserver is om een ​​reeks stresstests te distribueren naar alle clients die aan de stresstest deelnemen. tracDe server registreert de status van elke client. Nadat een client contact heeft opgenomen met de server, voegt de server de naam van de client toe en begint met het verzenden van testgegevens. De onderstaande afbeelding laat zien hoe de stresstestserver sommige clients wel bereikt en andere niet.

Een gedistribueerde stresstestopstelling waarbij een stressserver Client1 en Client2 bereikt, maar het contact met Client3 en Client4 verliest.

Ondertussen sturen clientmachines een signaal, ofwel een heartbeat, om te bevestigen dat ze nog steeds verbonden zijn met de server. Als de server geen signaal van een clientmachine ontvangt, moet die machine nader worden onderzocht om de fout op te sporen. In de afbeelding kan de server verbinding maken met 2 clients (Client1 en Client2), maar kan hij geen signaal verzenden of ontvangen van Client 3 en Client 4.

Een test die de hele nacht duurt, is de beste optie voor deze stresstestscenario's. Grote serverparken hebben een efficiëntere methode nodig om te bepalen welke computers storingen hebben vertoond tijdens de stresstest en nader onderzoek vereisen.

Toepassingsstresstesten

Deze tests richten zich op het opsporen van defecten met betrekking tot datavergrendeling en -blokkering, netwerkproblemen en prestatieknelpunten binnen één enkele applicatie.

Transactionele stresstests

Het voert stresstests uit op één of meer transacties tussen twee of meer applicaties. Het wordt gebruikt voor het verfijnen en optimaliseren van het systeem.

Systemische stresstests

Dit is een geïntegreerde stresstest die kan worden uitgevoerd op meerdere systemen die dezelfde server delen. Het wordt gebruikt om defecten te vinden waarbij de ene applicatie de gegevens van een andere applicatie blokkeert.

Exploratieve stresstests

Dit type stresstest wordt gebruikt om een ​​systeem te testen met ongebruikelijke parameters of omstandigheden die zich in de praktijk waarschijnlijk niet zullen voordoen. Het wordt gebruikt om defecten te vinden in onverwachte situaties, zoals:

  • Een groot aantal gebruikers was tegelijkertijd ingelogd.
  • Een virusscanner start gelijktijdig op alle machines.
  • Een database die offline gaat terwijl deze via een website wordt benaderd.
  • Een grote hoeveelheid gegevens wordt gelijktijdig in de database ingevoerd.

Welke variant ook van toepassing is, de uitvoeringsvolgorde blijft hetzelfde.

Hoe stresstesten uitvoeren?

Het stresstestproces kan in 5 belangrijke stappen worden uitgevoerd:

  • Stap 1) Het plannen van de stresstest: Hier verzamel je de systeemgegevens, analyseer je het systeem en definieer je de doelen van de stresstest.
  • Stap 2) Automatiseringsscripts maken: In deze fase maak je de automatiseringsscripts voor de stresstests en genereer je de testgegevens voor de stressscenario's.
  • Stap 3) Scriptuitvoering: In deze fase voert u de automatiseringsscripts voor de stresstest uit en slaat u de resultaten van de stresstest op.
  • Stap 4) Resultatenanalyse: In deze fase analyseert u de resultaten van de stresstest en identificeert u knelpunten.
  • Stap 5) Aanpassingen en optimalisatie: In deze fase verfijn je het systeem, wijzig je configuraties en optimaliseer je de code met als doel de gewenste benchmark te behalen.

Ten slotte doorloop je de hele cyclus opnieuw om te bepalen of de aanpassingen het gewenste resultaat hebben opgeleverd. Het is bijvoorbeeld niet ongebruikelijk dat er 3 tot 4 cycli van de stresstest nodig zijn voordat de prestatiedoelen zijn bereikt, dus de scripts worden normaal gesproken parallel aan de test uitgevoerd. regressie op.

Aanbevolen hulpmiddelen voor stresstesten

De vier onderstaande tools dekken de meeste behoeften, van bedrijfsbrede softwarepakketten tot een gratis open-source optie.

LoadRunner

LoadRunner is een veelgebruikt hulpmiddel voor belastingstests, dat nu wordt verkocht door OpenText in de Professional-, Enterprise- en Cloud-edities na de overstap van HP naar Micro Focus. OpenTextDe resultaten van de belastingstest die door LoadRunner worden gegenereerd, worden als referentiepunt gebruikt.

JMeter

Apache JMeter is een open-source testtool. Het is een pure Java Deze applicatie is bedoeld voor stress- en prestatietests en omvat testtypen zoals belasting-, functionele en stresstests. De huidige 5.6.x-releases van Apache JMeter vereisen Java 8 jaar of ouder, met Java 17 aanbevolen.

Stresstester

Deze tool biedt een uitgebreide analyse van de prestaties van webapplicaties, presenteert de resultaten in grafische vorm en is eenvoudig in gebruik. Er is geen geavanceerde scripting nodig, waardoor het rendement op de investering laag blijft.tracatief voor kleinere teams.

NeoLaden

NeoLaden, nu onderdeel van de Tricentis Portfolio is een populair hulpmiddel voor het testen van webapplicaties en websites. mobiele applicatiesHet kan duizenden gebruikers simuleren om de applicatieprestaties onder belasting te evalueren en de responstijden te analyseren. Het ondersteunt ook cloudgeïntegreerde prestatie-, belasting- en stresstests en is goed schaalbaar.

Meer opties staan ​​vermeld in de handleiding. prestatietestinstrumentenWelke optie ook gekozen wordt, de uitkomst ervan is alleen relevant in relatie tot de onderstaande criteria.

Statistieken voor stresstests

Metrieken helpen bij het evalueren van de prestaties van een systeem en worden over het algemeen aan het einde van de stresstest bestudeerd. Veelgebruikte metrieken zijn onderverdeeld in drie groepen.

Het meten van schaalbaarheid en prestaties

  • Pagina's per seconde: Meet hoeveel pagina's er per seconde worden opgevraagd.
  • Doorvoer: Een basisparameter: de hoeveelheid responsdata per seconde.
  • Rondes: Het aantal keren dat testscenario's zijn gepland versus het aantal keren dat een klant ze heeft uitgevoerd.

Sollicitatiereactie

  • Treffertijd: Gemiddelde tijd om een ​​afbeelding of pagina op te halen.
  • Tijd tot eerste byte: De tijd die nodig is om de eerste byte aan gegevens of informatie terug te geven.
  • Paginatijd: De tijd die nodig is om alle informatie op een pagina op te halen.

mislukkingen

  • Mislukte verbindingen: Aantal mislukte verbindingen die door de client zijn geweigerd (zwak signaal).
  • Mislukte rondes: Aantal mislukte rondes.
  • Mislukte hits: Aantal mislukte pogingen van het systeem (kapotte links of niet-weergegeven afbeeldingen).

In het laatste gedeelte worden de situaties opgesomd die het vaakst een stresstest rechtvaardigen.

Voorbeelden van stresstesten

Stresstesten zijn nuttig wanneer verwacht wordt dat een evenement het verkeer aanzienlijk boven het dagelijkse basisniveau zal laten stijgen:

  • Een e-commerce website die een festivaluitverkoop aankondigt.
  • Een nieuwswebsite ten tijde van een belangrijke gebeurtenis.
  • Een onderwijsraad die examenresultaten publiceert.
  • Sociale netwerksites, blogs en mobiele apps tijdens een virale hype.

In elk geval controleert de test de resources zoals geheugen, processor en netwerk, kijkt of er onder belasting de juiste foutmeldingen verschijnen en bevestigt dat het systeem daarna weer normaal functioneert. Het past in de levenscyclus van softwaretests als een niet-functionele controle naast Systeem testen en de bredere reeks van software testtypen.

Veelgestelde vragen

Nee. Bij een stresstest wordt een abnormaal zware belasting gedurende een korte periode toegepast om het breekpunt te bepalen. Een weektest of duurtesten Houdt het apparaat urenlang onder realistische belasting om geheugenlekken en langzame slijtage aan het licht te brengen.

Spike-testen Bij stresstesten wordt een plotselinge, zeer korte belasting op het systeem toegepast, waarna wordt gemeten hoe snel het systeem schaalt en herstelt. Bij stresstesten wordt de belasting geleidelijk opgevoerd tot het systeem faalt, waardoor wordt vastgesteld waar de limiet ligt in plaats van hoe snel het systeem reageert.

Voer deze test uit vóór elke grote release, voorafgaand aan verwachte verkeerspieken zoals een uitverkoop of de dag waarop resultaten worden bekendgemaakt, en na architectuurwijzigingen aan caching, connection pooling of autoscaling. Veel teams herhalen de test ook elk kwartaal als basiscontrole.

Gebruik een omgeving die qua omvang zo dicht mogelijk bij de productieomgeving ligt als het budget toelaat, omdat ondergedimensioneerde hardware het breekpunt verlegt. Vul de omgeving met gemaskeerde of synthetische data van het productievolume en voer nooit een destructieve stresstest uit op live klantgegevens.

Machine learning-modellen analyseren telemetriegegevens van de productie om realistische piekbelastingsprofielen te creëren, afwijkende responstijdcurves te signaleren die met een vaste drempelwaarde niet zouden worden opgemerkt, en resourcegegevens te correleren om de knelpunten aan te wijzen. Verschillende commerciële platforms genereren nu belastingscenario's op basis van waargenomen gebruikspatronen.

Ja. Copilot-concepten JMeter Testplannen, k6- of Gatling-scripts, geparameteriseerde datageneratoren en CI-pipeline-stappen kunnen worden gegenereerd vanuit een eenvoudige opdrachtprompt. Beschouw de output als een eerste concept: denktijden, tempo en beweringen moeten nog door een tester worden gevalideerd.

Het onthult de werkelijke capaciteitslimiet, bewijst foutafhandeling en vermindert het risico op uitval tijdens pieken. De beperkingen zijn de kosten – productieomgevingen en licenties zijn duur – plus de benodigde scriptinspanning en de resultaten die veranderen telkens wanneer de infrastructuur wijzigt.

Performance engineers of gespecialiseerde testers voeren het uit, meestal met ontwikkelaars en operationeel personeel in de buurt om serverstatistieken te lezen. Het wordt uitgevoerd na de functionele tests. systeem testen, zodra de build stabiel genoeg is, zodat fouten wijzen op capaciteitslimieten in plaats van bugs.

Vat dit bericht samen met: