Professional Documents
Culture Documents
Equivalentieklassen Grenswaarden
Equivalentieklassen Grenswaarden
Equivalentieklassen Grenswaarden
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
Identificeer equivalentieklassen
Breng equivalentieklassen onder in een Tabel
Stel testgevallen op
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
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
2.2
Het
Het
Het
Het
Het
Het
Het
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
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
3.1
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:
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
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 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
De
4.2
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
1e positie
som van de
cijfers
Eerste positie 0
16 <= som van de
cijfers <= 18
n.v.t.
16
17
18
15
19
n.v.t
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
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