Wat is domeintesten bij softwaretesten? (met voorbeeld)

⚔ Slimme samenvatting

Domeintesten controleren een applicatie door deze de kleinst mogelijke bruikbare set invoerwaarden te geven, inclusief geldige, ongeldige en grenswaarden, en te bevestigen dat alleen waarden binnen het geaccepteerde bereik de gewenste uitvoer produceren.

  • šŸ”˜ Kernidee: Verdeel elk invoerdomein in equivalentieklassen en test ƩƩn representatieve waarde per klasse, niet elke mogelijke invoer.
  • ā˜‘ļø Focus op grenzen: Waarden aan de rand van een klasse, en net daarbuiten, vertonen veel vaker afwijkingen van ƩƩn punt dan waarden in het middenbereik.
  • āœ… Gecombineerde technieken: Equivalentieklassenanalyse bepaalt de groeppingGrenswaardeanalyse bepaalt welk lid van elke groep moet worden uitgevoerd.
  • 🧪 Uitgewerkt voorbeeld: Een ticketingmodule die wedstrijden indeelt op basis van leeftijd en geslacht, reduceert vier leeftijdsgroepen tot een korte, waardevolle testset.
  • šŸ“ˆ Kennis afhankelijkheid: Om te beoordelen of een output correct is, zijn bedrijfsregels nodig. De techniek is daarom geschikt voor kleine, goed begrepen stukjes logica.

Domeintesten in softwaretesten met equivalentieklassen en grenswaarden

Wat is domeintesten?

Domeintesten is een software testen Een proces waarbij de applicatie wordt getest door een minimaal aantal invoerwaarden te geven en de bijbehorende uitvoer te evalueren. Het primaire doel van domeintesten is om te controleren of de softwareapplicatie invoerwaarden binnen het acceptabele bereik accepteert en de vereiste uitvoer levert.

Het is een functioneel testen Een techniek waarbij de uitvoer van een systeem wordt getest met een minimaal aantal ingangen om ervoor te zorgen dat het systeem geen ongeldige en buiten het bereik liggende invoerwaarden accepteert. Het wordt ook beschouwd als een van de belangrijkste technieken. witte doos testen methoden. Het verifieert verder dat het systeem geen invoer, voorwaarden en indexen mag accepteren die buiten het gespecificeerde of geldige bereik vallen.

Domeintestinatie verschilt per domein, dus je hebt 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.

Het domein kan betrekking hebben op het testen van ƩƩn enkele invoervariabele of een combinatie van invoervariabelen.

Praktijkdeskundigen bestuderen de eenvoudigste gevallen van domeintesten vaak onder twee andere namen: "grenstesten" en "equivalentieklassenanalyse".

Grens testen - Grenswaarde analyse (BVA) is gebaseerd op testen op de grenzen tussen partities. We testen zowel de geldige als de ongeldige invoerwaarden in de partitie/klassen.

Equivalentieklassetesten – 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'.

Die vereenvoudigde vorm geldt voor domeintesten.

  • Alleen voor tests van invoervariabelen
  • Alleen wanneer getest bij de 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 waarden van 0 tot 100 accepteert, mag het veld geen -1 en 101 accepteren, aangezien dit ongeldige invoerwaarden zijn en buiten het bereik vallen.
  • Het veld moet waarden accepteren zoals 0, 100 en elk getal daartussenin.

Het bouwen van dergelijke tabellen (in de praktijk)

  • Om een ​​equivalentieklassenanalyse over tijd op te bouwen, zet je de gegevens in een spreadsheet. Begin met het opsommen van de variabelen. Voeg informatie over elke variabele toe naarmate je die verkrijgt.
  • De tabel moet uiteindelijk alle variabelen bevatten. Dat betekent alle invoervariabelen, alle uitvoervariabelen en alle tussenliggende variabelen die je kunt observeren.
  • In de praktijk zijn de meeste van dergelijke tabellen onvolledig. De beste tabellen bevatten een lijst van alle variabelen en voegen details toe voor de cruciale variabelen.

Domeinteststrategie

Bij het testen van een specifiek domein moet je 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 bepaalde invoerfunctionaliteit en een uitvoerfunctionaliteit. Er moeten invoervariabelen worden ingevoerd en de bijbehorende uitvoer moet worden gecontroleerd. Het onderstaande diagram illustreert deze relatie tussen invoer en uitvoer.

Domeinteststrategie die laat zien hoe invoervariabelen een domein binnenstromen en een uitvoer produceren.

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 niet nodig, noch is een combinatie van variabelen vereist.

Overweeg de onderstaande meerdere inputs en het juiste outputscenario:

Neem bijvoorbeeld een spellenbeurs voor kinderen. Er zijn zes wedstrijden gepland en er moeten kaartjes worden uitgedeeld op basis van de ingevoerde leeftijd en het geslacht. De kaartverkoop is een van de modules die getest moet worden voor de volledige functionaliteit van de spellenbeurs.

Volgens het scenario kregen we zes scenario's op basis van de leeftijd en de competities:

  • Jongens van 5 tot en met 10 jaar dienen deel te nemen aan het voorlezen.
  • Meisjes tussen de 5 en 10 jaar oud dienen deel te nemen aan de tekenwedstrijd.
  • Jongens tussen de 10 en 15 jaar moeten deelnemen aan de quiz.
  • Meisjes tussen de 10 en 15 jaar dienen deel te nemen aan de essaywedstrijd.
  • Voor kinderen tot en met 5 jaar kunnen zowel jongens als meisjes deelnemen aan de rijmpjeswedstrijd.
  • Vanaf 15 jaar moeten zowel jongens als meisjes deelnemen aan de poĆ«ziewedstrijd.

Hier worden leeftijd en geslacht als invoer gebruikt, waarna het ticket voor de wedstrijd wordt uitgegeven. Dit is een voorbeeld van het verdelen van de invoergegevens, of simpelweg groeperen.ping waarden spelen dan een rol.

Hoe kunnen de waarden in klassen worden gegroepeerd?

Het opdelen van bepaalde waarden betekent dat ze worden gesplitst in niet-overlappende delen.ping deelverzamelingen.

Zoals we eerder hebben besproken, zijn er twee soorten partities:

  • Gelijkwaardigheidspartitionering Equivalentiepartitionering is een softwaretesttechniek waarbij de invoergegevens van een software-eenheid worden opgedeeld in partities van equivalente gegevens. testgevallen kan worden afgeleid. In principe zijn testgevallen zo ontworpen dat ze elke partitie minstens ƩƩn keer dekken.
  • Grenswaarde analyse – Grenswaardeanalyse is een softwaretesttechniek waarbij tests zo worden ontworpen dat ze representatieve grenswaarden binnen een bepaald bereik omvatten. Het idee is afgeleid van de grens.

In het bovenstaande voorbeeld verdelen we de waarden in subsets. We verdelen de leeftijd in de volgende klassen:

  • Klasse 1: Kinderen in de leeftijdscategorie van 5 tot 10 jaar
  • Klasse 2: Kinderen jonger dan 5 jaar
  • Klasse 3: Kinderen in de leeftijdscategorie van 10 tot 15 jaar
  • Klasse 4: Kinderen in de leeftijdscategorie van 15 jaar en ouder.

Welke waarden van de te testen klassen?

De waarden die voor de test worden gekozen, moeten grenswaarden zijn:

  • Grenswaarden zijn representatief voor de equivalentieklassen waaruit we ze selecteren. Ze hebben een grotere kans om een ​​fout aan het licht te brengen dan andere leden van een klasse, waardoor ze betere representanten zijn.
  • 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 in de leeftijdscategorie 5 tot en met 10 jaar (Leeftijd >5 en <=10)

Grenswaarden:

  • De waarden moeten gelijk aan of kleiner dan 10 zijn. Daarom moet de leeftijd van 10 jaar in deze categorie worden opgenomen.
  • Waarden moeten groter zijn dan 5. Daarom mag leeftijd 5 niet in deze klasse worden opgenomen.
  • De waarden moeten gelijk aan of kleiner dan 10 zijn. Daarom hoort 11 jaar niet in deze categorie thuis.
  • Waarden moeten groter zijn dan 5. Daarom moet leeftijd 6 in deze klasse worden opgenomen.

Equivalentiepartitiewaarden:

Equivalentiepartitionering wordt gebruikt wanneer slechts ƩƩn voorwaarde uit elke partitie getest hoeft te worden. Hierbij wordt aangenomen dat als ƩƩn voorwaarde in een partitie werkt, alle voorwaarden ook werken. Op dezelfde manier geldt dat als ƩƩn voorwaarde in die partitie niet werkt, geen van de andere voorwaarden zal werken. Bijvoorbeeld:

(Leeftijd >5 en <=10)

Aangezien de waarden van 6 tot en met 10 geldig zijn, moet ƩƩn van de waarden 6, 7, 8, 9 en 10 worden gekozen. De geselecteerde leeftijd "8" is dus een geldige invoerleeftijd voor de leeftijdsgroep (leeftijd >5 en <=10). Dit soort indeling wordt een equivalentie-indeling 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 slagen van de functionaliteit hangt niet alleen af ​​van de resultaten van de bovenstaande scenario's. De gegeven invoer en de verwachte uitvoer bepalen het resultaat, en hiervoor is domeinkennis vereist.

Om de resultaten van het voorbeeld te bepalen: het onderstaande scherm toont de ticketuitvoer voor elke combinatie van leeftijd en geslacht.

De ticketuitvoer voor elke leeftijds- en geslachtscombinatie wordt gebruikt om de resultaten van domeintesten te bepalen.

Als alle bovenstaande testgevallen dus slagen, is het domein 'tickets uitgeven' in de competitie geslaagd. Zo niet, dan is het domein mislukt.

Domeinteststructuur

Testers volgen doorgaans de onderstaande stappen bij domeintesten. Deze stappen kunnen worden aangepast of overgeslagen, afhankelijk van 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 elk ervan op een klassieke manier. (In het bovenstaande voorbeeld is gender de secundaire dimensie.)
  • Identificeer en test variabelen die resultaten bevatten (outputvariabelen).
  • Evalueer hoe het programma de waarde van deze variabele gebruikt.
  • Identificeer aanvullende, mogelijk gerelateerde variabelen voor combinatietesten, waarbij beslissingstabeltesten helpt.
  • Stel je risico's voor die niet per se in een voor de hand liggende dimensie te plaatsen zijn.
  • Identificeer en lijst ongeanalyseerde variabelen. Verzamel informatie voor latere analyse.
  • Vat uw analyse samen met een risico-/equivalentietabel.

Veelgestelde vragen

Beide labels komen in de praktijk voor. Klassen die zijn afgeleid van de specificatie maken het tot een zwarte doos techniek; klassen die zijn afgeleid van de code maken er een whitebox-analyse van. De analyse zelf is identiek.

Het behandelt foutgevoelige randgevallen met zeer weinig testgevallen. De beperkingen zijn reƫel: grenzen zijn moeilijk precies vast te stellen en volledige workflows worden nooit doorlopen, waardoor het andere methoden aanvult in plaats van ze te vervangen.

Equivalentiepartitionering is een stap binnen domeintesten, waarbij ook variabelen worden geordend, grensanalyse wordt toegevoegd, secundaire dimensies en uitvoervariabelen worden behandeld en uiteindelijk een risicotabel wordt gegenereerd.

De twee overlappen elkaar, maar zijn niet identiek. Dit artikel behandelt inputdomeinanalyse, terwijl industrieel gebruik zoals testen in het gezondheidszorgdomein Dit betekent testen met sectorkennis, wat nog steeds nodig is om de verwachte resultaten te kunnen inschatten.

AI-assistenten lezen een vereiste en stellen kandidaat-equivalentieklassen, randwaarden en ontbrekende ongeldige gevallen voor. Een tester bevestigt echter nog steeds de werkelijke grenzen, aangezien een onjuist afgeleid bereik een betrouwbare maar nutteloze testset oplevert.

GitHub-copiloot Schrijft geparameteriseerde testmethoden zodra de klassen en randen in de prompt of de code verschijnen. Niet-gespecificeerde bedrijfslimieten moeten door de tester worden ingevuld.

Elke combinatie groeit multiplicatief, dus het is zelden praktisch. Analyseer eerst elke variabele afzonderlijk en gebruik vervolgens paarsgewijze vergelijkingen. orthogonale reeks selectie voor de risicovolle combinaties.

Test alleen geldige klassen en sla ze over.ping negatief testen, waarbij een inclusieve grens wordt gebruikt waar de regel exclusief is, en uitvoervariabelen volledig worden genegeerd.

Vat dit bericht samen met: