Hva er negativ testing? Testtilfeller med eksempel

โšก Smart oppsummering

Negativ testing sjekker hvordan et program oppfรธrer seg nรฅr det mottar uventede inndata eller driftsforhold, slik at produktet degraderes uten problemer i stedet for รฅ krasje, รธdelegge data eller avslรธre et sikkerhetshull.

  • ???? Formรฅl: Bekreft at applikasjonen avviser ugyldige data uten รฅ feile eller krasje.
  • ๐Ÿ‡ง๐Ÿ‡ท Kontrast: Positiv testing beviser den lykkebringende veien; negativ testing undersรธker alt utenfor den.
  • ๐Ÿ›— Analogi: En heis mรฅ tรฅle overbelastning, brann og strรธmbrudd, ikke bare vanlige passasjerturer.
  • ๐Ÿ”’ Sikkerhet: Ugyldige opplastinger og SQL-injeksjonsforsรธk er klassiske negative testscenarioer.
  • ๐Ÿงช Design: Grenseverdier, ekvivalensklasser, feilgjetning og fuzzing genererer tilfellene.
  • ๐Ÿ“Š Prioritet: Ranger ugyldige inndata etter innvirkning, fordi uttรธmmende negativ dekning er uoverkommelig.
  • โš ๏ธ Avveining: Overdreven negativ testing forbruker budsjettet, og positiv dekning kan trenge mer.

Negativ testing i programvaretesting med eksempler pรฅ ugyldige inndata

Negativ testing

Negativ testing er en type programvaretesting som brukes til รฅ sjekke et program mot uventede inndata og -forhold. Uventede data eller forhold varierer fra feil datatype i et enkelt skjemafelt til et bevisst hackerangrep. Formรฅlet med negativ testing er รฅ forhindre at programmet krasjer ved ugyldig inndata og รฅ forbedre produktets kvalitet og stabilitet.

Positiv testing alene beviser bare at systemet fungerer under normale forhold. Negativ testing bekrefter at det samme systemet ogsรฅ hรฅndterer unormale forhold, noe som er det et feiltolerant produkt krever.

Eksempel pรฅ negativ testing

Et lรธft er eksemplet som oftest brukes for รฅ forklare negativ testing, fordi bรฅde dets normale oppfรธrsel og dets feiloppfรธrsel er enkle รฅ forestille seg.

Kravene til en heis er kjente: รฅ trykke pรฅ et etasjenummer sender heisen til den etasjen, og dรธren รฅpnes automatisk nรฅr heisen nรฅr den angitte etasjen.

Noen negative scenarier for samme รธkning er listet opp nedenfor, ved siden av antagelsen som positiv testing gjรธr i stedet.

Negativ testing Positiv testing
Hva skjer hvis antall personer (vekt) overskrider den angitte grensen? Forutsetter at bare det angitte antallet personer vil gรฅ inn i heisen
Hva skjer hvis noen rรธyker eller forรฅrsaker brann inne i heisen? Forutsetter at det ikke vil vรฆre rรธyk eller brann inne i heisen
Hva skjer hvis det oppstรฅr strรธmbrudd under drift? Forutsetter at det ikke vil vรฆre strรธmbrudd mens heisen er i drift

Alle disse tilfellene faller inn under negativ testing. Ingen av dem kan garanteres รฅ aldri skje, sรฅ hver enkelt mรฅ begrenses.

Anta at overvektstilstanden aldri blir kontrollert, og heisen oppfรธrer seg unormalt nรฅr den er overbelastet. Dette ene gapet skader systemets pรฅlitelighet og kan til og med sette liv i fare. Dette er hva negativ testing betyr i praksis, og hvorfor det er viktig.

Programvare oppfรธrer seg pรฅ samme mรฅte. En negativ test avviker bevisst fra den normale driftsprosedyren. Vurder et registreringsskjema.

Negativ testing Positiv testing
Skriv inn en ugyldig e-postadresse i e-postfeltet Bare gyldige e-postadresser skrives inn i et e-postfelt
Skriv inn et ugyldig telefonnummer, for eksempel antall tegn, i et telefonnummerfelt Bare tall skrives inn i tallfeltet
Last opp et bilde med en stรธrrelse utenfor den angitte grensen Bare bilder innenfor den angitte stรธrrelsesgrensen lastes opp
Last opp ugyldige filer som f.eks. XML or SQL filer i et felt for bildeopplasting Kun gyldige bildeformater som .jpg eller .png lastes opp

Hvert av disse negative tilfellene mรฅ fortsatt fรธre til at systemet fungerer. Hvis et tegn skrives inn i et tallfelt, kan ikke applikasjonen behandle de uventede dataene den aldri forventet, og den kan krasje. Verre er det at en SQL-injeksjon streng i samme felt kan slette innholdet i databasen. Tap av denne typen er grunnen til at negativ testing forekommer.

Hvorfor utfรธre negativ testing?

Testing tar tid og penger, sรฅ det er viktig รฅ bestemme hva, hvordan og hvor mye man skal teste. Argumentene for รฅ bruke deler av budsjettet pรฅ negativ testing ser forskjellige ut fra de to sidene av et prosjekt.

Organisasjonsperspektiv

Det er organisasjonens ansvar รฅ levere et produkt av god kvalitet til kunden, og negativ testing er en del av denne forpliktelsen. Det er ogsรฅ organisasjonens bevis pรฅ at den gjorde alt som var rimelig for รฅ forhindre en feil, selv om ingen systemer er helt feilfrie.

Konsekvens er den avgjรธrende faktoren. Et netthandelsnettsted kan bestรฅ alle positive tester og fortsatt inneholde et smutthull som lar en angriper kjรธre en SQL-injeksjon og slette dataene bak den. Det er et alvorlig sikkerhetsbrudd, og bare negativ testing ser etter det.

Offentlige applikasjoner, spesielt nettsteder, gir nesten ingen kontroll over hvordan besรธkende bruker dem, sรฅ negativ testing er den eneste mรฅten รฅ bekrefte at uvanlig bruk er dekket og begrenset. Det samme gjelder ondsinnede brukere: angripere ser aktivt etter en mulighet til รฅ bryte et system, og hackingscenarier hรธrer helt hjemme i negativ testdekning.

Kundeperspektiv

Kunder forventer et produkt uten sรฅrbarheter, og negativ testing er det som stรธtter denne forventningen. For sensitive produkter som e-handel eller aksjehandel pรฅ nett, sikkerhetstesting og negativ testing er obligatorisk snarere enn valgfri.

Klientens eneste reelle bekymring er kostnaden. Nรฅr konsekvensene av en feil er analysert, er klienten i posisjon til รฅ bestemme hvor langt den negative testinnsatsen skal gรฅ.

Slik utfรธrer du negativ testing

Negativ testing starter med รฅ vurdere alle inputene applikasjonen fysisk kan motta, ikke bare inputene den skal motta. Hver av disse hรธrer hjemme i en Testsak selv nรฅr det รฅpenbart er feil mรฅte รฅ bruke funksjonen pรฅ. Et e-postfelt testes med alt som ikke er en gyldig e-postadresse, og en bildeopplastingskontroll testes med alle filtyper som ikke er et bilde.

Listen over mulige ugyldige input er i praksis uendelig, sรฅ negative testtilfeller mรฅ prioriteres. For et bildefelt som bare godtar .png-filer, inkluderer kandidatopplastinger .jpeg, .xml, .xls og mange andre. En XML- eller SQL-fil har en langt stรธrre potensiell innvirkning enn en .jpeg, sรฅ disse tilfellene kjรธres fรธrst. Rangering av tilfeller etter innvirkning fรธr utfรธrelse er det som gjรธr negativ testing rimelig.

De fleste negative testtilfeller kommer fra et lite sett med etablerte designteknikker snarere enn fra improvisasjon:

  • Grenseverdier: Utfรธr verdiene rett utenfor et gyldig omrรฅde, for eksempel 0 og 101 for et felt som godtar 1 til 100.
  • Ugyldige ekvivalensklasser: velg รฉn representant fra hver klasse av avviste inndata, for eksempel bokstaver i et numerisk felt.
  • Feil ved gjetning: bruk erfaring fra tidligere feil til รฅ mรฅlrette inndataene som mest sannsynlig vil รธdelegge denne typen funksjoner.
  • Feilformede og fiendtlige data: skriptkoder, SQL-fragmenter og overdimensjonerte nyttelaster som undersรธker validering og sikkerhetshรฅndtering.
  • Fuzz-testing: generere store mengder tilfeldig eller mutert input automatisk for รฅ finne ubehandlede krasj.
  • Avbrutte strรธmninger: avbryte, oppdatere, fรฅ tidsavbrudd eller miste tilkoblingen midt i en transaksjon.

