Vad är negativ testning? Testfall med exempel

⚡ Smart sammanfattning

Negativ testning kontrollerar hur en programvara beter sig när den tar emot oväntade indata eller driftsförhållanden, så att produkten försämras smidigt istället för att krascha, skada data eller exponera ett säkerhetshål.

  • ???? Syfte: Bekräfta att programmet avvisar ogiltiga data utan problem istället för att misslyckas eller krascha.
  • ⚖️ Kontrast: Positivt test bevisar den lyckliga vägen; negativt test undersöker allt utanför den.
  • 🛗 Analogi: En hiss måste klara överbelastning, brand och strömavbrott, inte bara vanliga personresor.
  • 🔒 Säkerhet: Ogiltiga uppladdningar och SQL-injektionsförsök är klassiska negativa testscenarier.
  • 🧪 Design: Randvärden, ekvivalensklasser, felgissning och fuzzing genererar fallen.
  • 📊 Prioritet: Rangordna ogiltiga indata efter effekt, eftersom uttömmande negativ täckning är oöverkomlig.
  • ⚠️ Avvägning: Överdriven negativ testning förbrukar budgeten så att positiv täckning kan behöva mer.

Negativ testning i programvarutestning med exempel på ogiltiga indata

Negativ testning

Negativ testning är en typ av mjukvarutestning som används för att kontrollera en programvara mot oväntade indata och villkor. Oväntade data eller villkor varierar från fel datatyp i ett enkelt formulärfält till en avsiktlig hackerattack. Syftet med negativ testning är att förhindra att applikationen kraschar på grund av ogiltig inmatning och att förbättra produktens kvalitet och stabilitet.

Positiv testning ensam bevisar bara att systemet fungerar under normala förhållanden. Negativ testning bekräftar att samma system även hanterar onormala förhållanden, vilket är vad en feltolerant produkt kräver.

Exempel på negativ testning

En hiss är det exempel som oftast används för att förklara negativ testning, eftersom både dess normala beteende och dess felbeteende är lätta att föreställa sig.

Kraven för en hiss är bekanta: genom att trycka på ett våningsnummer skickas hissen till den våningen, och dörren öppnas automatiskt när hissen når den angivna våningen.

Några negativa scenarier för samma lyft listas nedan, bredvid antagandet som positiv testning gör istället.

Negativ testning Positiv testning
Vad händer om antalet personer (vikten) överskrider den angivna gränsen? Förutsätter att endast det angivna antalet personer kommer att gå in i hissen
Vad händer om någon röker eller orsakar en brand inne i hissen? Förutsätter att det inte finns någon rök eller brand inuti hissen
Vad händer om det blir strömavbrott under drift? Förutsätter att det inte blir strömavbrott medan hissen är i drift

Alla dessa fall testas negativt. Inget av dem kan garanteras att aldrig inträffa, så vart och ett måste begränsas.

Anta att överviktstillståndet aldrig kontrolleras, och hissen beter sig onormalt när den överbelastas. Det enda gapet skadar systemets tillförlitlighet och kan till och med vara livshotande. Det är vad negativ testning innebär i praktiken, och varför det är viktigt.

Programvara beter sig på samma sätt. Ett negativt test avviker avsiktligt från den normala operativa proceduren. Överväg ett registreringsformulär.

Negativ testning Positiv testning
Ange ett ogiltigt e-postadress-ID i e-postfältet Endast giltiga e-postadresser anges i e-postfältet
Ange ett ogiltigt telefonnummer, till exempel tecken, i ett telefonnummerfält Endast siffror anges i nummerfältet
Ladda upp en bild med en storlek utanför den angivna gränsen Endast bilder inom den angivna storleksgränsen laddas upp
Ladda upp ogiltiga filer som t.ex. XML or SQL filer i ett bilduppladdningsfält Endast giltiga bildformat som .jpg eller .png laddas upp

Var och en av dessa negativa fall måste fortfarande få systemet att fungera. Om ett tecken skrivs in i ett sifferfält kan applikationen inte bearbeta de oväntade data som den aldrig förväntade sig, och den kan krascha. Värre är att en SQL-injektion strängar i samma fält kan radera innehållet i databasen. Sådana förluster är anledningen till att negativa tester förekommer.

Varför gör negativa tester?

Testning tar tid och pengar, så det är viktigt att bestämma vad, hur och hur mycket man ska testa. Argumenten för att lägga en del av den budgeten på negativ testning ser olika ut från de två sidorna av ett projekt.

Organisationsperspektiv

Att leverera en produkt av god kvalitet till kunden är organisationens ansvar, och negativ testning är en del av den skyldigheten. Det är också organisationens bevis på att den gjorde allt rimligt för att förhindra ett fel, även om inget system är helt felfritt.

Påverkan är den avgörande faktorn. En e-handelswebbplats kan klara alla positiva tester och ändå innehålla ett kryphål som låter en angripare köra en SQL-injektion och radera data bakom den. Det är ett allvarligt säkerhetsintrång, och endast negativa tester letar efter det.

Offentliga applikationer, särskilt webbplatser, erbjuder nästan ingen kontroll över hur besökare använder dem, så negativ testning är det enda sättet att bekräfta att ovanlig användning är täckt och begränsad. Detsamma gäller för illvilliga användare: angripare letar aktivt efter en möjlighet att bryta sig in i ett system, och hackningsscenarier hör helt och hållet hemma i negativ testbevakning.

Kundperspektiv

Kunder förväntar sig en produkt utan sårbarheter, och negativa tester är det som stöder den förväntan. För känsliga produkter som e-handel eller aktiehandel online, säkerhetstest och negativt testande är obligatoriska snarare än valfria.

Kundens enda verkliga oro är kostnaden. När effekterna av ett misslyckande har analyserats kan kunden avgöra hur långt den negativa testningen ska gå.

Hur man gör negativt test

Negativ testning börjar med att beakta alla indata som applikationen fysiskt kan ta emot, inte bara de indata den ska ta emot. Var och en av dessa hör hemma i en Testfall även när det uppenbarligen är fel sätt att använda funktionen. Ett e-postfält testas med allt som inte är en giltig e-postadress, och en bilduppladdningskontroll testas med varje filtyp som inte är en bild.

Listan över möjliga ogiltiga indata är i praktiken oändlig, så negativa testfall måste prioriteras. För ett bildfält som endast accepterar .png-filer inkluderar de potentiella uppladdningarna .jpeg, .xml, .xls och många andra. En XML- eller SQL-fil har en mycket större potentiell påverkan än en .jpeg, så dessa fall körs först. Att rangordna fall efter påverkan före körning är det som gör negativ testning överkomlig.

De flesta negativa testfall kommer från en liten uppsättning etablerade designtekniker snarare än från improvisation:

  • Gränsvärden: Använd värdena omedelbart utanför ett giltigt intervall, till exempel 0 och 101 för ett fält som accepterar 1 till 100.
  • Ogiltiga ekvivalensklasser: välj en representant från varje klass av avvisad inmatning, till exempel bokstäver i ett numeriskt fält.
  • Fel vid gissning: använd erfarenhet av tidigare defekter för att inrikta dig på de indata som mest sannolikt kommer att förstöra den här typen av funktioner.
  • Felaktig och fientlig data: skripttaggar, SQL-fragment och överdimensionerade nyttolaster som undersöker validering och säkerhetshantering.
  • Fuzz testning: generera stora volymer slumpmässig eller muterad inmatning automatiskt för att hitta ohanterade krascher.
  • Avbrutna flöden: avbryta, uppdatera, få timeout eller förlora anslutningen mitt i en transaktion.

Oavsett vilken teknik som producerar fallet måste det förväntade resultatet skrivas ner som ett kontrollerat, läsbart fel – ett valideringsmeddelande, en avvisad uppladdning, en ren återställning – och aldrig enbart som "systemet kraschar inte".

För- och nackdelar med negativ testning

Liksom alla andra testtekniker har negativ testning fördelar och nackdelar som beror på var, när och hur mycket den tillämpas.

Fördelar med negativ testning

  • Det skyddar produktkvaliteten direkt, eftersom en produkt av god kvalitet är en utan sårbarheter som kan utnyttjas.
  • Det breddar täckningen. Ogiltig inmatning når ett aktivt system avsiktligt eller oavsiktligt, så negativa fall måste förekomma parallellt med positiva för att täckningen ska vara meningsfull.
  • Det ökar kundernas förtroende innan en release publiceras.
  • Den avslöjar defekter som positiv testning strukturellt inte kan nå, såsom ohanterade undantag och svag indatavalidering.

Nackdelar med negativ testning

  • I vissa situationer är det slöseri med tid och energi. Om en applikation är byggd för en enda användare är det inte värt att testa fallet med 100 samtidiga användare, så det är viktigt att välja rätt villkor och vissa system behöver väldigt lite negativ testning alls.
  • Det krävs skickliga och erfarna personer för att utforma fodralen.
  • Ur kundens synvinkel ökar det kostnaden och kan försena lanseringen.
  • Det konkurrerar om ansträngning. Ett team som spenderar mycket pengar på negativa tester kan hamna i att underinvestera i positiva tester.

Vanliga frågor

Positiv testning matar med giltig data och bekräftar det förväntade resultatet. Negativ testning matar med ogiltig data, fel format och trasiga sekvenser, och bekräftar att applikationen avvisar dem med ett kontrollerat meddelande istället för att misslyckas.

Tomma inloggningsuppgifter, en giltig användare med fel lösenord, SQL-fragment i användarnamnet, för långa strängar, inledande eller efterföljande mellanslag, inaktiverade konton och upprepade misslyckade försök att bekräfta att utlåsningsbeteendet fungerar.

Nej. De överlappar varandra där ogiltig eller fientlig inmatning är inblandad, men säkerhetstestning omfattar även autentisering, auktorisering, kryptering och sessionshantering. Negativ testning är en bredare inmatnings- och villkorsteknik.

Testare och QA-ingenjörer skriver dem vanligtvis, ofta med en utvecklare som granskar felsökvägar och en affärsanalytiker som bekräftar vilka ogiltiga villkor kraven faktiskt förbjuder.

Tillräckligt för att täcka varje avvisad inmatningsklass, varje gräns och varje felväg med hög påverkan. Utöver det ger tillagda fall lite värde, så risk och påverkan sätter stoppping punkt.

Ja. Fall av ogiltiga inmatningar är mycket repeterbara, så de passar automatiseringstestning och regressionssviter. Fuzzing-verktyg automatiserar generering av slumpmässig inmatning, medan assertioner kontrollerar att valideringsmeddelanden visas.

Modeller läser krav eller ett formulärschema och föreslår ogiltiga värden, randvillkor och fientliga strängar som en testare kanske inte listar manuellt. En granskare bekräftar ändå att varje förväntat resultat matchar specifikationen.

Ja, den utarbetar påståendekod, fixturer för ogiltiga data och parametriserade fall från en befintlig testfil. De genererade förväntningarna behöver granskas, eftersom ett påstående som ser rimligt ut kan koda fel beteende.

Sammanfatta detta inlägg med: