Negativ testing i programvaretesting er en teknikk som verifiserer hvordan applikasjonen din reagerer på uventet atferd eller ugyldige data. Denne typen testing kan hjelpe kvalitetssikringsteam med å forbedre robustheten og stabiliteten til programvaren deres ved å jakte på unntak som forårsaker fryser, krasjer eller andre uønskede utfall.
I denne artikkelen skal vi utforske hva negativ programvaretesting er, hvorfor det er viktig, og noen av de forskjellige tilnærmingene, teknikkene og verktøyene du kan bruke for denne teknikken.
Hva er negativ programvaretesting?
Negativ testing er en programvaretestingsteknikk som med vilje mater et system med ugyldige innganger eller uventede data for å se hvordan det håndterer disse scenariene. Også kjent som feiltesting eller feilbanetesting, simulerer denne tilnærmingen det mangfoldige spekteret av virkelige scenarier applikasjonen din vil møte, for eksempel brukere som skriver inn ugyldige datoer eller tegn eller bruker visse funksjoner på måter du aldri hadde tenkt.
De fleste typer testing bruker gyldige data for å teste en applikasjon. Negativ testing tar imidlertid en annen tilnærming ved å teste rundt kantene og utover typiske innganger og se hvordan applikasjonen håndterer unntak.
Det er viktig å teste at applikasjonen din fungerer etter hensikten. Men på baksiden er det også viktig å forstå hva som skjer når brukere forlater reservasjonen, spesielt hvis disse utilsiktede bruken forårsaker krasj, fryser eller andre defekter.
Forskjellen mellom positiv testing og negativ
testing i programvaretesting
Som vi skissert ovenfor, bruker negativ testing uventede eller ugyldige data for å bekrefte atferden til et system. I motsetning til dette, presser positiv testing forventede eller gyldige data for å bekrefte at systemet fungerer som forventet.
Med andre ord:
- Positiv testing hjelper deg å forstå om søknaden din fungerer som planlagt
- Negativ testing avgjør om applikasjonen din kan håndtere uventede hendelser
Både positiv testing og negativ testing i programvaretesting er nødvendig hvis du vil teste applikasjonen din grundig.
Hvorfor er negativ programvaretesting viktig?
Når utviklere bygger programvare, har de en klar ide om hvordan de forventer at brukeren skal bruke programvaren. Brukere følger imidlertid ikke alltid reglene. Ganske ofte vil de prøve å klikke på knapper som ikke eksisterer, skrive inn bokstaver i tallfelt eller prøve inndata som du bare ikke forventer.
Negativ testing tar sikte på å ta hensyn til disse kantsakene som ikke kan avdekkes ved positive testteknikker som enhets- , system- eller integrasjonstesting. Det krever litt ukonvensjonell tenkning å komme opp med “kurveballer” å kaste på systemet. Nettoresultatet er imidlertid en mer stabil og robust applikasjon.
Hva er hensikten med negativ testing
i programvaretesting?
Negativ testing har lignende mål som for andre typer programvaretesting. Nemlig å avdekke feil, defekter og sårbarheter i en applikasjon. Det spiller imidlertid en spesiell rolle for å finne feil som ikke kan avdekkes ved bruk av gyldige data. Her er noen av grunnene til å bruke en negativ testmetode.
1. Å avsløre defekter
Det sentrale formålet med negativ testing i programvaretesting er å avdekke defekter som skyldes ugyldige data eller uventede inndata. Det lar testere ta en mer proaktiv tilnærming til feildeteksjon og sikre at programvaren lever opp til forventningene.
2. Sikkerhet
Uventede inndata eller ugyldige data kan avdekke sikkerhetssårbarheter. Testing og løsning av disse kantsakene fører til en sikrere og robustere applikasjon ved å redusere muligheten for ondsinnede angrep, injeksjonsfeil eller uautoriserte tilgangsforsøk.
3. Feilhåndtering
Negativ testing er nyttig for å validere feilhåndtering. Det handler ikke bare om å sikre at systemet holder seg stabilt etter å ha møtt uventede inndata eller data, men også om hvordan det reagerer på disse hendelsene, for eksempel å produsere feilmeldinger for å sikre at sluttbrukeren vet at dataene er ugyldige.
4. Forbedring av testdekning
Positiv og negativ testing i programvaretesting er enormt komplementære. De dekker begge ulike elementer av datainndata, noe som betyr at testingen din er mer omfattende.
5. Bedre brukeropplevelse
Negativ testing hjelper til med å oppdage kilden til feilmeldinger, krasj og annen uventet atferd som kan påvirke brukeropplevelsen negativt.
Forskjellen mellom positivt og negativt
testing i programvareteknikk
Som vi nevnte ovenfor, sender negativ testing uventede eller ugyldige data for å bekrefte atferden til et system. Positiv testing, derimot, sender forventede eller gyldige data for å bekrefte at systemet fungerer som forventet.
Forskjellen mellom positiv og negativ testing inkluderer:
1. Mål:
Positiv testing verifiserer om programvaren fungerer etter hensikten; negativ testing søker å forstå hva som skjer i utilsiktede scenarier.
2. Data:
Positiv testing bruker gyldige data, og negativ testing bruker ugyldige inndata, ekstreme verdier og uventede formater.
3. Fokus:
Positiv testing fokuserer på suksessscenarier, mens negativ testing er mer opptatt av mislykkede scenarier.
Ulike typer negativ testing
Negativ testing er et konsept som dekker flere ulike tilnærminger for å validere kvaliteten og integriteten til en applikasjon. Her er syv typer negative tester du trenger å vite.
#1. Grenseverditesting
Grenseverditesting søker å teste programvaren med innganger som er på grensene eller kantene av inngangsområdet. Den tester både de maksimale og minste forventede verdiene, men tester også like utenfor disse inngangene.
Eksempel: Et inntastingsfelt godtar tall mellom 1-9. En grenseverditest vil legge inn både 1 og 9, men også test 0 og 10.
#2. Inngangsverditesting
Inngangsverditesting bestemmer hvordan systemet vil reagere på uventede eller ugyldige inndata. Noen av inngangene den vil teste inkluderer:
- Feil datatyper
- Verdier utenfor området
- Spesielle karakterer
- Tomme felt.
Eksempel: En inntastingsboks krever bare et tall, så testen vil skrive inn en bokstav og se hvordan systemet reagerer.
#3. Lasttesting
Lasttesting hjelper testere med å evaluere hvordan systemet vil reagere under store påkjenninger eller belastninger, for eksempel store datasett eller høye trafikkvolumer. Testautomatiseringsverktøy kan simulere disse ekstreme forholdene for å forstå hvordan systemet reagerer under tvang.
Eksempel: Testeren vil simulere tusenvis av samtidige brukere som går inn på et nettsted.
#4. Unntakstesting
Denne typen testing utforsker hvordan systemet vil reagere på eksepsjonelle hendelser eller feil. Noen av testene inkluderer
- Simulering av systemkrasj
- Nettverksfeil
- Database feil
- Problemer med diskplass
- Manglende filer.
Eksempel: Testen kan utforske hva som skjer når en bruker laster ned en fil fra applikasjonen, og internett er avskåret.
#5. Sikkerhetstesting
Sikkerhetstesting bruker en negativ testmetode for å synliggjøre og forstå sårbarheter i programvaren som kan avdekkes ved ugyldige eller uventede innganger. Denne tilnærmingen tester for vanlige angrep, for eksempel:
- SQL-injeksjon
- Skripting på tvers av nettsteder (XSS)
- Buffer renner over.
Eksempel: En sikkerhetstest kan forsøke å injisere skadelig kode i et brukerinndatafelt.
#6. Testing av brukergrensesnitt
Denne typen testing fokuserer på feil som oppstår når brukeren samhandler med programvaren. Noen av tingene den vil prøve å fastslå inkluderer:
- Uventede svar på brukerinteraksjoner
- Feil feilmeldinger
- Navigasjonsproblemer
Eksempel: Testen vil utforske hva som skjer når bestemte handlinger utføres utenfor rekkefølge.
#7. Dataintegritetstesting
Dataintegritetstesting sikrer at data forblir nøyaktige og konsistente på tvers av en rekke operasjoner i applikasjonen. Noen av tingene som testes inkluderer:
- Potensielle datakorrupsjon
- Scenarier for tap av data
- Utilsiktede dataendringer
Eksempel: Testen vil bekrefte at data forblir de samme etter en overføring.
Som du kan se, er det mange forskjellige negative testmetoder. Felles for dem alle er bruken av uventede inndata eller ugyldige data for å se hvordan applikasjonen fungerer under atypiske forhold.
Fordeler med negativ testing
Negativ testing handler om å forstå hvordan applikasjonen din fungerer når uventede situasjoner oppstår. Her er noen av de viktigste fordelene ved å bruke denne tilnærmingen.
- Det hjelper deg å forstå hvilken innvirkning uventede inndata eller ugyldige data vil ha på applikasjonen din. Vil det krasje? Spytte ut en unøyaktig feilmelding?
- Negativ testing er en del av en ansvarlig kvalitetssikringstilnærming fordi den søker å identifisere svakheter i systemet
- Negativ testing setter programvaren gjennom sine skritt ved å teste responsen på uforutsette eller uforutsette scenarier som den vil møte i naturen
- Igjen, negativ testing er en viktig komponent i en grundig tilnærming til sikkerhet fordi den fremhever potensielle angrepsvektorer som cyberangripere kan dra nytte av.
Ulemper med negativ testing
Negativ testing gir et vell av fordeler, men det har noen ulemper som også må overvinnes.
- Grundig negativ testing kan kreve ekstra maskinvare og programvare, noe som kan øke kostnadene ved testing. For lag som opererer på et stramt budsjett kan dette være ufordelaktig.
- Negativ testing kan være ganske tidkrevende fordi det krever opprettelse av mange testtilfeller for å dekke de ulike permutasjonene av input som programvaren vil møte i produksjonen
- Det er grenser for hvor mange uforutsigbare situasjoner du kan dekke med negativ testing. Noen situasjoner kan faktisk være så uventede at testere ikke kan vurdere dem.
- Automatisering av negative testtilfeller er utfordrende. Men med riktig programvare, som ZAPTEST, er prosessen langt mer håndterlig.
Utfordringer ved negativ testing
Negativ testing er avgjørende hvis du ønsker å bygge robust og pålitelig programvare som er i stand til å motstå påkjenningene og påkjenningene av brukerinteraksjon. Det er imidlertid noen utfordringer med å implementere tilnærmingen som du må være klar over.
La oss bryte ned noen av de mer vedvarende utfordringene.
1. Identifisere negative scenarier i programvaretesting
Tilstrekkelig dekning:
En av de største utfordringene ved negativ testing er å sikre at du dekker nok uventede scenarier. Det er mange negative scenarier og permutasjoner, så å vurdere dem alle krever en kreativ tilnærming til å forestille seg hvordan brukerne vil samhandle med programvaren.
Prioritering:
Med så mange potensielle negative scenarier å sette under lupen, er ikke testerne alltid sikre på hvor de skal begynne. Noen solide kriterier for å vurdere hva du skal prioritere inkluderer prognoser:
- Situasjoner med stor sannsynlighet for feil
- Alvorlighetsgraden av utfallet av defekter.
2. Utforme tilstrekkelig negative testtilfeller
Inndatavalidering:
Utforming av solide negative testtilfeller krever en ganske omfattende forståelse av systemets oppførsel, arkitektur og begrensninger. Testing av programvaren krever bruk av nøye overveide input og data. Selv om en tilfeldig tilnærming kan hjelpe deg med å avsløre noen defekter, blekner den i forhold til en mer presis og systematisk tilnærming til negativ testing.
Datamangfold:
Avhengig av systemets spesielle egenskaper, må du kanskje teste mot et ganske mangfoldig sett med data. Faktisk er det mange forskjellige dataformater, for eksempel tall, tekst, datoer og så videre, som søknaden din kan godta. Utfordringen her innebærer å designe testtilfeller som kan ta hensyn til hvert format og spesielt hver variant av ugyldige data. Denne situasjonen kan være ganske tidkrevende for testteam.
3. Effektivitet og testautomatisering
Tidkrevende:
Positiv testing tar sikte på å validere programvaren mot forventede utfall. Negativ testing, på den annen side, må fordype seg i det uventede og utforske potensielle scenarier. Å gå over ukjent territorium tar mer tid. Som et resultat, hvis du vil ha de omfattende resultatene som følger med negativ testing, må du være forberedt på å investere noen ekstra timer.
Automatiseringskompleksitet:
Negativ testing kan være tids- og ressurskrevende. Som sådan er det en perfekt jobb for automatisering av programvaretesting. Det er imidlertid noen kompleksiteter som må overvinnes. For eksempel krever det litt erfaring og kunnskap å designe testcases som definerer forventede resultater for uventede input. I tillegg kan det hende at det eksisterende rammeverket for automatiseringstester ikke støtter de ugyldige dataene du vil sende til applikasjonen din, noe som legger til et ytterligere lag med kompleksitet.
4. Evaluere resultater
Falske positiver:
Kalibrering av testing for å sikre en tilfredsstillende balanse mellom nøyaktighet og helhet er et kjent problem for negative testere. I noen situasjoner vil overfølsom feilhåndtering feilaktig forvirre gyldige innganger for negative innganger, noe som fører til at man kaster bort tid på problemer som ikke er relevante.
Tvetydige resultater:
Når et system mottar en ugyldig inndata, kan det resultere i krasj, feil eller fryser. I mange tilfeller er dette et sikkert tegn på en feil. I andre er det imidlertid bevis på en uhåndtert kantsak som utviklerne ikke vurderte. Det er viktig å skille mellom disse diskrete situasjonene, men å undersøke den sanne årsaken er tidkrevende.
Dataledelse:
Negativ testing krever en betydelig mengde data. Denne testinformasjonen må både genereres og vedlikeholdes. I utviklingsscenarier med stramme tidsrammer er dette en ekstrajobb som må vurderes.
5. Organisatoriske spørsmål
Mangel på negativ testekspertise:
Mens negativ testing er populær, mangler mange testere ferdigheter og ekspertise til å implementere denne typen testing på en omfattende måte. Å utforme visse negative testtilfeller er mindre intuitivt enn deres positive testtilfeller. Dessuten kan implementering av testautomatisering også være utfordrende uten riktig ekspertise.
Forretningspress:
Interessenter, testere og ledelse må forstå den kritiske rollen som negativ testing spiller i utviklingen av robuste applikasjoner. Unnlatelse av å verdsette betydningen kan føre til press for å fokusere på positiv testing på bekostning av negativ testing.
Det er tydelig at det er flere utfordringer team står overfor som ønsker å frigjøre fordelene med negativ testing. Men med den riktige tilnærmingen og de riktige programvaretestingsverktøyene kan du overvinne disse problemene og bygge programvare som går utover brukernes forventninger.
Hvordan skrive programvare som tester negative testtilfeller
Å skrive programvare som tester negative testtilfeller krever litt erfaring og kreativ tenkning. Her er en trinn-for-trinn-guide som hjelper deg med å bygge disse kritiske testsakene.
#1. Etabler dine mål
Før du skriver programvaren som tester negative testtilfeller, må du forstå hvorfor du vil utføre negativ testing. Ikke alle applikasjoner drar nytte av negativ testing.
Så forstå hva du ønsker å oppnå. Negativ testing er utformet for å avdekke feil og krasj som skyldes uventede brukerinteraksjonsscenarier eller forhold.
#2. Skisser potensielle negative scenarier
Deretter må du gjøre en redegjørelse for hva slags negative scenarier som kan oppstå når brukere samhandler med programvaren din. Forskning under dette trinnet er avgjørende. Noen områder du bør utforske er:
- Systemkrav
- Typiske brukstilfeller
- Applikasjonsfunksjoner og funksjoner
Mine disse situasjonene og lag en liste over scenarier der applikasjonen kanskje ikke fungerer som du har tenkt.
Vurder deretter scenarier for kritisk inputvalidering. Vanligvis vil dette involvere dataregistreringsskjemaer, påloggingsfelt og så videre.
Til slutt, vurder myriaden av ukonvensjonelle måter som brukere kan samhandle med programvaren din og uventede hendelser som kan gi uønskede utfall, som nettverksfrakoblinger, brå systemavslutninger, massive dataoverføringer, etc.
Når du har dokumentert så mange scenarier som mulig, er det på tide å bestemme de forventede resultatene av disse uventede scenariene.
#3. Skissere forventede resultater
Hvert testtilfelle må ha et forventet utfall, og et negativt testtilfelle er ikke annerledes. Den beste praksisen her er å skrive ut hvert negativt scenario og bestemme hva utfallet skal bli.
Noen av de potensielle resultatene kan omfatte:
- Nøyaktige og informative feilmeldinger
- Passende omdirigeringer
- Grasiøs systemhåndtering, for eksempel for å forhindre at systemet fryser eller krasjer.
#4. Velg innganger for å teste
Nå er det på tide å se hvilke innganger du trenger å teste. Disse inngangene bør være de som mest sannsynlig vil forårsake feil eller annen negativ atferd.
Noen inndata du må inkludere er:
- Verdier utenfor området (negative verdier i et aldersfelt osv.)
- Ugyldige data (bokstaver i et numerisk felt osv.)
- Uventede tegn eller symboler
- Spesielle karakterer
- Manglende data
#5. Skriv testsakene dine
Når du har samlet alle scenariene dine, er det på tide å skrive testsakene dine. Nå, med negativ testing, er det et nesten ubegrenset antall testtilfeller du kan skrive. Tross alt handler denne typen testing om å finne hva som skjer når folk bruker programvaren på måter du ikke hadde tenkt. Imidlertid tilsier frister at du kutter listen over potensielle saker ned i situasjoner som mest sannsynlig vil forårsake problemer.
Som alltid, skriv testsakene dine på et klart, konsist og objektivt språk. Det er ikke rom for tvetydighet her.
Her er et godt format for negative testtilfeller.
- Bruk en testsaks-ID
- Beskriv nøyaktig hva som testes
- Legg merke til eventuelle forutsetninger for den negative testen
- Skissere settet med trinn involvert
- Etabler klare og objektive resultater
- Noter ned det faktiske resultatet av testen
#6. Planlegg testen
Nå må du planlegge testene dine. Igjen, det er viktig å prioritere scenariene som har de mest alvorlige uønskede utfallene, for eksempel krasj, eller hvor det er mest sannsynlig at problemer blir avdekket.
Eksempel på negativ testtilfelle
Her er et eksempel på et negativt testtilfelle.
Testtilfelle-ID: TC001
Beskrivelse: Bekreft at en feilmelding vises hvis brukeren angir en ugyldig e-postadresse
Forutsetninger: Brukeren må være på innloggingssiden for applikasjonen
Trinn: 1. Skriv inn en ugyldig e-postadresse. 2. Trykk “Logg inn”
Forventet utfall: Når brukeren trykker “Logg inn”, vises en feilmelding som sier “feil e-postadresse angitt.”
Utfall: Registrer hva som skjedde da “Logg inn” ble valgt.
Eksempler på negative scenarier i programvaretesting
Her er noen typiske scenarier som du kan verifisere ved å bruke negative testmetoder.
1. Data og felttyper
Hvis du har fylt ut et skjema på nettet, vet du at disse boksene er satt til å akseptere bestemte typer data. Noen er bare tall, mens andre godtar datoer, tekst eller andre typer data.
Negativ testing for disse boksene innebærer å sende ugyldige data, for eksempel å skrive inn bokstaver i et numerisk felt.
2. Obligatoriske felter
Igjen, obligatoriske felt er vanlige funksjoner for skjemaer og applikasjoner. De er et hendig verktøy for å sikre at all kritisk informasjon er samlet før brukeren går videre til neste trinn.
Et godt testtilfelle for disse scenariene innebærer å se hva som skjer når disse feltene er tomme. I et ideelt scenario bør en feilmelding utløses som oppfordrer brukeren til å fylle ut det nødvendige feltet.
3. Passende antall tegn
Hvis du har en applikasjon av nettsider som testes, kan det hende du har et datafelt som krever et begrenset antall tegn. Dette kan være for brukernavn, telefonnumre, registreringsnumre og så videre.
Du kan opprette negative testtilfeller for disse feltene ved å skrive tester som legger inn over maksimalt tillatte tegn for å se hvordan appen reagerer.
4. Datagrenser og grenser
Enkelte skjemaer vil ha felt med faste grenser. For eksempel, hvis du ville at noen skulle rangere noe av 100, ville datagrensene være 1-100.
Opprett et negativt testtilfelle der du prøver å angi 0, 101 eller andre negative eller positive verdier av 1-100.
Beste praksis for negativ testing
Det er flere beste praksis involvert for å sikre negativ testing av høy kvalitet. Her er noen tips for å hjelpe deg å komme dit.
1. Definer ugyldige inndata:
Hell over utviklingsdokumentasjon, brukstilfeller og UI/UX for å forstå og identifisere potensielle ugyldige input. Se opp for ugyldige datatyper, ekstreme verdier, manglende data, tomme felt, uventede formater og mer.
2. Bruk grenseverdianalyse:
Som nevnt ovenfor, skisser grenseverdiene dine for å finne kanttilfeller som kan forårsake uventede reaksjoner.
3. Ansattes ekvivalenspartisjonering:
Se på inndatadomenene dine og del dem inn i ekvivalenspartisjoner med både gyldige og ugyldige verdier. Denne prosessen bidrar til å redusere antall testtilfeller du må skrive fordi hvis en tilsvarende del av ugyldige data forårsaker problemer for én inngang, vil den sannsynligvis være representert i hele klassen.
4. Etterligne dårlige brukere:
Positiv testing bekrefter forventet brukeratferd. Negativ testing utforsker hva som skjer når folk misbruker appen din. Så tenk på de forskjellige scenariene der dette kan skje, og repliker dem i testsakene dine.
5. La risiko og innvirkning styre testingen din:
Ingen tester har ubegrenset tid. På et tidspunkt må du ta vanskelige valg fordi du ikke kan teste for (eller til og med vite) alle uventede utfall. Når du skal bestemme hvilke typer negative tester du skal kjøre, prioriter områdene som vil medføre størst risiko eller negativ innvirkning på produktet ditt.
6. Feilhåndteringsbekreftelse:
Sørg for at du gjør feilhåndtering til en del av testingen, og kontroller at feilmeldinger er nyttige og nøyaktige.
7. Automatiser så mye som mulig:
Automatisering er dyktig til å håndtere hverdagslige og repeterende oppgaver. Negativ testing krever imidlertid fortsatt en manuell tilnærming for utforskende testing og finne kanttilfeller.
De beste negative testverktøyene for 2024
Selv om negativ programvaretesting er vanlig i bransjen, er det mangel på distinkte verktøy for jobben. En stor grunn til dette er den allsidige naturen til negativ testing. Dessuten fungerer mange av de samme verktøyene som brukes til positiv testing for negativ testing når du justerer inndataene.
ZAPTEST er det beste verktøyet for negativ testing på grunn av sin allsidige og modulære natur. Den er enkel å bruke og kan tilpasses, og takket være funksjoner på tvers av plattformer og applikasjoner tilbyr den en fleksibilitet som er vanskelig å slå.
Datadrevet testing og mutasjonstesting funksjonalitet gjør ZAPTEST perfekt for negativ testing. Dessuten, takket være den RPA funksjoner, kan du simulere virkelige brukere, gjenbruke tester og bygge rapporter og dokumentasjon med letthet. I et nøtteskall, ZAPTESTs evne til å kjøre toppmoderne programvareautomatisering og robotisert prosessautomatiseringsprogramvare gjør det til en one-stop shop for enhver automatiseringsoppgave, inkludert negativ testing.
Siste tanker
Negativ testing i programvaretesting hjelper teamene med å forstå hvordan applikasjonen deres vil håndtere uventede inndata og ugyldige data. Mens positiv testing tester for å se om programvaren din fungerer etter hensikten, hjelper negativ programvaretesting deg med å finne ut hva som skjer når brukere velger inndata og data feil. Begge tilnærmingene er viktige hvis du vil ha en solid og robust applikasjon som kan håndtere påkjenningene og påkjenningene ved mangfoldig brukerinteraksjon.