Uansett hvilken teknikk som produserer tilfellet, mรฅ det forventede resultatet skrives ned som en kontrollert, lesbar feil โ€“ en valideringsmelding, en avvist opplasting, en ren tilbakerulling โ€“ og aldri bare som ยซsystemet krasjer ikkeยป.

Fordeler og ulemper med negativ testing

Som alle andre testteknikker har negativ testing fordeler og ulemper som avhenger av hvor, nรฅr og hvor mye den brukes.

Fordeler med negativ testing

  • Det beskytter produktkvaliteten direkte, fordi et produkt av god kvalitet er et uten utnyttbare sรฅrbarheter.
  • Det utvider dekningen. Ugyldig inndata nรฅr et aktivt system med vilje eller ved et uhell, sรฅ negative tilfeller mรฅ kjรธre side om side med positive for at dekningen skal vรฆre meningsfull.
  • Det รธker kundens tillit fรธr en utgivelse publiseres.
  • Den avdekker feil som positiv testing strukturelt ikke kan nรฅ, for eksempel uhรฅndterte unntak og svak inputvalidering.

Ulemper med negativ testing

  • I noen situasjoner er det bortkastet tid og energi. Hvis en applikasjon er bygget for รฉn bruker, er det ikke verdt รฅ teste tilfellet med 100 samtidige brukere, sรฅ det er viktig รฅ velge de riktige betingelsene, og noen systemer trenger svรฆrt lite negativ testing i det hele tatt.
  • Det krever dyktige og erfarne folk til รฅ utforme sakene.
  • Fra klientens synspunkt รธker det kostnadene og kan forsinke utgivelsen.
  • Det konkurreres om innsats. Et team som bruker mye penger pรฅ negativ testing kan ende opp med รฅ underinvestere i positiv testing.

Spรธrsmรฅl og svar

Positiv testing gir gyldige data og bekrefter det forventede resultatet. Negativ testing gir ugyldige data, feil formater og รธdelagte sekvenser, og bekrefter at applikasjonen avviser dem med en kontrollert melding i stedet for รฅ feile.

Tomme pรฅloggingsinformasjon, en gyldig bruker med feil passord, SQL-fragmenter i brukernavnet, for lange strenger, innledende eller etterfรธlgende mellomrom, deaktiverte kontoer og gjentatte mislykkede forsรธk pรฅ รฅ bekrefte at utelรฅsing fungerer.

Nei. De overlapper hverandre der ugyldig eller fiendtlig input er involvert, men sikkerhetstesting dekker ogsรฅ autentisering, autorisasjon, kryptering og รธkthรฅndtering. Negativ testing er en bredere input- og betingelsesteknikk.

Testere og kvalitetssikringsingeniรธrer skriver dem vanligvis, ofte med en utvikler som gjennomgรฅr feilstier og en forretningsanalytiker som bekrefter hvilke ugyldige betingelser kravene faktisk forbyr.

Nok til รฅ dekke alle avviste inputklasser, alle grenser og alle feilveier med hรธy innvirkning. Utover det gir ekstra tilfeller liten verdi, sรฅ risiko og innvirkning setter stopper.ping punkt.

Ja. Tilfeller av ugyldige inndata er svรฆrt repeterbare, sรฅ de passer automatiseringstesting og regresjonspakker. Fuzzing-verktรธy automatiserer generering av tilfeldig input, mens pรฅstander kontrollerer at valideringsmeldinger vises.

Modeller leser krav eller et skjemaskjema og foreslรฅr ugyldige verdier, grensebetingelser og fiendtlige strenger som en tester kanskje ikke lister opp manuelt. En anmelder bekrefter likevel at hvert forventede resultat samsvarer med spesifikasjonen.

Ja, den utarbeider pรฅstandskode, ugyldige datafiksjoner og parameteriserte tilfeller fra en eksisterende testfil. De genererte forventningene mรฅ gjennomgรฅs, fordi en pรฅstand som ser plausibel ut kan kode feil oppfรธrsel.

Oppsummer dette innlegget med: