Wat is negatief testen? Testgevallen met voorbeeld

โšก Slimme samenvatting

Negatieve testen controleren hoe een softwareapplicatie zich gedraagt โ€‹โ€‹wanneer deze onverwachte invoergegevens of bedrijfsomstandigheden ontvangt, zodat het product geleidelijk minder goed functioneert in plaats van vast te lopen, gegevens te beschadigen of een beveiligingslek bloot te leggen.

  • ???? Doel: Controleer of de applicatie ongeldige gegevens correct afwijst in plaats van te falen of vast te lopen.
  • โ€‹ Contrast: Een positieve testuitslag bewijst dat alles volgens plan verloopt; een negatieve testuitslag onderzoekt alles wat daarvan afwijkt.
  • ๐Ÿ›— Analogie: Een lift moet bestand zijn tegen overbelasting, brand en stroomuitval, niet alleen tegen normale passagiersritten.
  • ๐Ÿ”’ Beveiliging: Ongeldige uploads en SQL-injectiepogingen zijn klassieke negatieve testscenario's.
  • ๐Ÿงช Design: Grenswaarden, equivalentieklassen, foutschatting en fuzzing genereren de gevallen.
  • ๐Ÿ“Š Prioriteit: Rangschik ongeldige invoer op basis van de impact, omdat een uitputtende negatieve berichtgeving onbetaalbaar is.
  • โš ๏ธ Afweging: Overmatig testen op negatieve resultaten kost geld dat anders besteed zou worden aan het testen op positieve resultaten.

Negatieve testen in softwaretesten met ongeldige invoervoorbeelden

Negatieve testen

Negatieve testen Negatieve testen zijn een type softwaretest dat wordt gebruikt om een โ€‹โ€‹softwareapplicatie te controleren op onverwachte invoergegevens en -omstandigheden. Onverwachte gegevens of omstandigheden variรซren van een onjuist gegevenstype in een eenvoudig formulierveld tot een opzettelijke hackaanval. Het doel van negatieve testen is om te voorkomen dat de applicatie vastloopt door ongeldige invoer en om de kwaliteit en stabiliteit van het product te verbeteren.

Een positieve test bewijst alleen dat het systeem onder normale omstandigheden werkt. Een negatieve test bevestigt dat hetzelfde systeem ook abnormale omstandigheden aankan, wat essentieel is voor een fouttolerant product.

Voorbeeld van negatief testen

Een lift is het voorbeeld dat het vaakst wordt gebruikt om negatieve testresultaten uit te leggen, omdat zowel het normale gedrag als het falen ervan gemakkelijk voor te stellen zijn.

De werking van een lift is bekend: door een verdiepingsnummer in te drukken, gaat de lift naar die verdieping en de deur opent automatisch zodra de lift de aangegeven verdieping bereikt.

Hieronder staan โ€‹โ€‹enkele negatieve scenario's voor dezelfde lift, naast de aanname die een positieve testuitslag met zich meebrengt.

Negatieve testen Positief testen
Wat gebeurt er als het aantal personen (gewicht) de opgegeven limiet overschrijdt? Er wordt vanuit gegaan dat alleen het opgegeven aantal personen de lift zal betreden.
Wat gebeurt er als iemand rookt of brand sticht in de lift? Er wordt vanuit gegaan dat er geen rook of vuur in de lift zal ontstaan.
Wat gebeurt er als er tijdens de werking een stroomstoring optreedt? Er wordt vanuit gegaan dat er geen stroomuitval zal zijn terwijl de lift in werking is.

Al deze gevallen vallen onder negatieve testresultaten. Geen enkel geval kan gegarandeerd nooit voorkomen, dus elk geval moet worden ingedamd.

Stel dat de overbelasting nooit wordt gecontroleerd en de lift zich abnormaal gedraagt โ€‹โ€‹zodra deze overbelast raakt. Die ene fout kan de betrouwbaarheid van het systeem aantasten en zelfs levensgevaarlijk zijn. Dit is wat negatieve testen in de praktijk betekenen en waarom ze belangrijk zijn.

Software gedraagt โ€‹โ€‹zich op dezelfde manier. Een negatieve test wijkt opzettelijk af van de normale werkprocedure. Neem bijvoorbeeld een inschrijfformulier.

Negatieve testen Positief testen
Voer een ongeldig e-mailadres in het e-mailveld in. Alleen geldige e-mailadressen worden ingevoerd in een e-mailveld.
Voer een ongeldig telefoonnummer in, bijvoorbeeld tekens, in het telefoonnummerveld. In het numerieke veld mogen alleen getallen worden ingevoerd.
Upload een afbeelding met een afmeting buiten de opgegeven grenzen. Alleen afbeeldingen binnen de opgegeven afmetingen worden geรผpload.
Ongeldige bestanden uploaden, zoals XML or SQL bestanden in een afbeeldingsuploadveld Alleen geldige afbeeldingsformaten zoals .jpg of .png worden geรผpload.

In elk van deze negatieve gevallen moet het systeem nog steeds functioneren. Als er een teken in een numeriek veld wordt getypt, kan de applicatie de onverwachte gegevens niet verwerken en kan deze vastlopen. Erger nog, een SQL injectie Een wijziging van een tekenreeks in hetzelfde veld kan de inhoud van de database wissen. Dergelijke verliezen zijn de reden waarom negatieve tests bestaan.

Waarom negatief testen?

Testen kost tijd en geld, dus het is belangrijk om te bepalen wat, hoe en hoeveel er getest moet worden. De argumenten voor het besteden van een deel van dat budget aan negatieve tests verschillen per projectvoorkeur.

Organisatieperspectief

Het leveren van een product van goede kwaliteit aan de klant is de verantwoordelijkheid van de organisatie, en negatieve testen maken deel uit van die verplichting. Het is tevens het bewijs voor de organisatie dat zij alle redelijke maatregelen heeft genomen om een โ€‹โ€‹storing te voorkomen, ook al is geen enkel systeem volledig foutloos.

De impact is de doorslaggevende factor. Een e-commercewebsite kan alle positieve tests doorstaan โ€‹โ€‹en toch een kwetsbaarheid bevatten waardoor een aanvaller een SQL-injectie kan uitvoeren en de achterliggende gegevens kan wissen. Dat is een ernstige beveiligingsinbreuk, en alleen negatieve tests sporen die op.

Publieksgerichte applicaties, met name websites, bieden vrijwel geen controle over hoe bezoekers ze gebruiken. Daarom is negatief testen de enige manier om te bevestigen dat ongebruikelijk gebruik wordt afgedekt en ingedamd. Hetzelfde geldt voor kwaadwillende gebruikers: aanvallers zoeken actief naar een kans om een โ€‹โ€‹systeem te kraken, en hackscenario's horen absoluut thuis in de dekking van negatieve tests.

Klantperspectief

Klanten verwachten een product zonder kwetsbaarheden, en negatieve tests ondersteunen die verwachting. Voor gevoelige producten zoals e-commerce of online aandelenhandel, beveiligingstesten En negatieve testresultaten zijn verplicht in plaats van optioneel.

De enige echte zorg van de klant zijn de kosten. Zodra de impact van een mislukking is geanalyseerd, kan de klant beslissen hoe ver de inspanningen op het gebied van negatieve testen moeten gaan.

Hoe voer je een negatieve test uit?

Negatieve testen beginnen met het overwegen van elke invoer die de applicatie fysiek kan ontvangen, niet alleen de invoer die het hoort te ontvangen. Elk van die invoer hoort thuis in een Testgeval zelfs als het overduidelijk de verkeerde manier is om de functie te gebruiken. Een e-mailveld wordt getest met alles wat geen geldig e-mailadres is, en een besturingselement voor het uploaden van afbeeldingen wordt getest met elk bestandstype dat geen afbeelding is.

De lijst met mogelijke ongeldige invoer is vrijwel eindeloos, dus negatieve testgevallen moeten prioriteit krijgen. Voor een afbeeldingsveld dat alleen .png-bestanden accepteert, zijn er ook andere mogelijke uploadformaten, zoals .jpeg, .xml, .xls en nog veel meer. Een XML- of SQL-bestand heeft een veel grotere potentiรซle impact dan een .jpeg-bestand, dus die gevallen worden als eerste getest. Het rangschikken van de gevallen op basis van hun impact vรณรณr de uitvoering zorgt ervoor dat negatief testen betaalbaar blijft.

De meeste negatieve testgevallen komen voort uit een beperkt aantal gevestigde ontwerpmethoden, en niet uit improvisatie:

  • Grenswaarden: Gebruik de waarden direct buiten een geldig bereik, zoals 0 en 101 voor een veld dat waarden van 1 tot 100 accepteert.
  • Ongeldige equivalentieklassen: Kies รฉรฉn representant uit elke categorie van afgewezen invoer, bijvoorbeeld letters in een numeriek veld.
  • Fout bij het raden: Gebruik de ervaring met eerdere defecten om de inputs te identificeren die het meest waarschijnlijk dit soort functionaliteit zullen verstoren.
  • Vervormde en vijandige gegevens: Scripttags, SQL-fragmenten en te grote payloads die validatie- en beveiligingsprocedures testen.
  • Fuzz-testen: Genereer automatisch grote hoeveelheden willekeurige of gemuteerde invoer om onopgeloste crashes te vinden.
  • Onderbroken stromen: Een transactie annuleren, vernieuwen, een time-out krijgen of de verbinding verliezen halverwege.

Welke techniek ook wordt gebruikt om het probleem te detecteren, het verwachte resultaat moet worden vastgelegd als een gecontroleerde, leesbare foutmelding โ€” een validatiebericht, een geweigerde upload, een schone terugdraaiing โ€” en nooit simpelweg als "het systeem crasht niet".

Voordelen en nadelen van een negatieve testuitslag

Net als elke andere testmethode heeft een negatieve test voor- en nadelen, afhankelijk van waar, wanneer en in welke mate deze wordt toegepast.

Voordelen van negatieve tests

  • Het beschermt de productkwaliteit direct, omdat een product van goede kwaliteit geen kwetsbaarheden bevat die misbruikt kunnen worden.
  • Het vergroot de dekking. Ongeldige invoer bereikt een live systeem, opzettelijk of per ongeluk. Daarom moeten negatieve gevallen naast positieve gevallen worden verwerkt om een โ€‹โ€‹zinvolle dekking te verkrijgen.
  • Het vergroot het vertrouwen van de klant voordat een product wordt uitgebracht.
  • Het brengt gebreken aan het licht die structureel niet door positieve tests kunnen worden opgespoord, zoals onafgehandelde uitzonderingen en zwakke invoervalidatie.

Nadelen van negatieve tests

  • In sommige situaties is het een verspilling van tijd en energie. Als een applicatie is ontwikkeld voor รฉรฉn gebruiker, is het niet de moeite waard om het scenario met 100 gelijktijdige gebruikers te testen. Het kiezen van de juiste omstandigheden is dus belangrijk, en sommige systemen hebben zelfs maar heel weinig negatieve tests nodig.
  • Het ontwerpen van de hoesjes vereist bekwame en ervaren mensen.
  • Vanuit het oogpunt van de klant brengt dit extra kosten met zich mee en kan het de oplevering vertragen.
  • Het leidt tot concurrentie om inspanningen. Een team dat veel geld uitgeeft aan negatieve tests, investeert mogelijk te weinig in positieve tests.

Veelgestelde vragen

Bij een positieve test worden geldige gegevens ingevoerd en wordt het verwachte resultaat bevestigd. Bij een negatieve test worden ongeldige gegevens, verkeerde formaten en onderbroken reeksen ingevoerd, waarna de applicatie deze met een gecontroleerde foutmelding afwijst in plaats van een foutmelding te geven.

Lege inloggegevens, een geldige gebruiker met een onjuist wachtwoord, SQL-fragmenten in de gebruikersnaam, te lange tekenreeksen, spaties aan het begin of einde, uitgeschakelde accounts en herhaalde mislukte pogingen om te bevestigen dat het vergrendelingsgedrag werkt.

Nee. Ze overlappen elkaar wanneer er sprake is van ongeldige of vijandige invoer, maar beveiligingstesten omvatten ook authenticatie, autorisatie, encryptie en sessiebeheer. Negatieve testen is een bredere techniek voor invoer en condities.

Testers en QA-engineers schrijven ze meestal, vaak met een ontwikkelaar die de foutpaden controleert en een businessanalist die bevestigt welke ongeldige voorwaarden de vereisten daadwerkelijk verbieden.

Voldoende om elke afgewezen invoerklasse, elke grens en elk faalpad met grote impact te dekken. Daarbuiten leveren extra gevallen weinig toegevoegde waarde op, dus risico en impact bepalen de grens.ping punt.

Ja. Gevallen met ongeldige invoer komen vaak voor, dus ze zijn geschikt. automatisering testen en regressietests. Fuzzingtools automatiseren het genereren van willekeurige invoer, terwijl beweringen controleren of validatieberichten verschijnen.

Modellen lezen vereisten of een formulierschema en stellen ongeldige waarden, randvoorwaarden en problematische tekenreeksen voor die een tester mogelijk niet handmatig heeft opgesomd. Een reviewer bevestigt vervolgens nog steeds dat elk verwacht resultaat overeenkomt met de specificatie.

Ja, het genereert assertiecode, testgevallen met ongeldige gegevens en geparameteriseerde gevallen op basis van een bestaand testbestand. De gegenereerde verwachtingen moeten worden gecontroleerd, omdat een plausibel ogende assertie onjuist gedrag kan coderen.

Vat dit bericht samen met: