Hvad er negativ test? Testcases med eksempel
โก Smart opsummering
Negativ testning kontrollerer, hvordan en softwareapplikation opfรธrer sig, nรฅr den modtager uventede inputdata eller driftsforhold, sรฅ produktet nedbrydes problemfrit i stedet for at gรฅ ned, beskadige data eller afslรธre et sikkerhedshul.
Negativ test
Negativ test er en softwaretesttype, der bruges til at kontrollere en softwareapplikation mod uventede inputdata og -betingelser. Uventede data eller betingelser spรฆnder fra en forkert datatype i et simpelt formularfelt til et bevidst hackingangreb. Formรฅlet med negativ testning er at forhindre, at applikationen gรฅr ned ved ugyldigt input og at forbedre produktets kvalitet og stabilitet.
Positiv test alene beviser kun, at systemet fungerer under normale forhold. Negativ test bekrรฆfter, at det samme system ogsรฅ hรฅndterer unormale forhold, hvilket er, hvad et fejltolerant produkt krรฆver.
Eksempel pรฅ negativ test
Et lรธft er det eksempel, der oftest bruges til at forklare negativ testning, fordi bรฅde dets normale opfรธrsel og dets fejladfรฆrd er lette at forestille sig.
Kravene til en elevator er velkendte: tryk pรฅ et etagenummer sender elevatoren til den pรฅgรฆldende etage, og dรธren รฅbner automatisk, nรฅr elevatoren nรฅr den angivne etage.
Nogle negative scenarier for den samme stigning er anfรธrt nedenfor, ud for den antagelse, som positiv testning i stedet gรธr.
| Negativ test | Positiv test |
|---|---|
| Hvad sker der, hvis antallet af personer (vรฆgt) overstiger den angivne grรฆnse? | Antager, at kun det angivne antal personer vil gรฅ ind i elevatoren |
| Hvad sker der, hvis nogen ryger eller forรฅrsager brand inde i elevatoren? | Antager, at der ikke vil vรฆre rรธg eller ild inde i elevatoren |
| Hvad sker der, hvis der er strรธmsvigt under drift? | Antager, at der ikke vil vรฆre strรธmafbrydelse, mens liften er i drift. |
Alle disse tilfรฆlde falder under negativ testning. Ingen af โโdem kan garanteres aldrig at ske, sรฅ hver enkelt skal inddรฆmmes.
Antag, at overvรฆgtstilstanden aldrig kontrolleres, og at liften opfรธrer sig unormalt, nรฅr den overbelastes. Dette ene hul skader systemets pรฅlidelighed og kan endda bringe liv i fare. Det er, hvad negativ testning betyder i praksis, og hvorfor det er vigtigt.
Software opfรธrer sig pรฅ samme mรฅde. En negativ test afviger bevidst fra den normale driftsprocedure. Overvej en registreringsformular.
| Negativ test | Positiv test |
|---|---|
| Indtast et ugyldigt e-mail-id i e-mailfeltet | Kun gyldige e-mail-id'er indtastes i et e-mail-felt |
| Indtast et ugyldigt telefonnummer, f.eks. tegn, i et telefonnummerfelt | Kun tal indtastes i talfeltet |
| Upload et billede med en stรธrrelse uden for den angivne grรฆnse | Kun billeder inden for den angivne stรธrrelsesgrรฆnse uploades |
| Upload ugyldige filer som f.eks. XML or SQL filer i et felt til billedupload | Kun gyldige billedformater som .jpg eller .png uploades |
Hvert af disse negative tilfรฆlde skal stadig fรธre til, at systemet fungerer. Hvis et tegn indtastes i et talfelt, kan applikationen ikke behandle de uventede data, den aldrig havde forventet, og den kan gรฅ ned. Vรฆrre endnu, en SQL-indsprรธjtning En streng i det samme felt kan slette indholdet af databasen. Tab af den slags er รฅrsagen til, at der forekommer negative tests.
Hvorfor udfรธrer negativ test?
Testning bruger tid og penge, sรฅ det er vigtigt at beslutte, hvad, hvordan og hvor meget der skal testes. Argumentet for at bruge en del af dette budget pรฅ negativ testning ser forskelligt ud fra de to sider af et projekt.
Organisationsperspektiv
Det er organisationens ansvar at levere et produkt af god kvalitet til kunden, og negativ testning er en del af denne forpligtelse. Det er ogsรฅ organisationens bevis pรฅ, at den gjorde alt, hvad der var rimeligt, for at forhindre en fejl, selvom intet system er fuldstรฆndig fejlfrit.
Pรฅvirkning er den afgรธrende faktor. En e-handelsside kan bestรฅ alle positive tests og stadig indeholde et smuthul, der giver en angriber mulighed for at kรธre en SQL-injektion og slette dataene bagved. Det er et alvorligt sikkerhedsbrud, og kun negativ testning leder efter det.
Offentlige applikationer, isรฆr hjemmesider, tilbyder nรฆsten ingen kontrol over, hvordan besรธgende bruger dem, sรฅ negativ testning er den eneste mรฅde at bekrรฆfte, at usรฆdvanlig brug er dรฆkket og inddรฆmmet. Det samme gรฆlder for ondsindede brugere: angribere leder aktivt efter en mulighed for at bryde et system, og hackingscenarier hรธrer helt og holdent hjemme i negativ testdรฆkning.
Kundeperspektiv
Kunder forventer et produkt uden sรฅrbarheder, og negative tests understรธtter denne forventning. For fรธlsomme produkter sรฅsom e-handel eller online aktiehandel, sikkerhedstest og negative test er obligatoriske snarere end valgfrie.
Klientens eneste reelle bekymring er omkostningerne. Nรฅr virkningen af โโen fiasko er analyseret, er klienten i stand til at beslutte, hvor langt den negative testindsats skal gรฅ.
Sรฅdan udfรธrer du en negativ test
Negativ testning starter med at overveje alle input, som applikationen fysisk kan modtage, ikke kun de input, den skal modtage. Hver af disse hรธrer hjemme i en Test sag selv nรฅr det รฅbenlyst er den forkerte mรฅde at bruge funktionen pรฅ. Et e-mailfelt testes med alt, der ikke er en gyldig e-mailadresse, og en billeduploadkontrol testes med alle filtyper, der ikke er et billede.
Listen over mulige ugyldige input er reelt uendelig, sรฅ negative testtilfรฆlde skal prioriteres. For et billedfelt, der kun accepterer .png-filer, inkluderer de potentielle uploads .jpeg, .xml, .xls og mange andre. En XML- eller SQL-fil har en langt stรธrre potentiel effekt end en .jpeg, sรฅ disse tilfรฆlde udfรธres fรธrst. Rangering af tilfรฆlde efter effekt fรธr udfรธrelse er det, der gรธr negativ testning overkommelig.
De fleste negative testcases stammer fra et lille sรฆt etablerede designteknikker snarere end fra improvisation:
- Grรฆnsevรฆrdier: Udรธv vรฆrdierne umiddelbart uden for et gyldigt omrรฅde, f.eks. 0 og 101, for et felt, der accepterer 1 til 100.
- Ugyldige รฆkvivalensklasser: vรฆlg รฉn reprรฆsentant fra hver klasse af afvist input, for eksempel bogstaver i et numerisk felt.
- Fejl ved gรฆt: Brug erfaringer fra tidligere defekter til at mรฅlrette de input, der mest sandsynligt vil รธdelรฆgge denne type funktion.
- Forkerte og fjendtlige data: script-tags, SQL-fragmenter og overdimensionerede nyttelaster, der undersรธger validering og sikkerhedshรฅndtering.
- Fuzz test: generere store mรฆngder tilfรฆldigt eller muteret input automatisk for at finde uhรฅndterede nedbrud.
- Afbrudte strรธmme: annullere, opdatere, fรฅ timeout eller miste forbindelsen midtvejs i en transaktion.
Uanset hvilken teknik der producerer tilfรฆldet, skal det forventede resultat nedskrives som en kontrolleret, lรฆsbar fejl โ en valideringsmeddelelse, en afvist upload, en ren rollback โ og aldrig blot som "systemet gรฅr ikke ned".
Fordele og ulemper ved negativ testning
Ligesom alle andre testteknikker har negativ test fordele og ulemper, der afhรฆnger af hvor, hvornรฅr og hvor meget af den anvendes.
Fordele ved negativ test
- Det beskytter produktkvaliteten direkte, fordi et produkt af god kvalitet er et produkt uden sรฅrbarheder, der kan udnyttes.
- Det udvider dรฆkningen. Ugyldigt input nรฅr et live-system, enten bevidst eller utilsigtet, sรฅ negative tilfรฆlde skal lรธbe side om side med positive, for at dรฆkningen kan vรฆre meningsfuld.
- Det รธger klienttilliden, fรธr en udgivelse gรฅr live.
- Den afdรฆkker defekter, som positiv testning strukturelt ikke kan nรฅ, sรฅsom uhรฅndterede undtagelser og svag inputvalidering.
Ulemper ved negativ test
- I nogle situationer er det spild af tid og energi. Hvis en applikation er bygget til en enkelt bruger, er tilfรฆldet med 100 samtidige brugere ikke vรฆrd at teste, sรฅ det er vigtigt at vรฆlge de rigtige betingelser, og nogle systemer krรฆver meget lidt negativ testning overhovedet.
- Det krรฆver dygtige og erfarne folk at designe sagerne.
- Fra klientens synspunkt รธger det omkostningerne og kan forsinke udgivelsen.
- Det konkurrerer om indsatsen. Et team, der bruger mange penge pรฅ negative tests, kan ende med at investere for lidt i positive tests.
