Wat is destructief testen in software?
⚡ Slimme samenvatting
Destructief testen drijft een softwareapplicatie opzettelijk tot het uiterste totdat deze faalt, waardoor de exacte punten aan het licht komen waar de robuustheid faalt bij oneigenlijk gebruik, ongeldige invoer en onvoorspelbaar gedrag, punten die gewone functionele controles nooit bereiken.

Wat is destructief testen?
Destructief testen Destructief testen is een softwaretestmethode die wordt gebruikt om zwakke punten in een softwareprogramma te vinden. Bij deze techniek wordt een applicatie opzettelijk laten falen, zodat de robuustheid ervan kan worden gecontroleerd en de zwakke punten kunnen worden geïdentificeerd. In tegenstelling tot testmethoden die verifiëren wat de applicatie zou moeten doen, onderzoekt destructief testen onvoorspelbaar gebruikersgedrag binnen de applicatie.
Kennis van de oorspronkelijke eisen is niet nodig voor destructief onderzoek. Enige kennis is echter wel nuttig bij de ontwikkeling.ping een goede teststrategie.
De onderstaande afbeelding illustreert dit idee: de tester werkt tegen het product in plaats van ermee.
Waarom wordt destructief onderzoek uitgevoerd?
- Het helpt om voorspelbaar softwaregedrag te begrijpen wanneer de software onjuist wordt gebruikt.
- Het helpt om de robuustheid van een softwareproduct te controleren.
- Het brengt zeldzame defecten aan het licht die gewone gebruikers nooit veroorzaken, maar die later in het productieproces aan het licht komen.
Destructief onderzoek versus niet-destructief onderzoek
De twee benaderingen vullen elkaar aan, ze zijn geen concurrenten. Niet-destructief onderzoek — ook wel positief of 'happy-path' testen genoemd — interacteert correct met de software en laat de build intact. Destructief testen doet het tegenovergestelde: het voert ongeldige data en verkeerde sequenties in totdat er iets kapot gaat.
| Aspect | Destructief testen | Niet-destructief onderzoek |
| Doel | Dwing de applicatie om te falen | Controleer of de applicatie werkt zoals beschreven. |
| Gebruikte invoer | Ongeldig, misvormd, buiten bereik, niet in de juiste volgorde | Geldige gegevens binnen het verwachte bereik |
| Vraag beantwoord | Waar en hoe gaat het kapot? | Doet hij wat het zou moeten doen? |
| Vereistenkennis | optioneel | Essentiële |
| Typische kosten | Hoger niveau — verkennend en open-ended | Onder — gescript en herhaalbaar |
| Resultaat | Storingspunten, bereiklimieten, herstelgedrag | Voldoen aan de specificaties of niet? |
Wat controleer je bij destructief onderzoek?
Bij destructief onderzoek worden beide kanten van de gedragsgrens bekeken:
- Correct softwaregedrag
- Onjuist softwaregedrag
- Oneigenlijk gebruik
- Onjuiste invoergegevens
- Juiste uitvoergegevens
Tijdens de hele oefening moeten aan twee voorwaarden worden voldaan:
- De software mag nooit ongeldige invoergegevens verwerken of accepteren.
- Ongeacht de geldigheid of juistheid van de invoergegevens, moet de software altijd correcte uitvoergegevens produceren.
Hoe destructief testen uit te voeren?
Destructief testen omvat veel activiteiten, zoals het ontwerpen van een reeks testscripts, het uitvoeren van die scripts, het melden van bugs, het oplossen van bugs en het aan het einde van de iteratie verstrekken van resultaten (geslaagd of mislukt) aan de belanghebbenden.
Er zijn talloze manieren om het uit te voeren. Enkele voorbeelden volgen.
- Analysemethode voor faalpunten: Een stapsgewijze handleiding van het systeem die beoordeelt wat er op verschillende punten mis zou kunnen gaan. Hulp van een bedrijfsanalist kan voor deze strategie worden aangenomen.
- Peer review door testers: haal je testgevallen geanalyseerd of beoordeeld door een collega-tester die minder bekend is met het systeem of de functie.
- Bedrijfsevaluatie van testgevallen: Eindgebruikers of experts bedenken vaak geldige scenario's die testers over het hoofd zien, omdat de tester zich concentreert op de gestelde eisen.
- Voer verkennende tests uit met behulp van testprotocollen: verkennende tests Testformulieren registreren wat er is getest, maken het mogelijk om de tests te herhalen en zorgen ervoor dat de testdekking onder controle blijft.
- Gebruik een andere bron: Vraag iemand anders om het softwareproduct te laten crashen en analyseer de scenario's die daarbij ontstaan.
Voorbeeld van destructief onderzoek
Neem bijvoorbeeld de inlog- en profielschermen van een bankapplicatie. Een destructieve aanval zou in gevallen als deze werken:
- Plak een tekenreeks van 5,000 tekens in een veld dat is beperkt tot 50 tekens en bevestig dat het veld de tekenreeks weigert in plaats van deze stilzwijgend af te korten.
- Voer letters, symbolen en negatieve waarden in een numeriek bedragveld in.
- Doorbreek de verwachte volgorde: open direct de pagina met de betalingsbevestiging zonder de voorgaande stap te voltooien.
- Druk herhaaldelijk en snel achter elkaar op 'Verzenden' om te zien of er dubbele records worden aangemaakt.
- Verbreek de netwerkverbinding midden in de transactie en controleer of de applicatie probleemloos herstelt of een gedeeltelijke registratie achterlaat.
Voor elk geval geldt een vastgestelde verwachting: een duidelijke validatiemelding, geen gegevenscorruptie en geen onafgehandelde uitzondering. Alles wat hiervan afwijkt, is een faalpunt dat als defect moet worden gemeld.
Destructieve testmethoden
De volgende methoden worden in de software-engineering gebruikt om destructieve testdoelen te bereiken:
- Alfa-/bèta-testen
- Regressietesten
- Interface testen
- Gelijkwaardigheidspartitionering
- Loop testen
- Acceptatietesten, enzovoort.
Destructieve testtechnieken
De onderstaande technieken kunnen met enkele aanpassingen worden gebruikt:
- White box testen
- Beveiligingstests
- Defecttesten
- Rook testen, enzovoorts
Aanverwante technieken die de moeite waard zijn om toe te voegen wanneer robuustheid het doel is, zijn: negatief testen, stresstests, herstel testen en fuzz-testen.
Voordelen en nadelen van destructief onderzoek
Het is belangrijk om de afweging duidelijk te vermelden voordat de techniek in een release wordt opgenomen.
Voordelen
- Revlegt zwakke punten bloot die bij specificatiegestuurde tests nooit aan het licht komen.
- Hiermee worden realistische bereiklimieten vastgesteld, zodat het product daarbinnen met vertrouwen kan worden gebruikt.
- Legt zeldzame defecten bloot die pas lang na de release tijdens de productie aan het licht komen.
- Test de duurzaamheid, het herstelvermogen en de foutafhandeling onder zware belasting.
Nadelen
- Omdat het van nature een open vraag is, kan de dekking niet gegarandeerd of eenvoudig gemeten worden.
- Tijdrovend en afhankelijk van de ervaring en creativiteit van de tester.
- Bevindingen zijn moeilijk te reproduceren zonder een zorgvuldige registratie van de uitgevoerde stappen.
- Slecht gecontroleerde testruns kunnen gedeelde testgegevens beschadigen, daarom is een geïsoleerde omgeving vereist.

