Positiv testning och negativ testning med exempel

⚡ Smart sammanfattning

Positiv och negativ testning avgör tillsammans om programvara accepterar det den ska och avvisar det den inte ska. Den här artikeln förklarar båda metoderna, teknikerna bakom dem, praktiska exempel och de metoder som håller defektläckaget nere.

  • Positivt test: Mata endast in giltiga data och bekräfta att applikationen slutför det avsedda flödet exakt enligt specifikationen.
  • Negativt test: Mata in ogiltig eller extrem data och bekräfta att programmet vägrar den, visar ett tydligt fel och förblir stabilt.
  • 📏 Randvärdesanalys: Testa kanten av varje accepterat intervall, och steg sedan ett steg utanför det, för att snabbt upptäcka defekter som försvann.
  • 🧩 Ekvivalenspartitionering: Dela upp indata i giltiga och ogiltiga grupper, sampla sedan ett värde från varje grupp istället för att testa allt.
  • ⚖️ Täckningsregel: Skriv minst två fall per krav, ett positivt och ett negativt, så att inget acceptanskriterium inte testas.
  • 🛡️ Säkerhetsutbetalning: Negativa fall exponerar injektionsfel, utgångna tokens och ohanterade undantag som positiva körningar aldrig vidrör.
  • 🤖 Automatiseringsanpassning: Automatisera stabila positiva flöden för regressionsvärden och automatisera negativa valideringskontroller för återkoppling av motståndskraft.

Programvarutestning är processen att verifiera och validera en programvara för att kontrollera om den fungerar som förväntat. Avsikten är att hitta defekter och förbättra produktkvaliteten. Det finns två sätt att testa programvara, nämligen positiv testning och negativ testning.

De två tillvägagångssätten besvarar motsatta frågor: fungerar applikationen när allt går rätt, och förblir den stabil när något går fel?

Vad är positiv testning?

Positiv testning är en typ av testning som utförs på en programvara genom att tillhandahålla giltiga datamängder som indata. Den kontrollerar om programvaran beter sig som förväntat med positiva indata eller inte.

Positiv testning utförs för att kontrollera om programvaran gör exakt vad den förväntas göra. Det kallas därför även happy path-testning.

Tänk dig till exempel den numeriska textrutan som visas nedan.

Positiv testning

Det finns en textruta i en applikation som endast kan acceptera siffror. Att ange värden upp till 99999 kommer att accepteras av systemet och alla andra värden förutom detta bör inte vara acceptabla. För att göra positiva tester, ställ in de giltiga ingångsvärdena från 0 till 99999 och kontrollera om systemet accepterar värdena.

Vad är negativ testning?

Negativ testning är en testmetod som utförs på programvaran genom att tillhandahålla ogiltiga eller felaktiga datamängder som indata. Den kontrollerar om programvaran beter sig som förväntat med negativa eller oönskade användarinmatningar.

Syftet med negativ testning är att säkerställa att programvaran inte kraschar och förblir stabil med ogiltiga datainmatningar. Det kallas därför även felsökvägstestning eller feltestning.

Tänk dig till exempel att samma fält tar emot tecken istället för siffror.

Negativ testning

Negativ testning kan utföras genom att skriva in tecknen A till Ö eller från a till z. Antingen programvarusystem bör inte acceptera värdena eller så bör det skicka ett felmeddelande för dessa ogiltiga datainmatningar.

Vid båda typerna av tester måste följande beaktas:

  • Indata
  • En åtgärd som måste utföras
  • Utgångsresultat

Positiv testning kontra negativ testning: Viktiga skillnader

Båda tillvägagångssätten delar samma sak testfall struktur. Skillnaden ligger i vilken input du ger och i vad ett godkänt resultat bevisar.

Parameter Positiv testning Negativ testning
Också känd som Testning av lycklig väg Felsökväg eller feltestning
Inmatning som används Giltiga, förväntade data Ogiltig, extrem eller oväntad data
Mål Bekräfta att funktionen gör vad den ska Bekräfta att funktionen vägrar det den inte borde
Förväntat resultat Flödet slutfördes utan problem Ett tydligt fel visas och systemet förblir stabilt
Felhantering Inte fokus Hela fokuset
Rapportering Smal, följer specifikationen Bred, utforskar allt utanför specifikationen
Typisk risk om den hoppas över Kärnfunktioner levereras trasiga Krascher och säkerhetshål når produktionen

Ett misslyckat positivt test signalerar trasig funktionalitet. Ett misslyckat negativt test signalerar ett saknat skydd, vilket är mycket dyrare att reparera när användarna väl har hittat det.

Testtekniker som används för positiv och negativ testning

I praktiken genererar två klassiska input-designtekniker både positiva och negativa fall från samma krav:

  • Gränsvärdesanalys
  • Ekvivalensuppdelning

Gränsvärdesanalys

Detta är en av mjukvarutestteknikerna där testfallen är utformade för att inkludera värden vid gränsen. Om indata används inom gränsvärdesgränserna, sägs det vara positiv testning. Om indata plockas utanför gränsvärdesgränserna, sägs det vara negativ testning.

Titta till exempel på det accepterade intervallet som illustreras nedan.

Positiv vs negativ testning

Ett system kan acceptera siffror från 0 till 10 numeriska värden. Alla andra siffror är ogiltiga värden. Under denna teknik kommer gränsvärdena -1,0,1 och 9,10,11 att testas.

Ekvivalensuppdelning

Detta är en mjukvarutestning teknik som delar upp indata i många partitioner. Värden från varje partition måste testas minst en gång. Partitioner med giltiga värden används för positiv testning. Medan partitioner med ogiltiga värden används för negativa tester.

Studera till exempel de två partitionerna som visas nedan.

Ekvivalensuppdelning

Numeriska värden noll till tio kan delas in i två (eller tre) partitioner. I vårt fall har vi två partitioner -10 till -1 och 0 till 10. Exempelvärden (5 och -5) kan tas från varje del för att testa scenarierna. Se ekvivalenspartitionering och randvärdesanalys lektion för fler bearbetade exempel.

Hur man utför positiv och negativ testning

Följande sekvens omvandlar ett krav till en balanserad uppsättning positiva och negativa fall.

  1. Läs kravet för gränser. Notera alla accepterade format, intervall och obligatoriska fält. Allt som specifikationen tillåter blir ett positivt fall, och allt som den exkluderar blir ett negativt.
  2. Skriv det positiva fallet först. Ange giltiga data, utför åtgärden och registrera det förväntade framgångsresultatet som baslinje.
  3. Härled negativa fall från samma gränsvärden. Använd randvärdesanalys och ekvivalenspartitionering för att producera tomma fält, felaktiga datatyper och tal utanför intervallet.
  4. Lägg till fientlig input. Omfatta SQL-injektion strängar, utgångna tokens och felaktigt formaterade API-nyttolaster så säkerhetstest luckor uppstår tidigt.
  5. Utöka till icke-funktionella kontroller. A ladda test vid det stödda användarantalet är positivt, medan en stresstest bortom den gränsen är det matchande negativa fallet.
  6. Välj var varje ärende körs. Håll negativa fall borta från rök- och hälsokontroll, vilka är snabba positiva grindar, och kör dem i funktionella och regressionstestning cykler.

Ett uttag i en bankomat visar parkopplingen. Det positiva fallet anger en korrekt PIN-kod och ett giltigt belopp, så kontanter och ett kvitto följer. Det negativa fallet anger en felaktig PIN-kod och förväntar sig ett avslagsmeddelande, sedan en kortspärr.

Bästa praxis för att hålla balansen rätt

  • Skriv minst två fall per krav, ett positivt och ett negativt, innan utvecklingen påbörjas.
  • Prioritera negativa fall efter påverkan, så att misslyckade inmatnings- och betalningsfel kommer före kosmetiska inmatningsfel.
  • Hävda själva felmeddelandet, inte bara att åtgärden misslyckades, eftersom vaga meddelanden också är defekter.
  • Lämna plats för utforskande testningoch logga fynd via din process för felhantering.

⚠️ Varning: Kör aldrig negativa fall mot en liveproduktionsmiljö. De finns för att tvinga fram fel, och en avsiktlig krasch påverkar verkliga användare och verkliga data.

Vanliga frågor

Negativ testning kontrollerar att en applikation avvisar ogiltig inmatning korrekt. Destruktiv testning går längre och driver medvetet systemet mot fel, som att avsluta en databasanslutning mitt i en transaktion, för att mäta återställningsbeteende och motståndskraft under extrema förhållanden.

Nej. Rök- och hälsokontroll Använd endast positiva kontroller, eftersom de fungerar som snabba kvalitetsgrindar på en nybyggnation. Negativa fall skapar avsiktligt fel, så team kör dem istället under djupare funktionella cykler.

Ja. AI-generatorer läser krav eller användarberättelser och föreslår giltiga och ogiltiga indatauppsättningar, inklusive gränsvärden. En testare granskar dem fortfarande, eftersom genererade negativa fall ofta missar domängränser som regulatoriska tröskelvärden eller valutaavrundningsregler.

Ja. AI-funktioner behöver negativa fall för snabb injicering, felaktiga modellsvar, timeouts och frågor utanför omfånget. Eftersom utdata varierar mellan körningar bör påståenden kontrollera svarsformat, säkerhetsfilter och reservbeteende snarare än en fast förväntad sträng.

Selenium driver validering av webbläsarfält, Postman täcker ogiltiga API-nyttolaster och statuskoder, och JMeter trycker lasten förbi den stödda gränsen för stressscenarier. Välj det verktyg som matchar det lager du validerar.

Sammanfatta detta inlägg med: