Hvad er domænetest i softwaretest? (med eksempel)

⚡ Smart opsummering

Domænetestning kontrollerer en applikation ved at give den det mindste brugbare sæt af input, der dækker gyldige, ugyldige og randværdier, og bekræfter, at kun værdier inden for det accepterede område producerer det nødvendige output.

  • 🔘 Kerneidé: Opdel hvert inputdomæne i ækvivalensklasser og test én repræsentativ værdi pr. klasse, ikke alle mulige input.
  • ☑️ Grænsefokus: Værdier ved en klassegrænse, og lige uden for den, afslører langt oftere defekter, der er lige så store som værdier i mellemintervallet.
  • ✅ Parrede teknikker: Ækvivalensklasseanalyse bestemmer gruppenping; randværdianalyse afgør, hvilket medlem af hver gruppe der skal køres.
  • 🧪 Udarbejdet eksempel: Et billetmodul, der tildeler konkurrencer efter alder og køn, reducerer fire aldersklasser til et kort testsæt med høj værdi.
  • 📈 Vidensafhængighed: At bedømme, om et output er korrekt, kræver forretningsregler, så teknikken passer til små, velforståede logikbidder.

Domænetestning i softwaretestning med ækvivalensklasser og randværdier

Hvad er domænetestning?

Domænetestning er en software test en proces, hvor applikationen testes ved at give et minimum antal input og evaluere dens passende output. Det primære mål med domænetestning er at kontrollere, om softwareapplikationen accepterer input inden for det acceptable område og leverer det krævede output.

Det er et funktionstest teknik, hvor et systems output testes med et minimalt antal input for at sikre, at systemet ikke accepterer ugyldige og inputværdier uden for intervallet. Det behandles også som en af ​​de vigtige hvid boks test metoder. Den verificerer yderligere, at systemet ikke skal acceptere input, betingelser og indekser uden for det angivne eller gyldige område.

Domænetestning er forskellig for hvert specifikt domæne, så du har brug for domænespecifik viden for at teste et softwaresystem.

Enklere praksis for domænetestning

Ved domænetest opdeler vi et domæne i underdomæner (ækvivalensklasser) og tester derefter ved hjælp af værdier fra hvert underdomæne. For eksempel, hvis et websted (domæne) er blevet givet til test, vil vi opdele webstedet i små portioner (underdomæne) for at lette testen.

Domæne kan involvere testning af en hvilken som helst inputvariabel eller en kombination af inputvariabler.

Praktikere studerer ofte de enkleste tilfælde af domænetestning under to andre navne, "grænsetestning" og "ækvivalensklasseanalyse".

Grænsetest - Grænseværdianalyse (BVA) er baseret på testning ved grænserne mellem partitioner. Vi vil teste både de gyldige og ugyldige inputværdier i partitionen/klasserne.

Ækvivalensklassetestning – Idéen bag denne teknik er at opdele (dvs. at opdele) et sæt af testbetingelser i grupper eller sæt, der kan betragtes som ens (dvs. systemet skal håndtere dem på samme måde), deraf "ækvivalensopdeling."

Den forenklede formular gælder for domænetestning –

  • Kun til test af inputvariabler
  • Kun når den testes hos systemniveau
  • Kun ved test en ad gangen
  • Kun når de er testet på en meget overfladisk måde

Det kan forenkles som nedenfor:

Variabel Gyldig klasseækvivalensklasse Ugyldig klasseækvivalensklasse Grænser og særlige tilfælde Noter
X 0-100 0
100
<0 -1
> 100 101

Forklaring:

  • Hvis et felt accepterer intervaller fra 0-100, bør feltet ikke acceptere -1 og 101, da de er ugyldige poster og uden for grænserne.
  • Feltet skal acceptere værdier som 0, 100 og ethvert tal derimellem.

Opbygning af tabeller som disse (i praksis)

  • For at opbygge en ækvivalensklasseanalyse over tid, skal du sætte informationen ind i et regneark. Start med at liste variabler. Tilføj information om dem, efterhånden som du får den.
  • Tabellen skal til sidst indeholde alle variabler. Det betyder alle inputvariabler, alle outputvariabler og alle mellemliggende variabler, som du kan observere.
  • I praksis er de fleste sådanne tabeller ufuldstændige. De bedste oplister alle variabler og tilføjer detaljer om de kritiske.

Domæneteststrategi

Når du tester domæner, skal du overveje følgende ting:

  • Hvilket domæne tester vi?
  • Hvordan grupperer man værdierne i klasser?
  • Hvilke værdier i klasserne skal testes?
  • Hvordan bestemmer man resultatet?

Hvilket domæne tester vi?

Ethvert domæne, vi tester, har en vis inputfunktionalitet og en outputfunktionalitet. Der vil være nogle inputvariabler, der skal indtastes, og det relevante output skal verificeres. Diagrammet nedenfor viser dette input-til-output-forhold.

Domæneteststrategi, der viser inputvariabler, der flyder ind i et domæne og producerer et output

Eksempel på domænetest

Overvej et enkelt inputtestscenarie:

C = a+b, hvor a og b er inputvariable og C er outputvariablen.

Her i ovenstående eksempel er der ikke behov for klassificering, og det er heller ikke nødvendigt med nogen kombination af variablerne.

Overvej nedenstående multiple input og passende outputscenarie:

Overvej en spiludstilling for børn. Der er planlagt seks konkurrencer, og billetterne skal gives i henhold til alder og køn. Billetuddelingen er et af de moduler, der skal testes for at sikre spiludstillingens samlede funktionalitet.

Ifølge scenariet fik vi seks scenarier baseret på alderen og konkurrencerne:

  • Drengen er >5 og <10 år og bør deltage i historiefortælling.
  • Pige >5 og <10 år skal deltage i tegnekonkurrencen.
  • Drengen er >10 og <=15 år og skal deltage i quizzen.
  • Pige >10 og <=15 år skal deltage i essayskrivning.
  • Alder <=5, både drenge og piger bør deltage i rimkonkurrencen.
  • Alder >15, både drenge og piger skal deltage i poesikonkurrencen.

Her vil inputtet være Alder og Køn, og derfor vil billetten til konkurrencen blive udstedt. I dette tilfælde er der opdeling af input, eller blot grupperingping af værdier, kommer ind i billedet.

Hvordan grupperer man værdierne i klasser?

At opdele nogle værdier betyder at opdele dem i ikke-overlappendeping delmængder.

Som vi diskuterede tidligere er der to typer partitionering:

  • Ækvivalensopdeling – Ækvivalenspartitionering er en softwaretestteknik, der opdeler inputdataene fra en softwareenhed i partitioner af ækvivalente data, hvorfra test tilfælde kan udledes. I princippet er testtilfælde designet til at dække hver partition mindst én gang.
  • Grænseværdianalyse – Grænseværdianalyse er en softwaretestteknik, hvor tests er designet til at inkludere repræsentanter for grænseværdier i et interval. Ideen kommer fra grænsen.

I ovenstående eksempel opdeler vi værdierne i delmængder. Vi opdeler alderen i nedenstående klasser:

  • Klasse 1: Børn i aldersgruppen 5 til 10 år
  • Klasse 2: Børn under 5 år
  • Klasse 3: Børn i aldersgruppen 10 til 15 år
  • Klasse 4: Børn over 15 år.

Hvilke værdier i klasserne skal testes?

De værdier, der indsamles til test, skal være randværdier:

  • Grænser er repræsentative for de ækvivalensklasser, vi sampler dem fra. De er mere tilbøjelige til at afsløre en fejl end andre klassemedlemmer, så de er bedre repræsentative.
  • Den bedste repræsentant for en ækvivalensklasse er en værdi i mellem intervallet.

Til ovenstående eksempel har vi følgende klasser, der skal testes:

For eksempel, for scenarie #1:

Klasse 1: Børn i aldersgruppen 5 til 10 år (alder >5 og <=10)

Grænseværdier:

  • Værdierne skal være lig med eller mindre end 10. Derfor bør alderen 10 medtages i denne klasse.
  • Værdier skal være større end 5. Derfor bør 5 år ikke inkluderes i denne klasse.
  • Værdierne skal være lig med eller mindre end 10. Derfor bør alder 11 ikke medtages i denne klasse.
  • Værdier skal være større end 5. Derfor bør 6-årsalderen inkluderes i denne klasse.

Ækvivalenspartitionværdier:

Ækvivalenspartition refererer til, når man kun skal teste én betingelse fra hver partition. I dette antager vi, at hvis én betingelse i en partition fungerer, så burde alle betingelserne fungere. På samme måde, hvis én betingelse i den partition ikke fungerer, antager vi, at ingen af ​​de andre betingelser vil fungere. For eksempel,

(Alder >5 og <=10)

Da værdierne fra 6 til 10 er gyldige, skal en af ​​værdierne blandt 6, 7, 8, 9 og 10 vælges. Derfor er den valgte alder "8" en gyldig inputalder for aldersgruppen mellem (Alder >5 og <=10). Denne type opdeling kaldes en ækvivalensopdeling.

Scenario Grænseværdier, der skal tages Ækvivalens opdelingsværdier
Dreng – Alder >5 og <=10 Input alder = 6
Input alder = 5
Input alder = 11
Input alder = 10
Input alder = 8
Pige – alder >5 og <=10 Input alder = 6
Input alder = 5
Input alder = 11
Input alder = 10
Input alder = 8
Dreng – Alder >10 og <=15 Input alder = 11
Input alder = 10
Input alder = 15
Input alder = 16
Input alder = 13
Pige – alder >10 og <=15 Input alder = 11
Input alder = 10
Input alder = 15
Input alder = 16
Input alder = 13
Alder <=5 Input alder = 4
Input alder = 5
Input alder = 3
Alder> 15 Input alder = 15
Input alder = 16
Input alder = 25

Hvordan afgør vi, om programmet bestod eller ikke bestod testen?

Om funktionaliteten kan bestås, afhænger det ikke kun af resultaterne af ovenstående scenarier. Det givne input og det forventede output vil give os resultaterne, og dette kræver domæneviden.

Bestemmelse af resultaterne af eksemplet: Skærmen nedenfor viser billetudskriften for hver kombination af alder og køn.

Ticketing-output for hver alders- og kønskombination, der bruges til at bestemme resultaterne af domænetestning

Hvis alle ovenstående testtilfælde derfor består, bestås domænet for udstedelse af billetter i konkurrencen. Hvis ikke, dumpes domænet.

Domæneteststruktur

Normalt følger testere nedenstående trin i domænetestning. Disse kan tilpasses eller springes over i henhold til vores testbehov.

  • Identificer de potentielt interessante variabler.
  • Identificer den eller de variabler, du kan analysere nu, og bestil dem (mindst til størst og omvendt).
  • Opret og identificer grænseværdier og ækvivalensklasseværdier som ovenfor.
  • Identificér sekundære dimensioner og analyser hver på en klassisk måde. (I ovenstående eksempel er køn den sekundære dimension.)
  • Identificer og test variabler, der holder resultater (outputvariable).
  • Evaluer, hvordan programmet bruger værdien af ​​denne variabel.
  • Identificer yderligere potentielt relaterede variabler til kombinationstestning, hvor test af beslutningstabeller hjælper.
  • Forestil dig risici, der ikke nødvendigvis har en åbenlys dimension.
  • Identificer og opstil uanalyserede variabler. Indsaml information til senere analyse.
  • Opsummer din analyse med en risiko/ækvivalens tabel.

Ofte Stillede Spørgsmål

Begge betegnelser forekommer i praksis. Klasser afledt af specifikationen gør det til en black box teknik; klasser afledt af koden gør den til en hvid boks. Selve analysen er identisk.

Den dækker fejlbehæftede kanter med meget få testtilfælde. Begrænsningerne er reelle: grænser er svære at fastlægge præcist, og hele arbejdsgange udføres aldrig, så den supplerer andre metoder snarere end at erstatte dem.

Ækvivalenspartitionering er et trin inden for domænetestning, som også ordner variabler, tilføjer grænseanalyse, håndterer sekundære dimensioner og outputvariabler og ender i en risikotabel.

De to overlapper hinanden uden at være identiske. Denne artikel dækker input-domæneanalyse, mens industriel brug som f.eks. test af sundhedsdomænet behovsprøvning med sektorviden, hvilket stadig er nødvendigt for at bedømme forventede resultater.

AI-assistenter læser et krav og foreslår kandidatækvivalensklasser, kantværdier og manglende ugyldige tilfælde. En tester bekræfter stadig de reelle grænser, da et forkert udledt interval giver et sikkert, men ubrugeligt testsæt.

GitHub Copilot skriver parametriserede testmetoder, når klasserne og kanterne vises i prompten eller koden. Ikke-angivne forretningsgrænser skal angives af testeren.

Enhver kombination vokser multiplikativt, så det er sjældent praktisk muligt. Analysér først hver variabel alene, og brug derefter parvis eller ortogonal matrix valg af risikable kombinationer.

Tester kun gyldige klasser og springer overping negativ test, ved at bruge en inklusive grænse, hvor reglen er eksklusiv, og fuldstændigt ignorere outputvariabler.

Opsummer dette indlæg med: