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.

  • ???? Formรฅl: Bekrรฆft, at applikationen afviser ugyldige data uden problemer i stedet for at fejle eller gรฅ ned.
  • โš–๏ธ Kontrast: Positiv testning beviser den lykkelige vej; negativ testning undersรธger alt uden for den.
  • ๐Ÿ›— Analogi: En elevator skal kunne modstรฅ overbelastning, brand og strรธmsvigt, ikke kun normale passagerture.
  • ๐Ÿ”’ Sikkerhed: Ugyldige uploads og SQL-injektionsforsรธg er klassiske negative testscenarier.
  • ๐Ÿงช Design: Randvรฆrdier, รฆkvivalensklasser, fejlgรฆttning og fuzzing genererer tilfรฆldene.
  • ๐Ÿ“Š Prioritet: Rangรฉr ugyldige input efter effekt, da udtรธmmende negativ dรฆkning ikke er รธkonomisk overkommelig.
  • โš ๏ธ Afvejning: Overdreven negativ testning tรฆrer pรฅ budgettet, sรฅ positiv dรฆkning kan krรฆve mere.

Negativ testning i softwaretestning med eksempler pรฅ ugyldige input

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.

Ofte Stillede Spรธrgsmรฅl

Positiv testning giver gyldige data og bekrรฆfter det forventede resultat. Negativ testning giver ugyldige data, forkerte formater og รธdelagte sekvenser og bekrรฆfter, at applikationen afviser dem med en kontrolleret meddelelse i stedet for at fejle.

Tomme legitimationsoplysninger, en gyldig bruger med en forkert adgangskode, SQL-fragmenter i brugernavnet, for lange strenge, indledende eller afsluttende mellemrum, deaktiverede konti og gentagne mislykkede forsรธg pรฅ at bekrรฆfte, at spรฆrringsadfรฆrden fungerer.

Nej. De overlapper hinanden, hvor der er tale om ugyldigt eller fjendtligt input, men sikkerhedstest dรฆkker ogsรฅ autentificering, autorisation, kryptering og sessionshรฅndtering. Negativ testning er en bredere input- og betingelsesteknik.

Testere og QA-ingeniรธrer skriver dem normalt, ofte med en udvikler, der gennemgรฅr fejlstier, og en forretningsanalytiker, der bekrรฆfter, hvilke ugyldige betingelser kravene rent faktisk forbyder.

Nok til at dรฆkke alle afviste inputklasser, alle grรฆnser og alle fejlstier med stor indflydelse. Derudover giver tilfรธjede tilfรฆlde ringe vรฆrdi tilbage, sรฅ risiko og pรฅvirkning sรฆtter stoppet.ping punkt.

Ja. Tilfรฆlde af ugyldige input er meget gentagelige, sรฅ de passer automatiseringstest og regressionspakker. Fuzzing-vรฆrktรธjer automatiserer generering af tilfรฆldigt input, mens assertions kontrollerer, at valideringsmeddelelser vises.

Modeller lรฆser krav eller et formularskema og foreslรฅr ugyldige vรฆrdier, randbetingelser og fjendtlige strenge, som en tester muligvis ikke angiver manuelt. En anmelder bekrรฆfter stadig, at hvert forventet resultat matcher specifikationen.

Ja, den udarbejder assertion-kode, fixtures for ugyldige data og parametriserede cases fra en eksisterende testfil. De genererede forventninger skal gennemgรฅs, fordi en assertion, der ser plausibel ud, kan kode den forkerte adfรฆrd.

Opsummer dette indlรฆg med: