Equivalentieklassen Grenswaarden

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 11

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

Versie
1.0

Equivalentieklassen verdeling
en
grenswaarden analyseBlank

Auteur
Tarnaz Amarello
Datum
04-01-2016
Versie
1.0

page 2 of 11

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

Versie
1.0

INLEIDING
Doel
Het doel van de equivalentieklassen verdeling is het vinden van onderscheidende
gedragsklassen voor invoer- en/of uitvoerwaarden.
Het doel van de grenswaardenanalyse is het identificeren van foutgevoelige grenzen die
betrekking hebben op deze gedragsklassen.
Beide technieken worden toegepast om de effectiviteit en de efficintie van het testen te
verhogen. Dit kan worden bereikt door:
Beperken van het aantal benodigde testgevallen;
Vergroten van de kans om eventueel aanwezige fouten te vinden.
Toepassing
Zowel equivalentieklassen verdeling als grenswaardenanalyse kunnen worden toegepast voor het
testen van invoervalidaties, berekeningen, relatiecontroles en autorisatie. Afhankelijk van
de gebruikte testbasis kunnen ze als black- box of white-box testtechniek worden beschouwd
die in alle testsoorten kunnen worden toegepast. Beide technieken kunnen worden gebruikt voor
het testen van de eigenschappen geschiktheid en nauwkeurigheid. De equivalentieklassen
verdeling kan men daarnaast toepassen bij het testen van beveiliging.
Zowel equivalentieklassen verdeling als grenswaardenanalyse zijn basistechnieken. Ze kunnen
zelfstandig worden toegepast bij het opstellen van testgevallen. Daarnaast kan bij alle andere
technieken die in deze cursus worden behandeld gebruik worden gemaakt van deze
basistechnieken.
Testbasis
Alle mogelijke soorten testbasis kunnen de basis vormen voor deze technieken.
Foutsoort
De equivalentieklassen verdeling en de grenswaardenanalyse richten zich respectievelijk op het
vinden van de volgende soorten fouten:
Fouten in de structuur van de programmacode
Fouten in de primaire invoercontroles
Fouten in berekeningen
Fouten in relatiecontroles
Fouten in de toekenning van autorisatie

page 3 of 11

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

Versie
1.0

WERKWIJZE EQUIVALENTIEKLASSEN VERDELING


De equivalentieklassen verdeling kenmerkt zich door de volgende stappen:

Identificeer equivalentieklassen
Breng equivalentieklassen onder in een Tabel
Stel testgevallen op

Deze drie stappen zijn hieronder uitgewerkt.

2.1

Identificeer equivalentieklassen
Het doel van de eerste stap is het bepalen van equivalentieklassen. Een equivalentieklasse is een
groep van waarden die een gelijke behandeling binnen het systeem krijgt. Het kunnen zowel
invoerwaarden als uitvoerwaarden zijn.
Vaak worden de volgende twee klassen onderscheiden: geldige en ongeldige equivalentieklassen.
De termen geldig en ongeldig geven aan of de in te voeren waarden wl of niet zijn toegestaan.
Men moet de beschikbare uitgangsinformatie (bijvoorbeeld ontwerp, gebruikershandleiding)
analyseren op condities waarbij twee of meer equivalentieklassen een rol spelen. De volgende
situaties kunnen zich voordoen:
1. De in te voeren waarde moet worden gekozen uit een verzameling van toegestane
waarden.

Voorbeelden
een bestelling moet minimaal 10 artikelen bevatten
geldige equivalentieklasse:
aantal artikelen >= 10
ongeldige equivalentieklasse: aantal artikelen < 10

de aangevraagde verzekering is van het type A, B of C


geldige equivalentieklasse:
type = A, B of C
ongeldige equivalentieklasse: type <> A, B of C

het aantal te reserveren kaartjes is minimaal 2 en maximaal 4


geldige equivalentieklasse:
2 <= aantal kaartjes <= 4
ongeldige equivalentieklasse: aantal kaartjes < 2
ongeldige equivalentieklasse: aantal kaartjes > 4

2. De in te voeren waarde moet aan een expliciete eis voldoen. In deze situatie is er
sprake van 1 geldige equivalentieklasse en 1 ongeldige equivalentieklasse.

Voorbeeld
Het klantnummer mag niet met een 0 beginnen
geldige equivalentieklasse:
klantnummer begint niet met een 0
ongeldige equivalentieklasse: klantnummer begint met een 0

3. De in te voeren waarde moet aan een impliciete eis voldoen. Naast expliciete eisen
bestaan er eisen die zo vanzelfsprekend zijn dat ze soms niet in de
uitgangsdocumentatie staan vermeld. Deze impliciete eisen moeten wel worden
getest, want vaak blijken er hier fouten op te treden.

Voorbeeld
de maximale leeftijd van de deelnemers is 16 jaar
geldige equivalentieklasse:
leeftijd <= 16

page 4 of 11

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

Versie
1.0

ongeldige equivalentieklasse: leeftijd > 16


ongeldige equivalentieklasse: leeftijd < 0 (impliciete eis)
De invoerconditie die wordt genoemd in het bovenstaande voorbeeld zegt niets over het al dan
niet toestaan van een leeftijd van bijvoorbeeld 3 jaar; het is een impliciete eis dat een leeftijd
niet kleiner kan zijn dan 0. Maar bij het programmeren van een invoerconditie moeten impliciete
eisen expliciet gemaakt worden. Om te controleren of dit correct is uitgevoerd, nemen we de
derde equivalentieklasse op.
Als er sprake is van een minimale test worden meestal alleen goedsituaties uitgewerkt. Bij een
hogere gewenste dekking worden meestal vervolgens (in volgorde van waarschijnlijkheid) de
foutsituaties toegevoegd en daarna de impliciete eisen.
Deze laatste kunnen ook heel goed in een monkey test, checklist of snelle scan gebruikt
worden. De impliciete eisen leiden vaak tot fouten, daar ze zo vanzelfsprekend zijn dat ook de
bouwer er niet aan denkt. Dit betreffen zaken als:

2.2

Het
Het
Het
Het
Het
Het
Het

aanbieden van een niet bestaand bestand


aanbieden van een leeg bestand
aanbieden van een bestand met 1 record
niet invoeren van een waarde
invoeren van een nul
invoeren van negatieve waardes
invoeren van foutieve gegevens (letters waar cijfers of een datum verwacht wordt)

Breng equivalentieklassen onder in een Tabel


Nadat in stap 1 de equivalentieklassen zijn gedentificeerd, verwerken we het resultaat in een
Tabel.
voorbeeld

Conditie: Het aantal te reserveren kaartjes is minimaal 2 en maximaal 4. De in te


voeren waarde moet numeriek zijn.
De equivalentieklassen die in dit voorbeeld gedentificeerd kunnen worden, worden als volgt in
een Tabel verwerkt:
invoerconditi
e
aantal kaartjes

geldige
equivalentieklassen
2 <= aantal kaartjes <= 4

numeriek
decimalen

numeriek
geen decimalen

ongeldige
equivalentieklassen
aantal kaartjes < 2
aantal kaartjes > 4
aantal kaartjes <= 0
niet numeriek
decimalen

Tabel 1
Merk op dat er 2 impliciete eisen in Tabel 2.1 zijn opgenomen (welke?).

2.3

Stel testgevallen op
De laatste stap die we moeten uitvoeren is het opstellen van testgevallen. Bij het opstellen van
testgevallen resulteert iedere equivalentieklasse in 1 testgeval. De veronderstelling hierbij is dat
een bepaalde waarde uit een klasse representatief is voor alle waarden uit die klasse. Als de
gekozen waarde volgens verwachting wordt verwerkt, mogen we er vanuit gaan dat dit geldt
voor alle waarden die tot dezelfde equivalentieklasse behoren.

page 5 of 11

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

Versie
1.0

Bij het opstellen van testgevallen dient de Tabel die we zojuist hebben ingevuld als leidraad.
Eerst formuleren we 1 testgeval waarin alle geldige equivalentieklassen worden gecombineerd. In
ons geval:
Nr.
Testhandeling
1
reserveer 3 kaartjes
Tabel 2.1

Verwachte resultaat
Invoer wordt geaccepteerd

Voor de ongeldige equivalentieklassen geldt de volgende regel: 1 testgeval per


equivalentieklasse:
Nr.
2
3
4
5
6
Tabel

Testhandeling
reserveer 1 kaartje
reserveer 5 kaartjes
reserveer -3 kaartjes
reserveer @ kaartjes
reserveer 2,5 kaartjes
2.2

Verwachte resultaat
Invoer wordt niet geaccepteerd
Invoer wordt niet geaccepteerd
Invoer wordt niet geaccepteerd
Invoer wordt niet geaccepteerd
Invoer wordt niet geaccepteerd

De reden dat we ervoor kiezen om niet meer dan 1 ongeldige equivalentieklasse per testgeval op
te nemen, volgt uit het feit dat het om ongeldige klassen gaat. Wanneer de eisen die aan deze
klassen ten grondslag liggen juist zijn geprogrammeerd, resulteert het invoeren van waarden uit
deze ongeldige klassen tot foutmeldingen. Doorgaans blokkeert een programma het vervolg van
de verwerking nadat er een foutmelding is opgetreden. Als ongeldige klassen gecombineerd
worden betekent dit dat er niet kan worden gecontroleerd of de verwachte volgende foutmelding
ook zal optreden. We voorkomen dit probleem door per ongeldige equivalentieklasse 1 testgeval
op te stellen.

page 6 of 11

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

Versie
1.0

WERKWIJZE GRENSWAARDENANALYSE
Grenswaardenanalyse wordt uitgevoerd door middel van de volgende stappen:

Identificeer equivalentieklassen
Breng equivalentieklassen onder in een Tabel
Stel grenswaarden vast
Stel testgevallen op

De eerste twee stappen zijn eerder al bij de equivalentieklassenverdeling behandeld. In dit


hoofdstuk zullen daarom alleen de laatste 2 stappen worden uitgewerkt.

3.1

Stel grenswaarden vast


De veronderstelling dat iedere waarde uit een bepaalde equivalentieklasse representatief is voor
alle waarden uit die klasse, is meestal juist. In de praktijk blijkt echter dat eventueel in het
systeem aanwezige fouten opvallend vaak worden gevonden wanneer men iwaarden kiest die
zich op of rond de grenzen van de equivalentieklassen bevinden. Grenzen zijn nu eenmaal
foutgevoelig.
Grenswaardenanalyse is een techniek die hiermee rekening houdt. Door de testgevallen juist te
richten op de grenswaarden wordt de kans groter dat eventueel aanwezige fouten worden
gevonden.
Gaat het bij de techniek van equivalentieklassen met name om het gedrag binnen een klasse, de
grenswaardenanalyse richt zich op de grenzen tussen de klassen. De testwaarden dienen zodanig
te worden gekozen dat ze op en net naast de als grens gedefinieerde waarde liggen.
Nadat de gevonden equivalentieklassen in een Tabel zijn ondergebracht, worden de
grenswaarden vastgesteld.
Voorbeeld
invoerconditie: Een rotaryclub accepteert alleen personen waarvoor geldt dat het inkomen
minimaal 75000 euro bedraagt. In het invoerveld inkomen moeten 5 posities gevuld worden. Er
kunnen alleen hele getallen worden ingevoerd.

Deze invoerconditie is verwerkt in een Tabel waarin naast de geldige en ongeldige


equivalentieklassen ook de grenswaarden zijn weergegeven. Deze grenswaarden vinden we
door de grens van de equivalentieklassen te identificeren, en vervolgens de waarden te
kiezen die op, net onder en net boven de grens liggen. Zie Tabel 3.1 hieronder:
Invoerconditie
inkomen

geldige
equivalentieklassen
inkomen >= 75000

aantal
posities
numeriek
integer
Tabel 3

ongeldige
equivalentieklassen
inkomen < 75000

grenswaarden

aantal = 5

Grenswaarden
75000
75001
5

aantal <> 5

numeriek
integer

n.v.t
n.v.t

niet numeriek
decimalen

6
n.v.t.
n.v.t.

74999

Men kan zich afvragen waarom er voor de eis inkomen >= 75000 drie grenswaarden worden
gekozen. Strikt genomen kan men volstaan met 2 grenswaarden: 1 grenswaarde die aan de eis
voldoet (bijvoorbeeld 75000), en 1 grenswaarde die niet aan de eis voldoet (bijvoorbeeld 74999).

page 7 of 11

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

Versie
1.0

Wanneer men volstaat met het kiezen van 2 grenswaarden, bestaat de kans dat eventuele
programmeerfouten niet gedetecteerd worden. We zullen dit proberen uit te leggen aan de hand
van 2 hypothetische situaties:

Er is per ongeluk geprogrammeerd: inkomen > 75000


Wanneer we kiezen voor de grenswaarden 75000 en 74999, zal deze fout gevonden
worden. De waarde 75000 zal ten onrechte niet geaccepteerd worden.
Wanneer we kiezen voor de grenswaarden 75001 en 74999, zal deze fout niet gevonden
worden. De waarde 75001 wordt volgens verwachting geaccepteerd.

Er is per ongeluk geprogrammeerd: inkomen = 75000


Wanneer we kiezen voor de grenswaarden 75000 en 74999, zal deze fout niet gevonden
worden. De waarde 75000 wordt volgens verwachting geaccepteerd.
Wanneer we kiezen voor de grenswaarden 75001 en 74999, zal deze fout gevonden
worden. De waarde 75001 zal ten onrechte niet geaccepteerd worden.

Uit bovenstaande situaties blijkt dat de grenswaarden 75000 en 75001 beide opgenomen moeten
worden in de testset om meer zekerheid te verkrijgen.

3.2

Stel testgevallen op
Op basis van de grenswaarden in Tabel 3.1 kunnen we testgevallen gaan opstellen. De eerste
regel die we hierbij toepassen is: combineer grenswaarden uit geldige equivalentieklassen zoveel
mogelijk in 1 testgeval:
Nr.
1
2
Tabel

Testhandeling
voer inkomen in: 75000
voer inkomen in: 75001
4.1

Verwachte resultaat
persoon wordt geaccepteerd
persoon wordt geaccepteerd

Deze twee testgevallen dekken de geldige equivalentieklassen met toepassing van grenswaarden
volledig af.
Vervolgens gaan we voor iedere grenswaarde uit de ongeldige equivalentieklassen 1 testgeval
opstellen:
Nr.
3
4
5
Tabel

Testhandeling
voer inkomen in: 74999
voer inkomen in: 9999
voer inkomen in: 100000
4.2

Verwachte resultaat
persoon wordt niet geaccepteerd
invoer wordt niet geaccepteerd
invoer wordt niet geaccepteerd

Voor ongeldige equivalentieklassen zonder grenswaarden geldt de regel:1 testgeval per


equivalentieklasse:
Nr.
6
7
Tabel

Testhandeling
voer inkomen in: 90000x
voer inkomen in: 9000,5
4.3

Verwachte resultaat
invoer wordt niet geaccepteerd
invoer wordt niet geaccepteerd

Tot nu toe hebben we alleen Voorbeelden getoond waarin sprake was van invoercondities.
Grenswaardenanalyse (en daarmee ook equivalentieklassen verdeling) kan ook worden toegepast
om testgevallen af te leiden voor uitvoercondities. Wanneer er bijvoorbeeld is gespecificeerd
dat er op een bestelformulier maximaal 40 regels per pagina mogen worden afgedrukt, hebben
we te maken met een uitvoerconditie. De grenswaarden zijn in dit geval 39, 40 en 41.

page 8 of 11

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

Versie
1.0

Wanneer men voor de gevonden grenswaarden testgevallen gaat opstellen, zal men moeten
achterhalen welke invoer benodigd is om de grenswaarden te testen. In dit geval gaan we er van
uit dat op de eerste pagina van het bestelformulier 20 regels algemene informatie staan. Elke
order beslaat vervolgens 1 regel. Hiermee kunnen we de volgende testgevallen opstellen:
Nr.
1
2
3

Testhandeling
voer 19 orders in
voer 20 orders in
voer 21 orders in

Verwachte resultaat
39 regels worden afgedrukt op pagina 1
40 regels worden afgedrukt op pagina 1
40 regels worden afgedrukt op pagina 1
1 regel wordt afgedrukt op pagina 2

Tabel 5

page 9 of 11

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

Versie
1.0

VOORBEELD
In dit hoofdstuk wordt een volledig uitgewerkt voorbeeld gedemonstreerd, waarin zowel
equivalentieklassen verdeling als grenswaardenanalyse wordt toegepast.
In dit voorbeeld wordt een proces beschreven dat de postcode controleert.
Opdracht: controleren postcode
Bezoekers van de website van TravelSite kunnen on-line vliegreizen boeken. Bezoekers die zich
nog niet eerder hebben aangemeld, moeten hun persoonlijke gegevens invoeren. De ingevoerde
postcode wordt gecontroleerd. Hierbij gelden de volgende regels:

de postcode bestaat uit 4 cijfers, gevolgd door 2 letters


alle 6 posities moeten zijn gevuld
de postcode mag niet met een 0 beginnen
klanten met een postcode waarvan de som van de cijfers niet kleiner is dan 16 en niet groter
dan 18, krijgen een welkomstgeschenk

De opdracht is: stel een set testgevallen op, gebaseerd op het toepassen van equivalentieklassen
verdeling en grenswaardenanalyse. We zullen de verschillende stappen hieronder behandelen.

4.1

Identificeer equivalentieklassen
De

geldige equivalentieklassen die we kunnen identificeren zijn de volgende:


1e 4 posities zijn numeriek
laatste 2 posities zijn letters
6 posities zijn gevuld
postcode begint niet met een 0
16 <= som van de cijfers <= 18
som van de cijfers < 16
som van de cijfers > 18

De

ongeldige equivalentieklassen zijn als volgt te formuleren:


niet 1e 4 posities zijn numeriek
niet laatste 2 posities zijn letters
aantal posities gevuld <> 6
postcode begint met een 0

Alle gedentificeerde equivalentieklassen zijn gebaseerd op expliciete condities. Er zijn geen


impliciete condities onderscheiden.

4.2

Breng equivalentieklassen onder in een Tabel en stel grenswaarden vast


In de volgende stap worden de gevonden equivalentieklassen in een Tabel gezet. We hebben
direct de van toepassing zijnde grenswaarden ingevuld.

invoerconditi
e

geldige
equivalentieklassen

Grens
waar
den

page 10 of 11

ongeldige
equivalentieklassen

Grenswaarden

Onderwerp

Datum

Equivalentieklassen en grenswaarden

04-01-2016

1e 4 posities
laatste 2
posities
aantal posities

1e 4 posities numeriek
laatste 2 posities letters

n.v.t

6 posities zijn gevuld

1e positie
som van de
cijfers

Eerste positie 0
16 <= som van de
cijfers <= 18

n.v.t.
16
17
18
15
19

som van de cijfers < 16


som van de cijfers > 18

n.v.t

niet 1e 4 posities numeriek


laatste 2 posities niet
letters
meer dan 6 posities gevuld
minder dan 6 posities
gevuld
Eerste positie = 0

Versie
1.0

n.v.t
n.v.t
7
5
0

Tabel 6
4.3

Stel testgevallen op
De laatste stap omvat het onderbrengen van de gekozen grenswaarden in testgevallen.
Equivalentieklassen zonder grenswaarden worden eveneens in testgevallen ondergebracht.
We beginnen met de geldige equivalentieklassen. De grenswaarden 16, 17 en 18 (behorend bij
de klasse 16 <= som van de cijfers <= 18) kunnen we verwerken in de volgende 3 testgevallen.
Let erop dat de in te voeren postcodes ook binnen de overige geldige equivalentieklassen
moeten liggen.
Nr.
1

Testhandeling
voer postcode in: 1915AA

voer postcode in: 2933BC

voer postcode in: 7362ZS

Verwachte resultaat
invoer wordt geaccepteerd
klant krijgt een welkomstgeschenk
invoer wordt geaccepteerd
klant krijgt een welkomstgeschenk
invoer wordt geaccepteerd
klant krijgt een welkomstgeschenk

Tabel 7.1
Voor de resterende geldige equivalentieklassen hadden we 2 grenswaarden (som is 15, som is
19) vastgesteld. Deze verwerken we in 2 aparte testgevallen:
Nr.
4
5

Testhandeling
voer postcode in: 4344GX
voer postcode in: 1981DL

Verwachte resultaat
invoer wordt geaccepteerd
invoer wordt geaccepteerd

Tabel 7.2
Iedere ongeldige equivalentieklassen verwerken we in 1 testgeval. In de laatste 3 testgevallen
worden grenswaarden getest.
Nr.
6
7
8
9
10

Testhandeling
voer postcode in:
voer postcode in:
voer postcode in:
voer postcode in:
voer postcode in:

77x2DL
1991!L
19919GX
1991D
0991DL

Verwachte resultaat
invoer wordt niet geaccepteerd
invoer wordt niet geaccepteerd
invoer wordt niet geaccepteerd
invoer wordt niet geaccepteerd
invoer wordt niet geaccepteerd

Tabel 7.3

page 11 of 11

You might also like