Wat is domeintesten bij softwaretesten? (met voorbeeld)
Wat is domeintesten?
Domein testen is een Software testen proces waarin de applicatie wordt getest door een minimum aantal inputs op te geven en de juiste outputs te evalueren. Het primaire doel van domeintesten is om te controleren of de softwareapplicatie invoer binnen het acceptabele bereik accepteert en de vereiste uitvoer levert.
Het is een Functioneel testen techniek waarbij de uitvoer van een systeem wordt getest met een minimaal aantal invoer om ervoor te zorgen dat het systeem geen ongeldige invoerwaarden accepteert die buiten het bereik vallen. Het is een van de belangrijkste Wit Box Testen methoden. Het verifieert ook dat het systeem geen invoer, voorwaarden en indices mag accepteren die buiten het gespecificeerde of geldige bereik liggen.
Domeintesten verschillen per specifiek domein, dus u heeft domeinspecifieke kennis nodig om een softwaresysteem te testen.
Eenvoudigere praktijk van domeintesten
Bij domeintesten verdelen we een domein in subdomeinen (equivalentieklassen) en testen we vervolgens met behulp van waarden uit elk subdomein. Als een website (domein) bijvoorbeeld ter test is opgegeven, verdelen we de website in kleine delen (subdomein) om het testen te vergemakkelijken.
Domein kan het testen van een invoervariabele of een combinatie van invoervariabelen inhouden.
Beoefenaars bestuderen vaak de eenvoudigste gevallen van domeintesten met minder dan twee andere namen, ‘grenstesten’ en ‘equivalentieklasse-analyse’.
Grens testen – Grenswaardeanalyse (BVA) is gebaseerd op testen op de grenzen tussen partities. We zullen zowel de geldige als de ongeldige invoerwaarden in de partitie/klassen testen.
Equivalentieklasse testen – Het idee achter deze techniek is het verdelen (dat wil zeggen: verdelen) van een reeks testomstandigheden in groepen of reeksen die als hetzelfde kunnen worden beschouwd (dat wil zeggen dat het systeem ze op gelijkwaardige wijze moet behandelen), vandaar 'equivalentiepartitionering'.
Dat vereenvoudigde formulier is van toepassing op domeintesten –
- Alleen voor tests van invoervariabelen
- Alleen wanneer getest op systeemniveau
- Alleen als je ze één voor één test
- Alleen als het op een zeer oppervlakkige manier wordt getest
Het kan worden vereenvoudigd zoals hieronder:
Veranderlijk | Geldige klasse-equivalentieklasse | Ongeldige klasse-equivalentieklasse | Grenzen en speciale gevallen | Notes |
---|---|---|---|---|
X | 0-100 | 0 | ||
100 | ||||
<0 | -1 | |||
> 100 | 101 |
Uitleg:
- Als een veld bereiken van 0-100 accepteert, mag het veld -1 en 101 niet accepteren, omdat dit ongeldige gegevens zijn en de grenzen overschrijden.
- Het veld moet waarden accepteren zoals 0,100 en elk getal daartussen.
Zo'n tafel bouwen (in de praktijk)
- Om in de loop van de tijd een gelijkwaardigheidsklasse-analyse op te bouwen, plaatst u de informatie in een spreadsheet. Begin met het opsommen van variabelen. Voeg informatie over hen toe zodra u deze verkrijgt.
- De tabel moet uiteindelijk alle variabelen bevatten. Dit betekent alle invoervariabelen, alle uitvoervariabelen en alle tussenvariabelen die u kunt waarnemen.
- In de praktijk zijn de meeste tabellen die ik heb gezien onvolledig. De beste die we hebben gezien, vermelden alle variabelen en voegen details toe voor kritische variabelen.
Domeinteststrategie
Bij het testen van domeinen moet u rekening houden met de volgende zaken:
- Welk domein testen we?
- Hoe kunnen de waarden in klassen worden gegroepeerd?
- Welke waarden van de te testen klassen?
- Hoe het resultaat bepalen?
Welk domein testen we?
Elk domein dat we testen heeft een invoerfunctionaliteit en een uitvoerfunctionaliteit. Er moeten enkele invoervariabelen worden ingevoerd en de juiste uitvoer moet worden geverifieerd.
Voorbeeld van domeintesten
- Overweeg een testscenario met één invoer:
C = a+b, waarbij a en b invoervariabelen zijn en C de uitvoervariabele.
In het bovenstaande voorbeeld is classificatie of combinatie van de variabelen niet nodig.
- Overweeg de onderstaande meerdere inputs en het juiste outputscenario:
Overweeg een spellententoonstelling voor kinderen, er zijn 6 competities uitgezet en kaartjes moeten worden verstrekt op basis van de leeftijd en het geslacht. De ticketing is een van de modules die moet worden getest voor de volledige functionaliteit van de Games-tentoonstelling.
Volgens het scenario kregen we zes scenario's op basis van de leeftijd en de competities:
- Leeftijd> 5 en <10, jongen moet deelnemen aan storytelling.
- Meisjes van 5 en 10 jaar oud moeten meedoen aan de tekenwedstrijd.
- Leeftijd >10 en <15, jongen moet deelnemen aan de quiz.
- Leeftijd> 10 en <15, meisje moet deelnemen aan het schrijven van essays.
- Leeftijd<5, zowel jongens als meisjes moeten deelnemen aan de Rhymes-competitie.
- Vanaf 15 jaar moeten zowel jongens als meisjes deelnemen aan de poëziewedstrijd.
Hier is de invoer Leeftijd en Geslacht en daarom wordt het ticket voor de wedstrijd uitgegeven. Dit geval van partitie van invoer of eenvoudigweg groepering van waarden komt in beeld.
Hoe kunnen de waarden in klassen worden gegroepeerd?
Het verdelen van sommige waarden betekent het opsplitsen in niet-overlappende subsets.
Zoals we eerder hebben besproken, zijn er twee soorten partities:
- Gelijkwaardigheidspartitionering – Equivalentiepartitionering is een software testen techniek die de invoergegevens van een software-eenheid verdeelt in partities van gelijkwaardige gegevens waaruit testgevallen kunnen worden afgeleid. In principe zijn testgevallen zo ontworpen dat elke partitie minimaal één keer wordt afgedekt.
- Grenswaardeanalyse – Grenswaardeanalyse is een software testen techniek waarbij tests zijn ontworpen om vertegenwoordigers van grenswaarden binnen een bereik op te nemen. Het idee komt van de grens.
Voor het bovenstaande voorbeeld verdelen we de waarden in een subset of de subset. We verdelen de leeftijd in de volgende klassen:
- Klasse 1: Kinderen met leeftijdsgroep 5 tot 10
- Klasse 2: Kinderen met een leeftijdsgroep jonger dan 5 jaar
- Klasse 3: Kinderen met een leeftijdsgroep van 10 tot 15 jaar
- Klasse 4: Kinderen met een leeftijdsgroep groter dan 15 jaar.
Welke waarden van de te testen klassen?
De waarden die voor het testen worden opgehaald, moeten grenswaarden zijn:
- Grenzen zijn vertegenwoordigers van de equivalentieklassen waaruit we ze bemonsteren. De kans is groter dat zij een fout aan het licht brengen dan andere klasleden, en daarom zijn zij betere vertegenwoordigers.
- De beste vertegenwoordiger van een equivalentieklasse is een waarde tussen dit bereik.
Voor het bovenstaande voorbeeld moeten de volgende klassen worden getest:
Bijvoorbeeld voor scenario #1:
- Klasse 1: Kinderen uit de leeftijdsgroep 5 tot 10 jaar (Leeftijd >5 en <=10)
Grenswaarden:
- Waarden moeten gelijk zijn aan of kleiner zijn dan 10. Daarom moet de leeftijd van 10 jaar in deze klasse worden opgenomen.
- Waarden moeten groter zijn dan 5. Daarom mag leeftijd 5 niet in deze klasse worden opgenomen.
- Waarden moeten gelijk zijn aan of kleiner zijn dan 10. Daarom mag de leeftijd van 11 jaar niet in deze klasse worden opgenomen.
- Waarden moeten groter zijn dan 5. Daarom moet leeftijd 6 in deze klasse worden opgenomen.
Equivalentiepartitie Waarden:
Er wordt verwezen naar een gelijkwaardigheidspartitie als men slechts één voorwaarde van elke partitie hoeft te testen. Hierbij gaan we ervan uit dat als één voorwaarde in een partitie werkt, alle voorwaarden ook zouden moeten werken. Op dezelfde manier, als een voorwaarde in die partitie niet werkt, gaan we ervan uit dat geen van de andere voorwaarden zal werken. Bijvoorbeeld,
(Leeftijd >5 en <=10)
Omdat de waarden van 6 tot en met 10 geldig zijn, moet een van de waarden tussen 6,7,8,9 en 10 worden opgepakt. Daarom is de geselecteerde leeftijd “8” een geldige invoerleeftijd voor de leeftijdsgroep tussen (Leeftijd >5 en <=10). Dit soort partitie wordt equivalentiepartitie genoemd.
Scenario | Grenswaarden die moeten worden aangehouden | Equivalentiepartitioneringswaarden |
---|---|---|
Jongen – Leeftijd >5 en <=10 | Invoer leeftijd = 6 Invoer leeftijd = 5 Invoer leeftijd = 11 Invoer leeftijd = 10 |
Invoer leeftijd = 8 |
Meisje – Leeftijd >5 en <=10 | Invoer leeftijd = 6 Invoer leeftijd = 5 Invoer leeftijd = 11 Invoer leeftijd = 10 |
Invoer leeftijd = 8 |
Jongen – Leeftijd >10 en <=15 | Invoer leeftijd = 11 Invoer leeftijd = 10 Invoer leeftijd = 15 Invoer leeftijd = 16 |
Invoer leeftijd = 13 |
Meisje – Leeftijd >10 en <=15 | Invoer leeftijd = 11 Invoer leeftijd = 10 Invoer leeftijd = 15 Invoer leeftijd = 16 |
Invoer leeftijd = 13 |
Leeftijd<=5 | Invoer leeftijd = 4 Invoer leeftijd = 5 |
Invoer leeftijd = 3 |
Leeftijd> 15 | Invoer leeftijd = 15 Invoer leeftijd = 16 |
Invoer leeftijd = 25 |
Hoe bepalen we of het programma de test heeft doorstaan of niet heeft gehaald?
Het doorgeven van de functionaliteit hangt niet alleen af van de resultaten van de bovenstaande scenario's. De gegeven input en de verwachte output zullen ons de resultaten opleveren en dit vereist domeinkennis.
Bepalen van de resultaten van het voorbeeld:
Dus als alle testgevallen van het bovenstaande slagen, wordt het domein van het uitgeven van kaartjes voor de competitie gepasseerd. Als dit niet het geval is, wordt het domein mislukt.
Domeinteststructuur
Meestal volgen testers de onderstaande stappen bij het testen van een domein. Deze kunnen worden aangepast/overgeslagen volgens onze testbehoeften.
- Identificeer de potentieel interessante variabelen.
- Identificeer de variabele(n) die u nu kunt analyseren en rangschik ze (van klein naar groot en omgekeerd).
- Creëer en identificeer grenswaarden en gelijkwaardigheidsklassewaarden zoals hierboven.
- Identificeer secundaire dimensies en analyseer ze allemaal op een klassieke manier. (In het bovenstaande voorbeeld is Geslacht de secundaire dimensie).
- Identificeer en test variabelen die resultaten bevatten (outputvariabelen).
- Evalueer hoe het programma de waarde van deze variabele gebruikt.
- Identificeer aanvullende potentieel gerelateerde variabelen voor combinatietests.
- Stel je risico's voor die niet noodzakelijkerwijs in een voor de hand liggende dimensie passen.
- Identificeer en lijst ongeanalyseerde variabelen. Verzamel informatie voor latere analyse.
- Vat uw analyse samen met een risico-/equivalentietabel.
Samenvatting
Domeintesten, zoals hierboven beschreven, vereisen kennis van het leveren van de juiste input om de gewenste output te bereiken. Het is dus alleen mogelijk om het voor kleine stukjes code te gebruiken.