Wat is niet-functioneel testen?
In Functionele tests uitvoeren in Azure Pipelines, hebt u Selenium UI-tests toegevoegd aan de pijplijn. UI-tests zijn een vorm van functionele tests. In dit deel verkent u de soorten niet-functionele tests die u in een pijplijn kunt uitvoeren.
Het team definieert eerst niet-functionele tests. Ze hebben het over sommige soorten van deze tests. Vervolgens besluiten ze een niet-functionele test toe te voegen aan hun proces.
Hoe worden niet-functionele tests vergeleken met functionele tests?
In Functionele tests uitvoeren in Azure Pipelineshebben we functionele tests en niet-functionele tests gedefinieerd.
Kortom, functionele tests controleren of elke functie van de software doet wat het moet. Met andere woorden, functionele tests controleren de functionaliteit van een toepassing.
niet-functionele tests niet-functionele aspecten van een toepassing controleren, zoals prestaties en betrouwbaarheid. U kunt ook niet-functionele tests uitvoeren op systemen die geen apps zijn, zoals infrastructuuronderdelen. Een voorbeeld van een niet-functionele test is het bepalen hoeveel personen zich tegelijkertijd bij een toepassing kunnen aanmelden zonder een probleem te veroorzaken, zoals tragere reactietijden.
Op de Space Game website als voorbeeld kan een functionele test controleren of het leaderboard correct wordt weergegeven en of de juiste records worden weergegeven wanneer de gebruiker een filter selecteert. Een niet-functionele test kan controleren of het filteren van het leaderboard binnen minder dan één seconde is voltooid, zelfs wanneer veel gebruikers tegelijkertijd verbinding maken met de website.
Niet-functionele tests testen altijd iets dat meetbaar is. Het doel is om het product te verbeteren. U kunt dit bijvoorbeeld doen door te verbeteren hoe efficiënt de toepassing gebruikmaakt van resources of door reactietijden te verbeteren wanneer veel klanten deze tegelijkertijd gebruiken. Hier volgen enkele van de vragen die niet-functionele tests kunnen beantwoorden:
- Hoe presteert de toepassing onder normale omstandigheden?
- Hoe presteert de toepassing wanneer veel gebruikers zich gelijktijdig aanmelden?
- Hoe veilig is de toepassing?
Welke soorten niet-functionele tests kan ik uitvoeren?
Er zijn veel soorten niet-functionele tests. Veel daarvan passen in de brede categorieën prestatietests en beveiligingstests.
Prestatietests
Het doel van prestatietests is het verbeteren van de snelheid, schaalbaarheid en stabiliteit van een toepassing. Testen op snelheid bepaalt hoe snel een toepassing reageert. Testen op schaalbaarheid bepaalt de maximale gebruikersbelasting die een toepassing kan verwerken. Testen op stabiliteit bepaalt of de toepassing stabiel blijft onder verschillende belastingen. Twee veelvoorkomende typen prestatietests zijn belastingstests en stresstests.
Loadtesten
belastingtests de prestaties van een toepassing bepalen onder realistische belastingen. Belastingtests kunnen bijvoorbeeld bepalen hoe goed een applicatie presteert bij de bovengrens van de SLA (Service Level Agreement). In principe bepaalt belastingstests het gedrag van de toepassing wanneer meerdere gebruikers deze tegelijkertijd nodig hebben.
Gebruikers zijn niet noodzakelijkerwijs mensen. Een belastingstest voor printersoftware kan bijvoorbeeld grote hoeveelheden gegevens naar de toepassing verzenden. Een belastingstest voor een e-mailserver kan duizenden gelijktijdige gebruikers simuleren.
Belastingstests zijn ook een goede manier om problemen te ontdekken die alleen bestaan wanneer de toepassing op de limieten werkt. Dat is wanneer problemen zoals bufferoverloop en geheugenlekken kunnen ontstaan.
In deze module gebruikt u Apache JMeter om belastingstests uit te voeren. U gebruikt een set gesimuleerde gebruikers die tegelijkertijd toegang hebben tot de website.
Stresstest
Stresstests bepalen de stabiliteit en robuustheid van een toepassing bij zware belasting. De belasting is groter dan wat is gespecificeerd voor de toepassing. De stresstests bepalen of de toepassing vastloopt onder deze belastingen. Als de toepassing mislukt, controleert de stresstest of deze probleemloos mislukt. Een gracieuze mislukking zou bijvoorbeeld een geschikte, informatieve foutmelding kunnen geven.
Scenario's waarin toepassingen moeten werken onder abnormaal zware belastingen, zijn gebruikelijk. Bijvoorbeeld, als uw video viraal gaat, wilt u weten hoe goed de servers de extra belasting kunnen verwerken. Een ander typisch scenario is veel verkeer op winkelwebsites tijdens vakantieseizoenen.
Beveiligingstests
Beveiligingstests ervoor zorgt dat toepassingen vrij zijn van beveiligingsproblemen, bedreigingen en risico's. Grondige beveiligingstests vinden alle mogelijke gaten en zwakke plekken van het systeem die een informatielek of een verlies van inkomsten kunnen veroorzaken.
Er zijn veel soorten beveiligingstests. Twee daarvan zijn penetratietests en nalevingstests.
Penetratietests
Penetratietestsof pentests, is een type beveiligingstest waarmee de onveilige gebieden van een toepassing worden getest. In het bijzonder wordt getest op beveiligingsproblemen die een aanvaller kan misbruiken. Een geautoriseerde, gesimuleerde cyberaanval maakt meestal deel uit van penetratietests.
Nalevingstests
nalevingstests bepaalt of een toepassing voldoet aan een aantal vereisten binnen of buiten het bedrijf. Gezondheidszorgorganisaties moeten bijvoorbeeld meestal voldoen aan HIPAA (Health Insurance Portability and Accountability Act van 1996), die gegevensprivacy en beveiligingsbepalingen biedt voor het beschermen van medische informatie.
Een organisatie kan ook zijn eigen beveiligingsvereisten hebben. Software moet worden getest om ervoor te zorgen dat deze aan deze vereisten voldoet. Op Linux-systemen moet het standaardgebruikersmasker bijvoorbeeld 027 of meer beperkend zijn. Een beveiligingstest moet bewijzen dat aan deze vereiste wordt voldaan.
Het plan
In de rest van deze module stelt u uw Azure DevOps-omgeving in, leert u meer over het plannen van belastingstests met behulp van Apache JMeter en voert u belastingstests uit in Azure Pipelines.