Vad är domäntestning vid mjukvarutestning? (med exempel)

⚡ Smart sammanfattning

Domäntestning kontrollerar en applikation genom att mata den med minsta möjliga mängd användbara indata, som täcker giltiga, ogiltiga och randvärden, och bekräftar att endast värden inom det accepterade intervallet producerar den erforderliga utdata.

  • 🔘 Kärnidé: Dela upp varje indatadomän i ekvivalensklasser och testa ett representativt värde per klass, inte alla möjliga indata.
  • ☑️ Gränsfokus: Värden vid en klassgräns, och strax utanför den, exponerar fel som är tydliga med varandra mycket oftare än värden i mellanintervallet.
  • ✅ Parade tekniker: Ekvivalensklassanalys avgör gruppenping; randvärdesanalys avgör vilken medlem i varje grupp som ska köras.
  • 🧪 Utarbetat exempel: En biljettmodul som tilldelar tävlingar efter ålder och kön reducerar fyra åldersklasser till en kort, värdefull testuppsättning.
  • 📈 Kunskapsberoende: Att bedöma om en utdata är korrekt behöver affärsregler, så tekniken passar små, välförstådda logikbitar.

Domäntestning i mjukvarutestning med ekvivalensklasser och randvärden

Vad är domäntestning?

Domäntestning är en mjukvarutestning en process där applikationen testas genom att ange ett minimalt antal indata och utvärdera dess lämpliga utdata. Det primära målet med domäntestning är att kontrollera om programvaruapplikationen accepterar indata inom det acceptabla intervallet och levererar erforderlig utdata.

Det är ett funktionstestning teknik där ett systems utdata testas med ett minimalt antal ingångar för att säkerställa att systemet inte accepterar ogiltiga och ingångsvärden utanför intervallet. Det behandlas också som en av de viktiga vit box testning metoder. Den verifierar vidare att systemet inte ska acceptera indata, villkor och index utanför det angivna eller giltiga intervallet.

Domäntestning skiljer sig åt för varje specifik domän, så du behöver domänspecifik kunskap för att testa ett programvarusystem.

Enklare praxis för domäntestning

I domäntestning delar vi upp en domän i underdomäner (ekvivalensklasser) och testar sedan med värden från varje underdomän. Till exempel, om en webbplats (domän) har getts för testning, kommer vi att dela upp webbplatsen i små delar (underdomän) för att underlätta testningen.

Domänen kan innebära testning av en enda ingångsvariabel eller en kombination av ingångsvariabler.

Utövare studerar ofta de enklaste fallen av domäntestning under två andra namn, "gränstestning" och "ekvivalensklassanalys".

Gränsprovning - Gränsvärdesanalys (BVA) är baserat på testning vid gränserna mellan partitioner. Vi kommer att testa både giltiga och ogiltiga indatavärden i partitionen/klasserna.

Ekvivalensklasstestning – Tanken bakom denna teknik är att dela upp (dvs. att partitionera) en uppsättning testvillkor i grupper eller uppsättningar som kan anses vara lika (dvs systemet ska hantera dem på samma sätt), därav "ekvivalenspartitionering".

Det förenklade formuläret gäller för domäntestning –

  • Endast till tester av indatavariabler
  • Endast när det testas på systemnivå
  • Endast när man testar en i taget
  • Endast när den testas på ett mycket ytligt sätt

Det kan förenklas enligt nedan:

Variabel Giltig klassekvivalensklass Ogiltig klassekvivalensklass Gränser & Specialfall Anmärkningar
X 0-100 0
100
<0 -1
> 100 101

Förklaring:

  • Om ett fält accepterar intervall från 0–100, bör fältet inte acceptera -1 och 101, eftersom de är ogiltiga poster och bortom gränserna.
  • Fältet ska acceptera värden som 0, 100 och valfritt tal däremellan.

Bygga tabeller som dessa (i praktiken)

  • För att bygga en ekvivalensklassanalys över tid, lägg in informationen i ett kalkylblad. Börja med att lista variabler. Lägg till information om dem allt eftersom du får den.
  • Tabellen ska slutligen innehålla alla variabler. Det betyder alla indatavariabler, alla utdatavariabler och alla mellanliggande variabler som du kan observera.
  • I praktiken är de flesta sådana tabeller ofullständiga. De bästa listar alla variabler och lägger till detaljer för de kritiska.

Domänteststrategi

När du testar domäner måste du tänka på följande saker:

  • Vilken domän testar vi?
  • Hur grupperar man värdena i klasser?
  • Vilka värden för klasserna ska testas?
  • Hur bestämmer man resultatet?

Vilken domän testar vi?

Varje domän som vi testar har en viss inmatningsfunktionalitet och en utmatningsfunktionalitet. Det kommer att finnas några inmatningsvariabler som ska matas in, och lämplig utmatning måste verifieras. Diagrammet nedan visar detta inmatnings-till-utmatningsförhållande.

Domäntestningsstrategi som visar indatavariabler som flödar in i en domän och producerar en utdata

Exempel på domäntestning

Tänk på ett enstaka indatatestscenario:

C = a+b, där a och b är indatavariabler och C är utdatavariabeln.

Här i exemplet ovan finns det inget behov av klassificering, och inte heller någon kombination av variablerna.

Tänk på nedanstående flera ingångar och lämpligt utdatascenario:

Överväg en spelutställning för barn. Sex tävlingar är planerade, och biljetter måste delas ut baserat på ålder och kön. Biljettförsäljningen är en av modulerna som ska testas för spelutställningens hela funktionalitet.

Enligt scenariot fick vi sex scenarier baserade på åldern och tävlingarna:

  • Ålder >5 och <=10, pojke bör delta i berättandet.
  • Flickor >5 och <10 år bör delta i teckningstävlingen.
  • Ålder >10 och <=15, pojke bör delta i frågesporten.
  • Ålder >10 och <=15, flicka bör delta i uppsatsskrivning.
  • Ålder <=5, både pojkar och flickor bör delta i rimtävlingen.
  • Ålder >15, både pojkar och flickor bör delta i poesitävlingen.

Här kommer indata att vara Ålder och Kön, och därmed kommer tävlingsbiljetten att utfärdas. I det här fallet sker uppdelning av indata, eller helt enkelt gruppering.ping av värderingar, kommer in i bilden.

Hur grupperar man värdena i klasser?

Att partitionera vissa värden innebär att dela upp dem i icke-överlappandeping delmängder.

Som vi diskuterade tidigare finns det två typer av partitionering:

  • Ekvivalensuppdelning – Ekvivalenspartitionering är en mjukvarutestningsteknik som delar upp indata från en mjukvaruenhet i partitioner av ekvivalenta data från vilka testfall kan härledas. I princip är testfall utformade för att täcka varje partition minst en gång.
  • Gränsvärdesanalys – Gränsvärdesanalys är en mjukvarutestningsteknik där tester utformas för att inkludera representanter för gränsvärden inom ett intervall. Idén kommer från gränsen.

I exemplet ovan delar vi upp värdena i delmängder. Vi delar upp åldern i följande klasser:

  • Klass 1: Barn i åldersgruppen 5 till 10
  • Klass 2: Barn under 5 år
  • Klass 3: Barn i åldersgruppen 10 till 15
  • Klass 4: Barn i åldersgruppen över 15 år.

Vilka värden för klasserna ska testas?

De värden som tas upp för testning bör vara gränsvärden:

  • Gränser representerar de ekvivalensklasser vi samplar dem från. De är mer benägna att avslöja ett fel än andra klassmedlemmar, så de är bättre representativa.
  • Den bästa representanten för en ekvivalensklass är ett värde mellan intervallet.

För exemplet ovan har vi följande klasser som ska testas:

Till exempel, för scenario #1:

Klass 1: Barn i åldersgruppen 5 till 10 år (ålder >5 och <=10)

Gränsvärden:

  • Värdena bör vara lika med eller mindre än 10. Därför bör ålder 10 inkluderas i denna klass.
  • Värdena bör vara större än 5. Därför bör 5 års ålder inte inkluderas i denna klass.
  • Värdena bör vara lika med eller mindre än 10. Därför bör ålder 11 inte inkluderas i denna klass.
  • Värdena bör vara större än 5. Därför bör 6 års ålder inkluderas i denna klass.

Ekvivalenspartitionvärden:

Ekvivalenspartition avses när man bara behöver testa ett villkor från varje partition. I detta antar vi att om ett villkor i en partition fungerar, så borde alla villkor fungera. På samma sätt, om ett villkor i den partitionen inte fungerar, antar vi att inget av de andra villkoren kommer att fungera. Till exempel,

(Ålder >5 och <=10)

Eftersom värdena från 6 till 10 är giltiga, måste ett av värdena bland 6, 7, 8, 9 och 10 väljas. Därför är den valda åldern "8" en giltig inmatningsålder för åldersgruppen mellan (Ålder >5 och <=10). Denna typ av partition kallas ekvivalenspartition.

Scenario Gränsvärden som ska tas Ekvivalenspartitioneringsvärden
Pojke – Ålder >5 och <=10 Inmatad ålder = 6
Inmatad ålder = 5
Inmatad ålder = 11
Inmatad ålder = 10
Inmatad ålder = 8
Tjej – Ålder >5 och <=10 Inmatad ålder = 6
Inmatad ålder = 5
Inmatad ålder = 11
Inmatad ålder = 10
Inmatad ålder = 8
Pojke – Ålder >10 och <=15 Inmatad ålder = 11
Inmatad ålder = 10
Inmatad ålder = 15
Inmatad ålder = 16
Inmatad ålder = 13
Tjej – Ålder >10 och <=15 Inmatad ålder = 11
Inmatad ålder = 10
Inmatad ålder = 15
Inmatad ålder = 16
Inmatad ålder = 13
Ålder<=5 Inmatad ålder = 4
Inmatad ålder = 5
Inmatad ålder = 3
Ålder> 15 Inmatad ålder = 15
Inmatad ålder = 16
Inmatad ålder = 25

Hur avgör vi om programmet godkände eller underkände testet?

Att funktionaliteten ska kunna godkännas beror inte bara på resultaten av ovanstående scenarier. Den givna inmatningen och den förväntade utmatningen kommer att ge oss resultaten, och detta kräver domänkunskap.

Bestämma resultatet av exemplet: skärmen nedan visar ärendeutdata för varje ålders- och könskombination.

Ärendeutdata för varje ålders- och könskombination som används för att fastställa domäntestresultat

Om alla testfall i ovanstående godkänns, godkänns domänen för utfärdande av biljetter i tävlingen. Om inte, underkänns domänen.

Domänteststruktur

Vanligtvis följer testare stegen nedan vid domäntestning. Dessa kan anpassas eller hoppas över enligt våra testbehov.

  • Identifiera potentiellt intressanta variabler.
  • Identifiera variablerna du kan analysera nu och beställ dem (minst till störst och vice versa).
  • Skapa och identifiera gränsvärden och ekvivalensklassvärden enligt ovan.
  • Identifiera sekundära dimensioner och analysera var och en på ett klassiskt sätt. (I exemplet ovan är kön den sekundära dimensionen.)
  • Identifiera och testa variabler som håller resultat (outputvariabler).
  • Utvärdera hur programmet använder värdet på denna variabel.
  • Identifiera ytterligare potentiellt relaterade variabler för kombinationstestning, där testning av beslutstabeller hjälper.
  • Föreställ dig risker som inte nödvändigtvis har en uppenbar dimension.
  • Identifiera och lista oanalyserade variabler. Samla information för senare analys.
  • Sammanfatta din analys med en risk/ekvivalenstabell.

Vanliga frågor

Båda etiketterna förekommer i praktiken. Klasser som härrör från specifikationen gör det till en svart låda teknik; klasser som härleds från koden gör den till en vit ruta. Själva analysen är identisk.

Den täcker felbenägna kanter med väldigt få testfall. Begränsningarna är verkliga: gränser är svåra att fastställa exakt, och hela arbetsflöden övas aldrig, så den kompletterar andra metoder snarare än ersätter dem.

Ekvivalenspartitionering är ett steg inom domäntestning, som också ordnar variabler, lägger till gränsanalys, hanterar sekundära dimensioner och utdatavariabler och slutar i en risktabell.

De två överlappar varandra utan att vara identiska. Den här artikeln behandlar input-domänanalys, medan branschanvändning som testning av hälso- och sjukvårdsområdet behovsprövning med sektorkunskap, vilket fortfarande behövs för att bedöma förväntade resultat.

AI-assistenter läser ett krav och föreslår kandidatekvivalensklasser, kantvärden och saknade ogiltiga fall. En testare bekräftar fortfarande de verkliga gränserna, eftersom ett felaktigt härlett intervall ger en säker men värdelös testuppsättning.

GitHub Copilot skriver parametriserade testmetoder när klasserna och kanterna visas i prompten eller koden. Outtalade affärsgränser måste anges av testaren.

Varje kombination växer multiplikativt, så det är sällan praktiskt. Analysera varje variabel för sig först, använd sedan parvis eller ortogonal matris val för de riskabla kombinationerna.

Testar endast giltiga klasser och hoppar överping negativa tester, med hjälp av en inkluderande gräns där regeln är exklusiv, och helt ignorerar utdatavariabler.

Sammanfatta detta inlägg med: