Negativ testning inom programvarutestning är en teknik som verifierar hur din applikation reagerar på oväntade beteenden eller ogiltiga data. Denna typ av testning kan hjälpa kvalitetssäkringsteam att förbättra robustheten och stabiliteten i sin programvara genom att hitta undantag som orsakar frysningar, krascher eller andra oönskade resultat.
I den här artikeln går vi igenom vad negativ programvarutestning är, varför det är viktigt och några av de olika tillvägagångssätt, tekniker och verktyg som du kan använda för denna teknik.
Vad är negativ programvarutestning?
Negativ testning är en testteknik för programvara där man avsiktligt matar ett system med ogiltiga indata eller oväntade data för att se hur det hanterar dessa scenarier. Denna metod, som även kallas feltestning eller felvägstestning, simulerar de olika scenarier som din applikation kan utsättas för i verkligheten, t.ex. att användare anger ogiltiga datum eller tecken eller använder vissa funktioner på ett sätt som du inte hade tänkt dig.
De flesta typer av testning använder giltiga data för att testa en applikation. Negativ testning har dock ett annat tillvägagångssätt genom att testa runt kanterna och bortom typiska inmatningar och se hur applikationen hanterar undantag.
Det är viktigt att testa att din applikation fungerar som avsett. Men å andra sidan är det också viktigt att förstå vad som händer när användarna inte följer reservationerna, särskilt om dessa oavsiktliga användningar orsakar krascher, frysningar eller andra defekter.
Skillnad mellan positivt och negativt test
testning inom programvarutestning
Som vi beskrev ovan använder negativ testning oväntade eller ogiltiga data för att verifiera ett systems beteende. Vid positiv testning används däremot förväntade eller giltiga data för att verifiera att systemet fungerar som förväntat.
Med andra ord:
- Positiva tester hjälper dig att förstå om din applikation fungerar som planerat
- Negativ testning avgör om din applikation kan hantera oväntade händelser
Både positiv och negativ testning inom programvarutestning krävs om du vill testa din applikation noggrant.
Varför är negativa programvarutester så viktiga?
När utvecklare bygger programvara har de en klar uppfattning om hur de förväntar sig att användaren ska använda programvaran. Användarna följer dock inte alltid reglerna. Ofta försöker de klicka på knappar som inte finns, skriva in bokstäver i sifferfält eller göra inmatningar som du helt enkelt inte förväntar dig.
Negativ testning syftar till att ta hänsyn till dessa marginalfall som inte kan upptäckas med positiva testtekniker som
enhet
,
system
eller
integrationstestning
. Det krävs en del okonventionellt tänkande för att komma på ”skruvbollar” att kasta mot systemet. Nettoresultatet är dock en mer stabil och robust applikation.
Vad är syftet med negativ testning?
inom programvarutestning?
Negativ testning har liknande mål som andra typer av programvarutestning. Nämligen att upptäcka buggar, defekter och sårbarheter i en applikation. Den spelar dock en särskild roll när det gäller att hitta fel som inte kan upptäckas med hjälp av giltiga data. Här är några av anledningarna till att välja en negativ testmetod.
1. Exponering av defekter
Det centrala syftet med negativ testning inom programvarutestning är att upptäcka defekter som beror på ogiltiga data eller oväntade inmatningar. Det gör att testarna kan arbeta mer proaktivt med att upptäcka fel och se till att programvaran lever upp till förväntningarna.
2. Säkerhet
Oväntade inmatningar eller ogiltiga data kan avslöja säkerhetsproblem. Genom att testa och åtgärda dessa edge cases får man en säkrare och robustare applikation eftersom risken för skadliga attacker, injektionsfel eller försök till obehörig åtkomst minskar.
3. Hantering av fel
Negativ testning är användbart för att validera felhantering. Det handlar inte bara om att säkerställa att systemet förblir stabilt efter att ha stött på oväntade inmatningar eller data, utan också om hur det reagerar på dessa händelser, t.ex. genom att producera felmeddelanden för att säkerställa att slutanvändaren vet att data är ogiltiga.
4. Förbättrad testtäckning
Positiv och negativ testning inom programvarutestning kompletterar varandra enormt. De täcker båda olika delar av datainmatningen, vilket innebär att din testning är mer omfattande.
5. Bättre användarupplevelse
Negativ testning hjälper till att upptäcka källan till felmeddelanden, krascher och andra oväntade beteenden som kan påverka användarupplevelsen negativt.
Skillnad mellan positiv och negativ
testning inom programvaruteknik
Som vi nämnde ovan skickar negativ testning oväntade eller ogiltiga data för att verifiera ett systems beteende. Positiv testning, å andra sidan, skickar förväntade eller giltiga data för att verifiera att systemet fungerar som förväntat.
Skillnaden mellan positiv och negativ testning inkluderar:
1. Målsättningar:
Positiv testning verifierar om programvaran fungerar som avsett; negativ testning syftar till att förstå vad som händer i oavsiktliga scenarier.
2. Data:
Vid positiv testning används giltiga data, och vid negativ testning används ogiltiga indata, extrema värden och oväntade format.
3. Fokus:
Positiv testning fokuserar på framgångsrika scenarier, medan negativ testning är mer inriktad på misslyckade scenarier.
Olika typer av negativa tester
Negativ testning är ett begrepp som omfattar flera olika metoder för att validera kvaliteten och integriteten hos en applikation. Här är sju typer av negativa tester som du behöver känna till.
#1. Testning av gränsvärden
Gränsvärdestestning syftar till att testa programvaran med indata som ligger vid gränserna eller kanterna av indataområdet. Den testar både de högsta och lägsta förväntade värdena men testar också strax bortom dessa ingångar.
Exempel: Ett inmatningsfält accepterar siffror mellan 1-9. Ett gränsvärdestest kommer att mata in både 1 och 9 men också testa 0 och 10.
#2. Test av ingångsvärde
Test av ingångsvärden avgör hur systemet kommer att reagera på oväntade eller ogiltiga ingångsvärden. Några av de ingångar som kommer att testas är:
- Felaktiga datatyper
- Värden utanför intervallet
- Särskilda tecken
- Tomma fält.
Ett exempel: En inmatningsruta kräver endast en siffra, så testet kommer att mata in en bokstav och se hur systemet reagerar.
#3. Belastningstestning
Testning av belastning
hjälper testare att utvärdera hur systemet kommer att reagera under kraftig stress eller belastning, t.ex. stora datamängder eller höga trafikvolymer.
Verktyg för testautomatisering
kan simulera dessa extrema förhållanden för att förstå hur systemet reagerar under påfrestningar.
Exempel: Testaren kommer att simulera tusentals samtidiga användare som besöker en webbplats.
#4. Testning av undantag
Denna typ av testning undersöker hur systemet kommer att reagera på exceptionella händelser eller fel. Några av testerna omfattar
- Simulering av systemkrascher
- Fel i nätverket
- Fel i databasen
- Problem med diskutrymme
- Saknade filer.
Exempel: Testet kan undersöka vad som händer när en användare laddar ner en fil från applikationen och internet bryts.
#5. Testning av säkerhet
Säkerhetstestning använder en negativ testmetod för att belysa och förstå sårbarheter i programvaran som kan exponeras av ogiltiga eller oväntade inmatningar. Denna metod testar för vanliga angrepp, t.ex:
- SQL-injektion
- Skript på flera webbplatser (XSS)
- Buffer overflows.
Exempel: I ett säkerhetstest kan man försöka injicera skadlig kod i ett inmatningsfält.
#6. Testning av användargränssnitt
Denna typ av testning fokuserar på fel som uppstår när användaren interagerar med programvaran. Några av de saker som den kommer att försöka fastställa inkluderar:
- Oväntade svar på användarinteraktioner
- Felaktiga felmeddelanden
- Problem med navigering
Exempel: Testet kommer att undersöka vad som händer när vissa åtgärder utförs i fel ordning.
#7. Testning av dataintegritet
Test av dataintegritet säkerställer att data förblir korrekta och konsekventa i en mängd olika operationer inom applikationen. Några av de saker som testas inkluderar:
- Potentiell förvanskning av data
- Scenarier för dataförlust
- Oavsiktliga ändringar av data
Exempel: Testet ska verifiera att data förblir desamma efter en överföring.
Som du kan se finns det många olika metoder för negativ testning. Gemensamt för dem alla är att man använder oväntade indata eller ogiltiga data för att se hur applikationen fungerar under atypiska förhållanden.
Fördelar med negativ testning
Negativ testning handlar om att förstå hur din applikation fungerar när oväntade situationer uppstår. Här är några av de viktigaste fördelarna med att använda denna metod.
- Det hjälper dig att förstå hur oväntade inmatningar eller ogiltiga data påverkar din applikation. Kommer den att krascha? Spottar ut ett felaktigt felmeddelande?
- Negativ testning är en del av en ansvarsfull kvalitetssäkring eftersom den syftar till att identifiera svagheter i systemet
- Negativ testning innebär att programvaran testas på oförutsedda eller oförutsedda scenarier som den kommer att stöta på i verkligheten
- Återigen är negativ testning en viktig del av en grundlig strategi för säkerhet eftersom den belyser potentiella attackvektorer som cyberangripare kan dra nytta av.
Nackdelar med negativ testning
Negativ testning erbjuder en mängd fördelar, men det har också några nackdelar som måste övervinnas.
- Grundlig negativ testning kan kräva ytterligare hård- och mjukvara, vilket kan öka kostnaderna för testningen. För team som arbetar med en snäv budget kan detta vara ofördelaktigt.
- Negativ testning kan vara ganska tidskrävande eftersom det kräver att många testfall skapas för att täcka de olika permutationer av indata som programvaran kommer att möta i produktionen
- Det finns gränser för hur många oförutsägbara situationer som kan täckas med negativa tester. Vissa situationer kan vara så oväntade att testarna inte kan ta hänsyn till dem.
- Automatisering av negativa testfall är en utmaning. Men med rätt programvara, som ZAPTEST, är processen mycket mer hanterbar.
Utmaningar med negativ testning
Negativ testning är avgörande om du vill bygga robust och tillförlitlig programvara som klarar de påfrestningar som användarinteraktion innebär. Det finns dock några utmaningar med att implementera metoden som du måste vara medveten om.
Låt oss gå igenom några av de mer ihållande utmaningarna.
1. Identifiering av negativa scenarier vid testning av programvara
Tillräcklig täckning:
En av de största utmaningarna med negativa tester är att se till att man täcker in tillräckligt många oväntade scenarier. Det finns många negativa scenarier och permutationer, så att ta hänsyn till dem alla kräver ett kreativt tillvägagångssätt för att föreställa sig hur dina användare kommer att interagera med programvaran.
Prioritering:
Med så många potentiella negativa scenarier att granska är testarna inte alltid säkra på var de ska börja. Några bra kriterier för att utvärdera vad som ska prioriteras är prognoser:
- Situationer med hög sannolikhet för defekter
- Svårighetsgraden av resultatet av defekter.
2. Utformning av lämpliga negativa testfall
Validering av indata:
Att utforma solida negativa testfall kräver en ganska omfattande förståelse för ditt systems beteende, arkitektur och begränsningar. För att testa programvaran måste man använda noggrant övervägda indata och data. Även om ett slumpmässigt tillvägagångssätt kan hjälpa dig att avslöja vissa defekter, är det ingenting jämfört med ett mer exakt och systematiskt tillvägagångssätt för negativ testning.
Mångfald av data:
Beroende på hur ditt system ser ut kan du behöva testa mot en ganska varierad uppsättning data. Det finns faktiskt många olika dataformat, t.ex. siffror, text, datum och så vidare, som alla kan accepteras av din applikation. Utmaningen här är att utforma testfall som kan ta hänsyn till varje format och, i synnerhet, varje variation av ogiltiga data. Denna situation kan vara ganska tidskrävande för testteam.
3. Effektivitet och testautomatisering
Tidskrävande:
Positiv testning syftar till att validera programvaran mot förväntade resultat. Negativ testning, å andra sidan, måste fördjupa sig i det oväntade och utforska potentiella scenarier. Att gå över okänd mark tar längre tid. Om du vill ha de omfattande resultat som följer med negativ testning måste du därför vara beredd att investera några extra timmar.
Komplexitet i automatisering:
Negativa tester kan vara tids- och resurskrävande. Därför är det ett perfekt jobb för testautomatisering av programvara. Det finns dock vissa svårigheter som måste övervinnas. Det krävs till exempel viss erfarenhet och kunskap för att utforma testfall som definierar förväntade resultat för oväntade indata. Dessutom kanske ditt befintliga ramverk för automatiseringstester inte stöder de ogiltiga data som du vill skicka till din applikation, vilket lägger till ytterligare ett lager av komplexitet.
4. Utvärdering av resultaten
Falska positiva resultat:
Att kalibrera sin testning för att säkerställa en tillfredsställande balans mellan noggrannhet och fullständighet är en välkänd fråga för negativa testare. I vissa situationer kan överkänslig felhantering felaktigt förväxla giltiga inmatningar med negativa inmatningar, vilket leder till att tid slösas på problem som inte är relevanta.
Tvetydiga resultat:
När ett system tar emot en ogiltig inmatning kan det leda till krascher, fel eller frysningar. I många fall är detta ett säkert tecken på ett fel. I andra fall är det dock ett bevis på ett ohanterat edge-fall som utvecklarna inte har tagit hänsyn till. Att skilja mellan dessa olika situationer är viktigt, men att undersöka den verkliga orsaken är tidskrävande.
Datahantering:
Negativ testning kräver en betydande mängd data. Denna testinformation måste både genereras och underhållas. I utvecklingsscenarier med snäva tidsramar är detta ett extra jobb som måste beaktas.
5. Organisatoriska frågor
Brist på kunskap om negativa tester:
Negativ testning är populärt, men många testare saknar kunskaper och expertis för att genomföra denna typ av testning på ett heltäckande sätt. Att utforma vissa negativa testfall är mindre intuitivt än att utforma motsvarande positiva testfall. Dessutom kan det vara svårt att implementera testautomatisering utan rätt expertis.
Affärspress:
Intressenter, testare och ledning måste förstå den kritiska roll som negativ testning spelar i utvecklingen av robusta applikationer. Om man inte inser dess betydelse kan det leda till att man fokuserar på positiv testning på bekostnad av negativ testning.
Det är tydligt att det finns flera utmaningar för team som vill dra nytta av fördelarna med negativa tester. Men med rätt tillvägagångssätt och rätt verktyg för programvarutestning kan du övervinna dessa problem och bygga programvara som överträffar användarnas förväntningar.
Hur man skriver negativa testfall för programvarutestning
Att skriva negativa testfall för programvarutestning kräver viss erfarenhet och kreativt tänkande. Här är en steg-för-steg-guide som hjälper dig att bygga dessa viktiga testfall.
#1. Fastställ dina mål
Innan du skriver dina negativa testfall för programvarutestning måste du förstå varför du vill utföra negativ testning. Det är inte alla applikationer som gynnas av negativ testning.
Så förstå vad du vill uppnå. Negativ testning är utformad för att upptäcka fel och krascher som beror på oväntade scenarier eller förhållanden för användarinteraktion.
#2. Skissera potentiella negativa scenarier
Därefter måste du redogöra för den typ av negativa scenarier som kan uppstå när användare interagerar med din programvara. Forskning under detta steg är avgörande. Några områden som du bör utforska är:
- Systemkrav
- Typiska användningsområden
- Applikationens egenskaper och funktioner
Tänk igenom dessa situationer och gör en lista över scenarier där applikationen kanske inte fungerar som du har tänkt dig.
Tänk sedan igenom scenarier för validering av kritiska indata. Vanligtvis handlar det om formulär för datainmatning, inloggningsfält och så vidare.
Tänk också på de otaliga okonventionella sätt på vilka användarna kan interagera med er programvara och oväntade händelser som kan ge negativa resultat, t.ex. nätverksavbrott, abrupta systemavstängningar, massiva dataöverföringar osv.
När du har dokumenterat så många scenarier som möjligt är det dags att fastställa de förväntade resultaten av dessa oväntade scenarier.
#3. Beskriv förväntade resultat
Varje testfall måste ha ett förväntat resultat, och ett negativt testfall är inte annorlunda. Den bästa metoden är att skriva ner varje negativt scenario och bestämma vad resultatet ska bli.
Några av de potentiella resultaten kan vara följande:
- Korrekta och informativa felmeddelanden
- Lämpliga omdirigeringar
- Graciös systemhantering, t.ex. för att förhindra att systemet fryser eller kraschar.
#4. Välj ingångar att testa
Nu är det dags att se vilka ingångar du behöver testa. Dessa inmatningar bör vara de som mest sannolikt orsakar ett fel eller andra negativa beteenden.
Några ingångsvärden som du behöver inkludera är:
- Värden utanför intervallet (negativa värden i ett åldersfält, etc.)
- Ogiltiga uppgifter (bokstäver i ett numeriskt fält etc.)
- Oväntade tecken eller symboler
- Särskilda tecken
- Saknade uppgifter
#5. Skriv dina testfall
När du har samlat alla dina scenarier är det dags att skriva dina testfall. Nu, med negativ testning, finns det ett nästan obegränsat antal testfall som du kan skriva. När allt kommer omkring handlar denna typ av testning om att ta reda på vad som händer när människor använder programvaran på sätt som du inte hade tänkt dig. Tidsfristerna kräver dock att du skär ner listan över potentiella fall till situationer som mest sannolikt kommer att orsaka problem.
Som alltid bör du skriva dina testfall på ett tydligt, koncist och objektivt språk. Här finns inget utrymme för tvetydigheter.
Här är ett bra format för dina negativa testfall.
- Använd ett testfalls-ID
- Beskriv exakt vad som testas
- Notera eventuella förutsättningar för ditt negativa test
- Beskriv de olika steg som ingår
- Fastställa tydliga och objektiva resultat
- Notera det faktiska resultatet av ditt test
#6. Schemalägg testet
Nu behöver du schemalägga dina tester. Återigen är det viktigt att prioritera de scenarier som har de allvarligaste negativa följderna, såsom krascher, eller där det är mest sannolikt att problem kommer att upptäckas.
Exempel på negativt testfall
Här är ett exempel på ett negativt testfall.
ID för testfall: TC001
Beskrivning: Kontrollera att ett felmeddelande visas om användaren anger en ogiltig e-postadress
Förutsättningar: Användaren måste befinna sig på applikationens inloggningssida
Steg: 1. Ange en ogiltig e-postadress. 2. Tryck på ”Logga in”
Förväntat resultat: När användaren trycker på ”Logga in” visas ett felmeddelande med texten ”felaktig e-postadress angiven”.
Resultat: Registrera vad som hände när ”Logga in” valdes.
Exempel på negativa scenarier vid testning av programvara
Här är några typiska scenarier som du kan verifiera med hjälp av negativa testmetoder.
1. Data- och fälttyper
Om du har fyllt i ett formulär på nätet vet du att dessa boxar är inställda på att ta emot vissa typer av data. Vissa är endast för siffror, medan andra accepterar datum, text eller andra typer av data.
Negativt test för dessa boxar innebär att man skickar ogiltiga data, t.ex. genom att skriva in bokstäver i ett numeriskt fält.
2. Obligatoriska fält
Återigen är obligatoriska fält vanliga inslag i formulär och applikationer. De är ett praktiskt verktyg för att säkerställa att all viktig information samlas in innan användaren går vidare till nästa steg.
Ett bra testfall för dessa scenarier är att se vad som händer när dessa fält lämnas tomma. I ett idealiskt scenario bör ett felmeddelande utlösas som uppmanar användaren att fylla i det obligatoriska fältet.
3. Lämpligt antal tecken
Om du har en applikation med webbsidor som testas kan du ha ett datafält som kräver ett begränsat antal tecken. Det kan gälla användarnamn, telefonnummer, registreringsnummer och så vidare.
Du kan skapa negativa testfall för dessa fält genom att skriva tester som matar in mer än de maximalt tillåtna tecknen för att se hur appen reagerar.
4. Gränser och begränsningar för data
Vissa formulär kommer att ha fält med fasta gränser. Om du till exempel vill att någon ska betygsätta något från 100, skulle datagränserna vara 1-100.
Skapa ett negativt testfall där du försöker ange 0, 101 eller andra negativa eller positiva värden från 1-100.
Bästa praxis för negativa tester
Det finns flera bästa metoder för att säkerställa högkvalitativa negativa tester. Här är några tips som hjälper dig att nå dit.
1. Definiera dina ogiltiga indata:
Läs igenom utvecklingsdokumentation, användningsfall och UI/UX för att förstå och identifiera potentiellt ogiltiga inmatningar. Se upp för ogiltiga datatyper, extrema värden, saknade data, tomma fält, oväntade format och mycket mer.
2. Använd gränsvärdesanalys:
Som nämnts ovan bör du skissera dina gränsvärden för att hitta kantfall som kan orsaka oväntade reaktioner.
3. Partitionering av anställdas ekvivalens:
Titta på dina indatadomäner och dela upp dem i ekvivalenspartitioner med både giltiga och ogiltiga värden. Denna process hjälper till att minska antalet testfall du behöver skriva eftersom om en motsvarande bit av ogiltig data orsakar problem för en ingång, kommer det sannolikt att finnas representerat i hela klassen.
4. Härma dåliga användare:
Positiva tester verifierar förväntat användarbeteende. Negativa tester undersöker vad som händer när människor missbrukar din app. Tänk därför igenom de olika scenarier där detta kan hända och replikera dem i dina testfall.
5. Låt risk och påverkan styra testningen:
Ingen testare har obegränsad tid. Någon gång kommer du att behöva göra svåra val eftersom du inte kan testa för (eller ens veta) alla oväntade utfall. När du behöver bestämma vilka typer av negativa tester du ska köra, prioritera de områden som medför störst risk eller negativ påverkan på din produkt.
6. Verifiering av felhantering:
Se till att felhantering är en del av testningen och kontrollera att felmeddelanden är användbara och korrekta.
7. Automatisera så mycket som möjligt:
Automation är skicklig på att hantera vardagliga och repetitiva uppgifter. Negativ testning kräver dock fortfarande en manuell metod för utforskande testning och för att hitta edge cases.
De bästa negativa testverktygen för 2024
Även om negativ programvarutestning är vanligt i hela branschen, saknas det tydliga verktyg för jobbet. En stor anledning till detta är den mångsidiga karaktären hos negativ testning. Dessutom fungerar många av de verktyg som används för positiv testning även för negativ testning när man justerar indata.
ZAPTEST är det bästa verktyget för negativ testning tack vare dess mångsidiga och modulära egenskaper. Det är lätt att använda och anpassa, och tack vare plattforms- och applikationsöverskridande funktioner erbjuder det en flexibilitet som är svår att överträffa.
Datadriven testning och
mutationstestning
funktionalitet gör ZAPTEST perfekt för negativ testning. Dessutom, tack vare dess RPA funktioner kan du simulera verkliga användare, återanvända tester och enkelt skapa rapporter och dokumentation. Kort sagt, ZAPTEST:s förmåga att köra toppmodern mjukvaruautomation och programvara för robotprocessautomation gör det till en one-stop shop för alla automationsuppgifter, inklusive negativ testning.
Avslutande tankar
Negativ testning inom programvarutestning hjälper teamen att förstå hur deras applikation kommer att hantera oväntade inmatningar och ogiltiga data. Medan positiva tester visar om din programvara fungerar som avsett, hjälper negativa tester dig att ta reda på vad som händer när användare väljer inmatningar och data på fel sätt. Båda tillvägagångssätten är viktiga om du vill ha en solid och robust applikation som klarar påfrestningarna från olika typer av användarinteraktion.