05.01.2013 Views

QRC: Beslissing QRC: Beslissingstabel RC ... - Agile op Maat

QRC: Beslissing QRC: Beslissingstabel RC ... - Agile op Maat

QRC: Beslissing QRC: Beslissingstabel RC ... - Agile op Maat

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Testen3.0 TM<br />

Definitie:<br />

Het Het samenstellen samenstellen van van van testgevallen testgevallen <strong>op</strong> <strong>op</strong> basis basis van van beslissingen beslissingen uit uit uit het het systeem, systeem, waarbij waarbij de<br />

de<br />

volledigheid volledigheid en en en juistheid juistheid juistheid van van van de de verwerking verwerking hoog hoog is.<br />

is.<br />

Doel:<br />

Het Het verhogen verhogen van van van de de de volledigheid volledigheid volledigheid en en en de de juistheid juistheid van van een een verwerking.<br />

verwerking.<br />

Principe:<br />

Door Door de de de testgevallen testgevallen testgevallen te te te baseren baseren baseren <strong>op</strong> <strong>op</strong> <strong>op</strong> de de de logica logica logica van van van enkelvoudige enkelvoudige enkelvoudige beslissingen binnen binnen het<br />

het<br />

systeem, systeem, worden worden worden worden de de de de functionaliteiten functionaliteiten functionaliteiten van van het het systeem systeem systeem gecontroleerd. gecontroleerd. De De diepgang diepgang en en het<br />

het<br />

aantal aantal testgevallen testgevallen testgevallen is is is daarbij daarbij daarbij afhankelijk afhankelijk van van de de testmaat testmaat en en de de de detaillerings<br />

detailleringsmaat.<br />

detaillerings<br />

detaillerings<br />

maat.<br />

Toepasbaarheid: • Unittest<br />

• Integratietest<br />

• Systeemtest<br />

• Functionele acceptatietest<br />

acceptatietest<br />

Aanpak:<br />

Stap 1. Bepaal Bepaal de de de triggers triggers triggers en en en de de de enkelvoudige enkelvoudige enkelvoudige condities. condities. condities. Zet Zet deze deze in in in kwadrant kwadrant kwadrant A A (zie (zie onder).<br />

onder).<br />

onder).<br />

Stap 2. Definieer de bijbehorende bijbehorende acties. acties. Zet Zet deze deze in in kwadrant B.<br />

Stap 3. Werk kwadrant C ui uit t – laat laat iedere iedere conditie conditie conditie één één één keer keer waar waar en één keer onwaar onwaar zijn.<br />

zijn.<br />

zijn.<br />

Stap 4. Vul Vul kwadrant kwadrant kwadrant D D in. in. Geef Geef Geef Geef aan aan aan aan welke welke welke welke beslissingen beslissingen beslissingen beslissingen onmogelijk onmogelijk onmogelijk zijn zijn zijn en en voeg voeg voeg dubbele dubbele dubbele testgevallen testgevallen testgevallen samen.<br />

samen.<br />

samen.<br />

Stap 5. Beschrijf zo zo nodig nodig de de testgevallen testgevallen in in realistische realistische situaties.<br />

Figuur Figuur Figuur Figuur 32 32 32 32 32 Een Een Een beslissingstabe<br />

beslissingstabel beslissingstabe<br />

beslissingstabe<br />

beslissingstabe l l l l l l l l l l l wordt wordt wordt wordt wordt wordt wordt uitgewerkt uitgewerkt uitgewerkt uitgewerkt uitgewerkt uitgewerkt uitgewerkt uitgewerkt in in in in in kwadranten<br />

kwadranten<br />

kwadranten<br />

kwadranten<br />

kwadranten<br />

Voorbeeld: Uitverko<strong>op</strong> kledingzaak<br />

Uitverko<strong>op</strong> Uitverko<strong>op</strong> is is is alleen alleen alleen van van van toepassing toepassing toepassing toepassing <strong>op</strong> <strong>op</strong> <strong>op</strong> artikelen artikelen artikelen artikelen die die die langer langer langer dan dan dan drie drie drie maanden maanden maanden in in voorraad voorraad voorraad zijn. zijn. Op Op Op broeken broeken broeken krijgt krijgt krijgt men<br />

men<br />

men<br />

35%, %, <strong>op</strong> overhemden 20% 20% en en <strong>op</strong> <strong>op</strong> sokken sokken 50% 50% korting.<br />

korting.<br />

Logisch testgeval<br />

Trigger = = Artikel in voorraad<br />

B1: Meer Meer dan drie maanden in in voorraad J J J J N N N N<br />

B2: Artikel = broek<br />

B3: Artikel Artikel = overhemd<br />

A1: Geen korting<br />

A2: Korting = 335%<br />

A3: Korting = 20%<br />

A4: Korting = 50%<br />

A5: Artikel = sokken<br />

Stap 4: Testgeval Testgeval Testgeval Testgeval Testgeval Testgeval Testgeval Testgeval Testgeval 2 2 2 2 2 2 2 2 2 is is is is is is is is is gelijk gelijk gelijk gelijk gelijk gelijk gelijk gelijk gelijk aan aan aan aan aan aan aan aan aan testgeval testgeval testgeval testgeval testgeval testgeval testgeval testgeval testgeval 1 1 1 1 1 1 1 1 1 omdat omdat omdat omdat omdat omdat omdat omdat omdat bij bij bij bij bij bij bij bij bij conditie conditie conditie conditie conditie conditie conditie conditie conditie “Artikel “Artikel “Artikel “Artikel “Artikel “Artikel “Artikel “Artikel “Artikel = = = = = = = = = broek” broek” broek” broek” broek” broek” broek” broek” broek” het het het het het het het het het niet niet niet niet niet niet niet niet niet uitmaakt uitmaakt uitmaakt uitmaakt uitmaakt uitmaakt uitmaakt uitmaakt uitmaakt of of of of of of of of of<br />

“Artikel “Artikel “Artikel “Artikel “Artikel “Artikel = = = = = = overhemd” overhemd” overhemd” overhemd” overhemd” overhemd” waar waar waar waar waar waar of of of of of of onwaar onwaar onwaar onwaar onwaar onwaar is. is. is. is. is. is. Testgeval Testgeval Testgeval Testgeval Testgeval Testgeval 6, 6, 6, 6, 6, 6, 7 7 7 7 7 7 en en en en en en 8 8 8 8 8 8 zijn zijn zijn zijn zijn zijn ge gelijk ge ge ge gelijk<br />

lijk lijk aan aan aan aan testgeval testgeval testgeval testgeval 5 5 5 5 omdat omdat omdat omdat het het het het<br />

niet niet niet niet niet niet niet uitmaakt uitmaakt uitmaakt uitmaakt uitmaakt uitmaakt uitmaakt welke welke welke welke welke welke welke waarde waarde waarde waarde waarde waarde waarde het het het het het het het artikel artikel artikel artikel artikel artikel artikel heeft heeft heeft heeft heeft heeft heeft zodra zodra zodra zodra zodra zodra zodra deze deze deze deze deze deze deze niet niet niet niet niet niet niet langer langer langer langer langer langer langer <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> voorraad voorraad voorraad voorraad voorraad voorraad voorraad is. is. is. is. is. is. is.<br />

Stap 5: Beschrijf de testgevallen testgevallen in in realistische realistische situaties<br />

situaties<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Beslissing</strong>stabel<br />

<strong>Beslissing</strong>stabel<br />

<strong>Beslissing</strong>stabel<br />

<strong>Beslissing</strong>stabel<br />

<strong>Beslissing</strong>stabel<br />

<strong>Beslissing</strong>stabel<br />

1 2 3 4 5<br />

J J J J J<br />

J J N N J<br />

J N J N J<br />

x x<br />

Testgeval 1: Een Een Een artikel artikel is is meer meer dan dan drie drie drie maanden maanden maanden in in in voorraad voorraad voorraad en en het het artikel artikel<br />

is een broek.<br />

Actie: korting = 335%<br />

%<br />

Testgeval 3: Een Een Een artikel artikel artikel is is meer meer meer dan dan dan drie drie drie drie maanden maanden maanden in in in voorraad voorraad voorraad en en het het artikel artikel artikel is is is een een overhemd.<br />

overhemd.<br />

Actie: Actie: korting = = 20%<br />

20%<br />

Testgeval 4: Een Een Een artikel artikel artikel is is meer meer meer dan dan dan drie drie drie drie maanden maanden maanden in in in voorraad voorraad voorraad en en het het artikel artikel artikel is is is geen geen broek broek en<br />

en<br />

en<br />

geen overhemd. ove Actie: Actie: artikel = sokken, sokken, korting korting = = 50%<br />

50%<br />

Testgeval 5: Een Een artikel artikel is minder minder dan drie drie maanden maanden in in voorraad.<br />

voorraad.<br />

x<br />

x<br />

x<br />

Pagina 1 van 19<br />

x<br />

6 7 8<br />

J J J<br />

J N N<br />

N J N<br />

x x x


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Blink Blink testen<br />

testen<br />

Definitie: Een blinktest is een test waarbij men een grote hoeveelheid data analyseert door<br />

niet <strong>op</strong> de inhoud van de data zelf te letten, maar <strong>op</strong> het patroon van de data.<br />

Hierbij maakt men gebruik van het menselijke vermogen om patronen te<br />

herkennen in bijvoorbeeld grootte, vorm, kleur en geluid.<br />

Doel: Het snel kunnen analyseren van een grote hoeveelheid data.<br />

Principe: Met blink testen bladert men door een grote hoeveelheid data en wordt er<br />

gezocht naar onregelmatigheden in deze data. Deze onregelmatigheden kunnen<br />

dan duiden <strong>op</strong> fouten. Door deze methode kunnen echter niet alle fouten<br />

gevonden worden.<br />

Bruikbaarheid: Blink testen zal ook gebruikt moeten worden als aanvulling <strong>op</strong> bestaande tests,<br />

niet als een <strong>op</strong> zichzelf staande testsoort.<br />

Engelse term: Blink testing.<br />

Aanpak<br />

Aanpak<br />

De aanpak van het <strong>op</strong>zetten van een blinktest kan per situatie verschillen. Het algemene patroon is:<br />

Stap 1. Voer een willekeurig aantal testscenario's uit zodat er een bepaalde uitvoer geproduceerd wordt (logging,<br />

output <strong>op</strong> een scherm, een document, records in een database of iets dergelijks).<br />

Stap 2. Geef het afwijkend patroon een bepaalde kleur (bijv. via tekstverwerker of spreadsheet) of zorg dat het <strong>op</strong><br />

een ander wijze visueel herkenbaar is.<br />

Stap 3. Analyseer de uitvoer <strong>op</strong> patronen en zoek naar onderbrekingen in het gevonden patroon.<br />

Stap 4. Bespreek de waarnemingen met een specialist.<br />

Voorbeelden<br />

Voorbeelden<br />

• Blader snel door een lang logbestand (door bijvoorbeeld page down ingedrukt te houden) en kijk naar het patroon<br />

van wat er voorbij komt en kijk of er vreemde variaties in zitten.<br />

• Plak een grote logfile in een spreadsheet en zoom uit. Kijk of er een patroon in de lengte van de regels zit. Gebruik<br />

de voorwaardelijke <strong>op</strong>maak <strong>op</strong> bepaalde regels om het patroon makkelijker te herkennen. Als er een patroon<br />

herkend wordt, zoek dan naar onderbrekingen van dit patroon. Indien gevonden, zoom hier weer in om te<br />

eigenaardigheden te traceren<br />

• Open twee schermprinten en ‘alt-tab’ deze heel snel heen en weer. Wat valt <strong>op</strong>?<br />

• Print een groot document uit (technische documentatie, databaserecords, output van een applicatie) en blader er<br />

snel doorheen, zoekend naar patronen.<br />

• Converteer een grote hoeveelheid data naar geluid. Luister naar patronen en onderbrekingen daarvan.<br />

Pagina 2 van 19


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Equivalentieklassen<br />

Equivalentieklassen<br />

Definitie: Het onderverdelen van mogelijke in- en outputvariabelen in verschillende klassen<br />

die logischerwijs hetzelfde systeemgedrag hebben.<br />

Doel: Het verhogen van de dekkingsgraad van inputwaarden.<br />

Principe: Door testgevallen te baseren <strong>op</strong> equivalentieklassen in plaats van <strong>op</strong> elke<br />

mogelijke invoerwaarde, blijft het aantal testgevallen beperkt, terwijl toch een<br />

goede dekking verkregen wordt (elke waarde uit een klasse heeft dezelfde kans<br />

<strong>op</strong> het vinden van een fout).<br />

Bruikbaarheid: Onder andere voor:<br />

• unittest;<br />

• integratietest;<br />

• acceptatietest.<br />

Engelse term: Equivalence partitioning of domain testing.<br />

Er wordt onderscheid gemaakt tussen geldige en ongeldige equivalentieklassen: ongeldige klassen leiden tot<br />

foutmeldingen, geldige klassen worden correct verwerkt.<br />

Types Types waarden<br />

waarden<br />

Er kunnen verschillende types waarden van invoerklassen worden gehanteerd:<br />

Boolean: Juist of onjuist J/N, bijv. “Bent u particulier?”<br />

Rij: Uit de rij of buiten de rij “Achternaam beginnend met de letters L t/m T.”<br />

Nummers: Exacte nummers of onjuiste<br />

nummers<br />

Grenswaarden: Onder, binnen of boven de grens<br />

Pagina 3 van 19<br />

“De nummers 1 en 2 uit de poule gaan door.”<br />

Aanpak<br />

Aanpak<br />

Stap 1. Bepaal de attributen: van welke gegevens moeten de inputwaarden worden vastgesteld?<br />

Stap 2. Bepaal de geldige attribuutklassen: welke waarden leiden tot andere gegevensverwerking of systeemgedrag?<br />

Stap 3. Bepaal de ongeldige attribuutklassen: welke waarden moeten niet door het systeem geaccepteerd worden?<br />

Stap 4. Stel de testgevallen <strong>op</strong>: welke fysieke waarden ga je gebruiken?<br />

Voorbeeld<br />

Voorbeeld<br />

Creditcardautorisatie: <strong>op</strong> welke manier wordt de juistheid van creditcardinvoer gecontroleerd?<br />

Attribuut Attribuut (stap (stap 1) 1) Geldige Geldige waarde waarde (stap (stap (stap 2) 2)<br />

Ongeldige Ongeldige Ongeldige waarde waarde (stap (stap 3) 3)<br />

3)<br />

<strong>Maat</strong>schappij: VISA, American Express, Mastercard<br />

(stap (stap 4)<br />

4)<br />

Diners Club, JCB<br />

Nummer: Voldoet aan toetsingscriteria Voldoet niet aan criteria, bijv. sofinummer<br />

of bankrekeningnummer<br />

Naam: J.A. Janssen, T.A. Pietersen Spelfout of niet bekend<br />

Geldigheidsperiode: Tot einde maand aflo<strong>op</strong> Na einde maand aflo<strong>op</strong>


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Exploratory Exploratory testen<br />

testen<br />

Definitie: Elke vorm van testen waarbij de testgevallen worden ontworpen tijdens de<br />

testuitvoer en de informatie die hieruit wordt verkregen wordt gebruikt om<br />

nieuwe en betere testgevallen te ontwerpen.<br />

Doel: Het in korte tijd testen van een module of een specifiek aspect van de software<br />

om daarmee inzicht te krijgen in de kwaliteit ervan.<br />

Principe: Voor een specifiek doel wordt een hoeveelheid testtijd ingeruimd <strong>op</strong> basis<br />

waarvan de (ervaren) tester aan de slag gaat om binnen die tijd de belangrijkste<br />

fouten te vinden. Dit wordt <strong>op</strong>gesteld in de vorm van een <strong>op</strong>dracht of ‘charter’.<br />

Er is geen voor<strong>op</strong>gesteld script, maar de tester vaart <strong>op</strong> ervaring, doel en sc<strong>op</strong>e<br />

van de sessie en <strong>op</strong> intuïtie.<br />

Bruikbaarheid: Blackboxtesten.<br />

Engelse term: Exploratory testing.<br />

Aandachtspunten<br />

Aandachtspunten<br />

• De primaire tester is iemand die het systeem goed kent, of een specialist in zijn vakgebied (bijv. usabilitytesten of<br />

performancetesten).<br />

• De diepgang van de test wordt bepaald door de ervaring van de tester(s) en de hoeveelheid tijd (hoe meer<br />

diepgang gewenst, alloceer des te meer tijd).<br />

• Maximale testtijd voor een <strong>op</strong>dracht is vier uur (client/server of webbased omgeving).<br />

• Pair testing (samen met andere tester, ontwikkelaar, ontwerper of klant) is een <strong>op</strong>tie om de dekkingsgraad te<br />

verhogen.<br />

Voorbereiding<br />

Voorbereiding<br />

Voorafgaand aan het testen dient het volgende voorbereid te worden door de testcoördinator of testmanager:<br />

1. Sc<strong>op</strong>e: bepaal welke module of welk aspect je gaat testen. Baken de sc<strong>op</strong>e af door ook te noemen wat je níet test.<br />

2. Doel: omschrijf met welk doel/waarom je gaat testen: naar welke informatie over het systeem ben je <strong>op</strong> zoek?<br />

3. Tijdsindicatie: hoeveel tijd mag er maximaal aan de <strong>op</strong>dracht besteed worden?<br />

Uitvoering<br />

Uitvoering<br />

Tijdens de uitvoering houdt de tester de volgende aspecten bij:<br />

1. Hoe: <strong>op</strong> welke manier worden de fouten gezocht (bijv. gebruikt tool, logisch pad, de focus). Houd eventuele<br />

wijzigingen in aanpak bij.<br />

2. Bevindingen: welke bevindingen zijn geconstateerd (verwijs naar bevindingentool).<br />

3. Verslag: wat is je algemene oordeel over de module/het aspect. Benoem eventueel nieuw ontdekte risico’s.<br />

Voorbeeld<br />

Voorbeeld<br />

ET ET ET <strong>op</strong>dracht <strong>op</strong>dracht ‘ARKA’<br />

‘ARKA’<br />

Sc<strong>op</strong>e: Rapportagemodule systeem ‘ARKA’, uitsluitend pdf-uitvoer.<br />

Doel: De lay-out van alle pdf’s dient consistent te zijn, de data die <strong>op</strong> de pdf<br />

getoond wordt komt overeen met die <strong>op</strong> het scherm staan.<br />

Tijd: Maximaal vier uur.<br />

Hoe: Klantnrs 1001001 t/m 1001099 gehanteerd, beoordeeld of de klant<br />

volledige gegevens per rapportage had, screendump gemaakt, pdf<br />

gegenereerd en die afgedrukt. Screendump met pdf vergeleken.<br />

Bevindingen: 111, 112, 114, 116, 118, 119, 121.<br />

Verslag: De berekeningen rechtsonder worden niet goed getoond. Alle waardes<br />

wel correct. Aanpassing pdf-generator.<br />

Pagina 4 van 19


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: FitNesse<br />

FitNesse<br />

Doel: FitNesse maakt het mogelijk voor klanten, testers en programmeurs om (lerenderwijs) te<br />

bepalen wat de software moet doen. De <strong>op</strong>gestelde verwachtingen kunnen automatisch<br />

vergeleken worden met de daadwerkelijke output van het systeem. Testen kunnen desgewenst<br />

samengevoegd worden waardoor een compleet geautomatiseerde (regressie) testset ontstaat.<br />

Principe: In het algemeen kan gesteld worden dat hoe lager het niveau waar<strong>op</strong> getest wordt des te meer<br />

technische kennis en vaardigheden de tester dient te bezitten. FitNesse lost dit probleem <strong>op</strong> door<br />

een gebruikersvriendelijke voorkant (in de vorm van een wiki) te k<strong>op</strong>pelen aan de te testen<br />

module(s).<br />

Bruikbaarheid: FitNesse kan gebruikt worden in de volgende situaties:<br />

• vroeg testen en accepteren van belangrijke modulen en interfaces;<br />

• Acceptance Test Driven Devel<strong>op</strong>ment;<br />

• testen als er überhaupt nog geen voorkant gebouwd is;<br />

• <strong>op</strong>stellen en uitvoeren van geautomatiseerde regressietesten.<br />

FitNesse is voor iedereen eenvoudig in gebruik als het framework eenmaal goed is ingericht.<br />

Voor het k<strong>op</strong>pelen van te testen modules aan FitNesse is echter kennis nodig van Java of C#.<br />

URL: www.fitnesse.org .<br />

Voorbereiding<br />

Voorbereiding<br />

Alvorens met FitNesse te kunnen starten dienen er fixtures geschreven te worden. Dit zijn de k<strong>op</strong>pelingen tussen het<br />

FitNesse framework en de te testen software. De k<strong>op</strong>pelingen dienen zo ‘dun’ mogelijk te zijn om te voorkomen dat<br />

het testresultaat wordt beïnvloed door de code van de fixture.<br />

Uitvoering<br />

Uitvoering<br />

Testcases kunnen via de geïntegreerde wiki <strong>op</strong>gevoerd en beheerd worden. De testcases worden in tabelvorm<br />

<strong>op</strong>geslagen. Er zijn diverse tabelvormen mogelijk afhankelijk van de gewenste verwerking. Hieronder staat een<br />

voorbeeld van de meest eenvoudige tabelvariant.<br />

Voorbeeld Voorbeeld<br />

Voorbeeld<br />

Er wordt een module geschreven die input A deelt door B en de waarde C terugstuurt. Een test in FitNesse zou er dan<br />

als volgt uit kunnen zien:<br />

Module Module <strong>op</strong>tellen<br />

<strong>op</strong>tellen<br />

WaardeA WaardeB ?Uitkomst<br />

10 2 5<br />

3 1 3<br />

8 0 8<br />

2 2 2<br />

Als de test wordt uigevoerd dan zal FitNesse de eerste waarde A en waarde B verzenden en de uitkomst vergelijken<br />

met de verwachte uitkomst. Hierna wordt de volgende regel verwerkt etc. Als de verwachting en de retourwaarde<br />

overeenkomen wordt de uitkomst groen gekleurd. Als dit niet het geval is wordt de cel rood gekleurd. Als er iets<br />

misgaat bij de verwerking wordt de cel geel gekleurd.<br />

Module Module <strong>op</strong>tellen<br />

<strong>op</strong>tellen<br />

WaardeA WaardeB ?Uitkomst<br />

10 2 5<br />

3 1 3<br />

8 0 8 (error)<br />

2 2 2 (expected)<br />

1 (actual)<br />

Op basis van de output kan er besloten worden om de verwachting van een testcase aan te passen of een<br />

codewijziging door te voeren. Op deze manier leert het team van de uitkomsten van de test en kunnen het systeem en<br />

het testproces verbeterd worden.<br />

Pagina 5 van 19


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Pairwise Pairwise testen<br />

testen<br />

Definitie: Het reduceren van de complexiteit van meervoudige variabelen door uitsluitend de paarsgewijze<br />

combinaties te testen (in plaats van alle mogelijke combinaties).<br />

Doel: Het met zo min mogelijk inspanning behalen van een hoge dekkingsgraad <strong>op</strong> complexe materie.<br />

Principe: De meeste fouten ontstaan als gevolg van één factor of een combinatie van twee factoren. Pairwise<br />

testen nivelleert complexiteit door uit te gaan van een combinatie van twee in plaats van<br />

meervoudige variabelen, waardoor een hoge dekkingsgraad wordt bereikt met minder<br />

testgevallen.<br />

Voorbeeld: Als A x B en B x C getest is, is de kans <strong>op</strong> een fout in de combinatie A x B x C nihil.<br />

Bruikbaarheid: • Datacombinatietest (Dataflow test)<br />

• Equivalentieklassen<br />

Er kan gebruikgemaakt worden van twee tools:<br />

• Allpairs van James Bach (www.satisfice.com/tools.shtml);<br />

• Pict33 van Microsoft (www.pairwise.org/tool.asp).<br />

Engelse term: Pairwise testing.<br />

Beperkingen: Dit verwerkingsprincipe test alleen de combinaties van twee factoren.<br />

Aanpak<br />

Aanpak<br />

Stap 1. Definieer het aantal variabelen en bepaal het aantal waarden per variabele.<br />

Stap 2. Kies een van de tools: Allpairs of Pict 33.<br />

• Allpairs kan worden altijd worden toegepast. De kracht van dit tool is dat de tester extra informatie krijgt over de<br />

dekking per testgeval. Deze informatie wordt gebruikt bij de afweging of een testgeval wel of niet moet worden<br />

uitgevoerd, wanneer als gevolg van tijdsgebrek blijkt dat niet alle testgevallen uitgevoerd kunnen worden.<br />

• Pict33 kan worden toegepast als alle testgevallen uitgevoerd (kunnen) worden.<br />

Stap 3. Pas de bijbehorende tool toe door:<br />

• de inputfile te definiëren volgens de handleiding;<br />

• de outputfile te genereren met de tool.<br />

Stap 4. Beschrijf zo nodig de testgevallen vanuit de outputfile in realistische situaties.<br />

Voorbeeld Voorbeeld<br />

Voorbeeld<br />

Een administratie moet maandelijks loonberekeningen voor tien personen maken en een keer per jaar moet een<br />

jaar<strong>op</strong>gave gegenereerd worden. De personen zijn onderverdeeld in drie loonschalen (schaal 1, schaal 2 en schaal 3)<br />

en voor iedere schaal geldt dat er drie verschillende declaraties mogelijk zijn (onkostenvergoeding, lunchvergoeding<br />

en telefoonvergoeding). De personen werken parttime en fulltime.<br />

Stap Stap Stap Stap 1: 1: 1: 1: Definieer Definieer het het aantal aantal variabelen variabelen en en bepaal bepaal het het aantal aantal waarden waarden per per variabele<br />

variabele<br />

Variabelen Variabelen Variabelen<br />

Waarden<br />

Waarden<br />

Soort Maandelijks, jaarlijks<br />

Soort contract Parttime, fulltime<br />

Loonschalen Schaal 1, schaal 2, schaal 3<br />

Declaratie Onkostenvergoeding, lunchvergoeding, telefoonvergoeding<br />

Stap Stap Stap Stap 2: 2: 2: 2: Kies een van de tools: AllPairs of PICT 33<br />

In geval van uitwerking met PICT33 ziet de inputfile er als volgt uit:<br />

Soort Maandelijks<br />

Jaarlijks<br />

Soort contract Parttime<br />

Fulltime<br />

Loonschalen Schaal 1<br />

Schaal 2<br />

Schaal 3<br />

Pagina 6 van 19


Testen3.0 TM<br />

Declaratie Onkostenvergoeding<br />

Lunchvergoeding<br />

Telefoonvergoeding<br />

In geval van uitwerking via Allpairs ziet de inputfile er als volgt uit:<br />

Soort Soort<br />

Soort Soort Soort Contract Contract Loonschalen Loonschalen<br />

Declaratie Declaratie<br />

Declaratie<br />

Maandelijks Parttime Schaal 1 Onkostenvergoeding<br />

Jaarlijks Fulltime Schaal 2<br />

Schaal 3<br />

Stap Stap Stap Stap 3: 3: 3: 3: De De output van de de tool.<br />

PICT33<br />

PICT33<br />

Testgeval Testgeval Soort Soort Soort Soort contract contract Loonschalen Loonschalen Declaratie<br />

Declaratie<br />

Pagina 7 van 19<br />

Lunchvergoeding<br />

Telefoonvergoeding<br />

1 Jaarlijks Parttime Schaal 3 Onkostenvergoeding<br />

2 Maandelijks Fulltime Schaal 1 Telefoonvergoeding<br />

3 Maandelijks Parttime Schaal 1 Lunchvergoeding<br />

4 Jaarlijks Fulltime Schaal 3 Telefoonvergoeding<br />

5 Maandelijks Fulltime Schaal 1 Onkostenvergoeding<br />

6 Jaarlijks Fulltime Schaal 2 Lunchvergoeding<br />

7 Maandelijks Parttime Schaal 2 Telefoonvergoeding<br />

8 Maandelijks Parttime Schaal 3 Lunchvergoeding<br />

9 Jaarlijks Parttime Schaal 1 Onkostenvergoeding<br />

10 Jaarlijks Parttime Schaal 2 Onkostenvergoeding<br />

Allpairs<br />

Allpairs<br />

Testgeval Testgeval Soort Soort Soortcontract Soortcontract Loonschalen Loonschalen Declaratie Declaratie<br />

Aantal Aantal comb combi’s comb combi’s<br />

i’s<br />

1 Maandelijks Parttime Schaal 1 Onkostenvergoeding 6<br />

2 Jaarlijks Fulltime Schaal 1 Lunchvergoeding 6<br />

3 Jaarlijks Parttime Schaal 2 Onkostenvergoeding 5<br />

4 Maandelijks Fulltime Schaal 2 Lunchvergoeding 5<br />

5 Maandelijks Parttime Schaal 3 Telefoonvergoeding 5<br />

6 Jaarlijks Fulltime Schaal 3 Onkostenvergoeding 4<br />

7 Jaarlijks Fulltime Schaal 1 Telefoonvergoeding 3<br />

8 ~Maandelijks Parttime Schaal 2 Lunchvergoeding 1<br />

9 ~Jaarlijks ~Parttime Schaal 2 Telefoonvergoeding 1<br />

10 ~Maandelijks ~Fulltime Schaal 3 Lunchvergoeding 1<br />

Stap Stap Stap Stap 4: 4: 4: 4: Beschrijf Beschrijf zo zo nodig nodig de de testgevallen testgevallen vanuit vanuit de de outputfile outputfile in realistische situaties.<br />

Voorbeeld<br />

Voorbeeld<br />

Testgeval Testgeval Omschrijving<br />

Omschrijving<br />

1 Een jaarlijkse berekening van een parttimer uit schaal 3 wordt gemaakt. De parttimer<br />

heeft een onkostenvergoeding.<br />

2 Een maandelijkse berekening van een fulltimer uit schaal 1 wordt gemaakt. De fulltimer<br />

heeft een telefoonvergoeding.<br />

Etc. Etc.


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Procescyclustest<br />

Procescyclustest<br />

Definitie: Het testen van de inpassing van het systeem in de bedrijfsprocessen door<br />

<strong>op</strong>eenvolgende logische acties te doorl<strong>op</strong>en.<br />

Doel: Vaststellen of de geautomatiseerde processen voldoende informatie leveren voor de<br />

werkprocessen en vice versa.<br />

Principe: Testgevallen worden gebaseerd <strong>op</strong> de benodigde acties voor het doorl<strong>op</strong>en van een<br />

proces.<br />

Bruikbaarheid: • Blackboxtesten<br />

• Meerdere eindgebruikers met verschillende rollen in het proces dienen deze test<br />

(mede) uit te voeren<br />

Aanpak<br />

Aanpak<br />

Stap 1. Stel de beslispunten vast <strong>op</strong> basis van de werkprocessen.<br />

Stap 2. a. Bepaal de padcombinaties, gevormd uit één tak vóór een beslispunt en één tak ná dat beslispunt.<br />

b. Kno<strong>op</strong> padcombinaties aan elkaar tot paden door het werkproces.<br />

Stap 3. Stel de testgevallen <strong>op</strong>: voorzie elk pad van de benodigde waarden voor de beslispunten, dit is gelijk de basis<br />

voor de initiële gegevensverzameling en het testscript.<br />

Voorbeeld Voorbeeld<br />

Voorbeeld<br />

Uitverko<strong>op</strong> kledingzaak.<br />

Uitverko<strong>op</strong> is alleen van toepassing <strong>op</strong> artikelen die langer dan drie maanden in voorraad zijn. Op broeken krijgt men<br />

35%, <strong>op</strong> overhemden 20% en <strong>op</strong> sokken 50% korting.<br />

Procesflow<br />

Figuur Figuur 33 33 Een Een procesflow procesflow bij bij procescyclustest<br />

procescyclustest<br />

Pagina 8 van 19<br />

Matrix Matrix met met paden paden paden (testg (testgevallen)<br />

(testg (testgevallen)<br />

evallen)<br />

TG TG Pad/comb Pad/comb 1,2 1,2 1,3 1,3 3,4 3,4 3,5 3,5 5,6 5,6 5,7<br />

5,7<br />

1 1,2 X<br />

2 1,3,4 X X<br />

3 1,3,5,6 X X X<br />

4 1,3,5,7 X X X<br />

TG TG Stap Stap Actie<br />

Testscript Testscript van van testgeval testgeval 3<br />

3<br />

3 P3-1 Het artikel ligt langer dan drie<br />

maanden in voorraad.<br />

P3-2 Het artikel is geen broek.<br />

P3-3 Het artikel is een overhemd.<br />

P3-4 De korting bedraagt 20%.


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Productrisicoanalyse<br />

Productrisicoanalyse<br />

Definitie:<br />

Een productrisicoanalyse is de inventarisatie van de productrisico’s voor die<br />

items/gebieden die het hoogste risiconiveau hebben en die daarom het<br />

belangrijkst zijn om te testen.<br />

Doel: Het met alle stakeholders gezamenlijk tot één beeld komen van wat de meer of<br />

minder risicovolle kenmerken en delen van het te testen product zijn. Deze<br />

analyse dient als basis voor de teststrategie waardoor onderdelen met het<br />

hoogste risico als eerste en meer intensief worden getest dan die met lagere<br />

risico’s.<br />

Principe: De productrisico’s worden bepaald door alle belanghebbenden. Er vindt een<br />

inschatting plaats van de gevolgen van mogelijke fouten en <strong>op</strong> basis daarvan<br />

wordt er geprioriteerd.<br />

Bruikbaarheid: De productrisicoanalyse wordt uitgevoerd als onderdeel van het <strong>op</strong> te stellen<br />

(master)testplan. Hiermee wordt de testinspanning gericht <strong>op</strong> die onderdelen<br />

waar de grootste risico’s zijn aangegeven.<br />

Engelse term: Product Risk Analysis.<br />

Tools: PRISMA (o.a. ImproveQS) en PRIMA (Valori).<br />

Website: Http://en.wikipedia.org/wiki/ISO_9126.<br />

Aandachtspunten<br />

Aandachtspunten<br />

• Een productrisicoanalyse kan zowel eendimensionaal als tweedimensionaal worden uitgevoerd. Bij een<br />

eendimensionale aanpak wordt slechts één dimensie, meestal een functionele <strong>op</strong>deling van het informatiesysteem,<br />

geprioriteerd. Deze is hieronder uitgewerkt.<br />

• Bij de tweedimensionale aanpak worden ook kwaliteitscriteria meegenomen in de risicoanalyse.<br />

• Faalkans: hierbij wordt bepaald in hoeverre het mogelijke (technisch) risico zich kan voordoen. De overwegingen<br />

hierbij zijn onder andere complexiteit en frequentie van gebruik.<br />

• Impact: hierbij wordt bepaald wat de mogelijke schade van falen is. De overwegingen hierbij zijn<br />

gebruikersbelang en procesdoorwerking.<br />

Aanpak<br />

Aanpak<br />

• Er wordt geïnventariseerd welke consequenties de productrisico’s mogelijk hebben.<br />

• Vervolgens wordt gekeken naar het gevolg: heeft dit betrekking <strong>op</strong> één klant of <strong>op</strong> alle klanten, of is er al dan niet<br />

een workaround beschikbaar?<br />

• Op basis van de risico’s en hun impact wordt de prioriteit van het testen bepaald: Must test, Should test, Could test<br />

en Would test.<br />

• Bij de voorbereidingen van de nieuwe requirements voor de iteratie kan vervolgens bepaald worden in welke<br />

risicocategorie de requirements vallen. De risicocategorie bepaalt de prioriteit en diepgang waarmee er getest<br />

moet worden.<br />

Voorbeeld<br />

Voorbeeld<br />

Als er een risico<br />

<strong>op</strong>treedt, dan…<br />

Wat Wat gebeurt gebeurt er? er? er? Voor Voor wie? wie?<br />

Categorie<br />

Categorie<br />

Ontstaat er een Alle klanten Must test<br />

levensbedreigende<br />

situatie<br />

Eén klant Must test<br />

Ontstaat er geen<br />

levensbedreigende<br />

Alle klanten Should test<br />

situatie<br />

Eén klant Could test<br />

Ontstaan er financiële Alle klanten Should test<br />

consequenties<br />

Eén klant Could test<br />

Ontstaan er niet- Alle klanten Could test<br />

financiële<br />

consequenties<br />

Eén klant Would test<br />

Pagina 9 van 19


Testen3.0 TM<br />

Definitie:<br />

Het <strong>op</strong> basis van van een een stroomschema stroomschema stroomschema uitwerken van testgevallen testgevallen tot realistische<br />

situaties, situaties, waarbij waarbij waarbij dekkingsgraad dekkingsgraad dekkingsgraad en en en overdraagbaarheid overdraagbaarheid hoog hoog hoog zijn.<br />

zijn.<br />

Doel:<br />

Het Het creëren creëren van van realistische realistische situaties situaties situaties <strong>op</strong> <strong>op</strong> basis basis basis van van van de de informatiestromen informatiestromen door door door het<br />

het<br />

het<br />

systeem.<br />

Principe:<br />

De functionaliteiten van van het systeem systeem worden worden in in e eeen<br />

e en stroomschema stroomschema beschreven,<br />

waarna waarna de de de verschillende verschillende verschillende mogelijkheden mogelijkheden mogelijkheden mogelijkheden worden worden worden getest getest getest getest <strong>op</strong> <strong>op</strong> basis basis basis van van de de de testmaat.<br />

testmaat.<br />

testmaat.<br />

De testmaat bepaalt bepaalt hierbij hierbij de de diepgang.<br />

diepgang.<br />

Bruikbaarheid: De De proefgevallenanalyse proefgevallenanalyse is is is bruikbaar bruikbaar bruikbaar voor voor onderstaande onderstaande testsoorten:<br />

testsoorten:<br />

testsoorten:<br />

• unittest;<br />

• acceptatietest;<br />

• blackboxtesten.<br />

Aanpak<br />

Aanpak<br />

Stap 1. Stroomschema Stroomschema Stroomschema <strong>op</strong>stellen; <strong>op</strong>stellen; <strong>op</strong>stellen; geef geef geef weer weer weer weer welke welke welke keuzes keuzes keuzes achtereenvolgens achtereenvolgens achtereenvolgens worden worden worden worden gemaakt gemaakt gemaakt en en en welke welke welke acties acties acties uit uit uit deze<br />

deze<br />

deze<br />

deze<br />

keuzes volgen.<br />

Stap 2. Inventariseren Inventariseren Inventariseren van van van beslispunten; beslispunten; beslispunten; geef geef geef weer weer weer welke welke welke beslissingen beslissingen beslissingen worden worden worden genomen.<br />

genomen.<br />

genomen.<br />

Stap 3. Opstellen Opstellen van padcombinaties padcombinaties en en testpaden te<br />

stpaden stpaden <strong>op</strong> <strong>op</strong> basis basis van van het het stroomschema.<br />

stroomschema.<br />

Stap 4. Uitwerken Uitwerken naar naar realistische realistische situaties.<br />

situaties.<br />

Voorbeeld Voorbeeld<br />

Voorbeeld<br />

Uitverko<strong>op</strong> kledingzaak<br />

Uitverko<strong>op</strong> Uitverko<strong>op</strong> is is is alleen alleen alleen van van van van toepassing toepassing toepassing toepassing <strong>op</strong> <strong>op</strong> artikelen artikelen artikelen die die die die langer langer dan dan dan dan drie drie drie maanden maanden maanden maanden in in in voorraad voorraad voorraad zijn. zijn. zijn. Op Op Op Op broeken broeken broeken broeken krijgt krijgt krijgt men<br />

men<br />

men<br />

men<br />

35%, %, <strong>op</strong> overhemden 20% 20% en<br />

en <strong>op</strong> sokken 50% 50% korting. korting<br />

Figuur Figuur Figuur Figuur 34 34 34 34 34 34 34 34 34 Een Een Een Een procesflow procesflow procesflow procesflow procesflow procesflow procesflow bij bij bij bij proefgevallenanalyse<br />

proefgevallenanalyse<br />

proefgevallenanalyse<br />

proefgevallenanalyse<br />

proefgevallenanalyse<br />

proefgevallenanalyse<br />

proefgevallenanalyse<br />

Stap Stap Stap Stap 1: 1: 1: 1: Stroomschema Stroomschema Stroomschema Stroomschema Stroomschema Stroomschema Stroomschema <strong>op</strong>stellen.<br />

<strong>op</strong>stellen.<br />

<strong>op</strong>stellen.<br />

<strong>op</strong>stellen.<br />

Stap Stap Stap Stap 2: 2: 2: 2: Inventariseren Inventariseren Inventariseren Inventariseren beslispunten<br />

beslispunten<br />

beslispunten<br />

beslispunten<br />

1. Artikel minder minder dan dan drie drie drie maanden maanden <strong>op</strong> <strong>op</strong> <strong>op</strong> voorraad.<br />

voorraad.<br />

2. Artikel = een broek.<br />

3. Artikel = overhemd.<br />

4. Artikel = so sokken.<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Proefgevallenanalyse<br />

Proefgevallenanalyse<br />

Proefgevallenanalyse<br />

Proefgevallenanalyse<br />

Proefgevallenanalyse<br />

Pagina 10 van 19<br />

Stap Stap Stap Stap 3: 3: 3: 3: Opstellen Opstellen Opstellen Opstellen Opstellen Opstellen Opstellen van van van van van van padcombinaties padcombinaties padcombinaties padcombinaties padcombinaties padcombinaties padcombinaties padcombinaties padcombinaties en en en en en en en en en testpaden testpaden testpaden testpaden testpaden testpaden testpaden <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> basis basis basis basis basis basis van<br />

van<br />

van<br />

van<br />

van<br />

van<br />

van<br />

van<br />

van<br />

het het het stroomschema<br />

stroomschema<br />

stroomschema<br />

stroomschema<br />

stroomschema<br />

Padcombinaties:<br />

Beslispunt Beslispunt 1: 1: (1,2), (1,2), (1,3), (2, (2,-). (2,<br />

Beslispunt Beslispunt 2: 2: (3,4), (3,4), (3,5), (4, (4,-). (4,<br />

Beslispunt Beslispunt 3: 3: (5,6), (5,6), (5,7), (6, (6,-), (6, ), (7,-). (7,<br />

Testpaden:<br />

Pad 1: 1, 3, 5, 7.<br />

Pad 2: 1, 3, 4.<br />

Pad 3: 1, 3, 5, 6.<br />

Pad 4: 1, 2.<br />

Stap Stap Stap Stap 4: 4: 4: 4: Uitwerken Uitwerken Uitwerken Uitwerken naar naar naar naar realistische realistische realistische realistische realistische situaties situaties<br />

situaties<br />

situaties<br />

situaties<br />

1. 1. Artikel Artikel is is langer langer dan dan drie drie maanden maanden <strong>op</strong> <strong>op</strong> <strong>op</strong> voorraad, voorraad, voorraad, en en en het het zijn<br />

zijn<br />

sokken. sokken. Resultaat: Resultaat: 50% korting.<br />

2. 2. Artikel Artikel is is langer langer dan dan drie drie maanden maanden <strong>op</strong> <strong>op</strong> <strong>op</strong> voorraad, voorraad, voorraad, en en en het het is is een<br />

een<br />

broek. Resultaat: Resu 35 5% korting.<br />

3. 3. Artikel Artikel is is langer langer dan dan drie drie maanden maanden <strong>op</strong> <strong>op</strong> <strong>op</strong> voorraad, voorraad, voorraad, en en en het het is is een<br />

een<br />

overhemd. overhemd. Resultaat: Resultaat: 20% 20% korting.<br />

korting.<br />

4. 4. Artikel Artikel is is minder minder dan dan drie drie maanden maanden <strong>op</strong> <strong>op</strong> voorraad. voorraad. Resultaat:<br />

Resultaat:<br />

geen korting.


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Testmaat Testmaat<br />

Testmaat Testmaat - Algoritmetest, Algoritmetest, Algoritmetest, Algoritmetest, Algoritmetest, Algoritmetest, Algoritmetest, Algoritmetest, Algoritmetest, Algoritmetest, Procescyclustest<br />

Procescyclustest<br />

Procescyclustest<br />

Definitie:<br />

De De testmaat testmaat testmaat geeft geeft geeft aan aan aan hoe hoe hoe hoe diep diep diep de de de afhankelijkheden afhankelijkheden afhankelijkheden tussen tussen tussen <strong>op</strong>eenvolgende<br />

<strong>op</strong>eenvolgende<br />

<strong>op</strong>eenvolgende<br />

beslispunten worden worden getest.<br />

getest.<br />

Doel:<br />

Het Het gebruiken gebruiken van van van de de de juiste juiste juiste detailleringsmaat detailleringsmaat detailleringsmaat <strong>op</strong> <strong>op</strong> de de juiste juiste juiste plaats plaats van van van het<br />

het<br />

systeem.<br />

Principe:<br />

Bij Bij testmaat testmaat n n worden worden alle alle alle afhankelijkheden afhankelijkheden van van van acties acties<br />

vóór een beslispunt en na<br />

n-1<br />

1 1 beslispunten beslispunten geverifieerd geverifieerd door door alle alle mogelijke mogelijke combinaties combinaties van van n in<br />

<strong>op</strong>eenvolgende <strong>op</strong>eenvolgende acties acties in in in testpaden testpaden onder onder onder te te brengen.<br />

brengen.<br />

Bruikbaarheid: Het Het begrip begrip testmaat testmaat testmaat wordt wordt wordt gebruikt gebruikt bij bij bij de de de volgende volgende testsoorten:<br />

testsoorten:<br />

• algoritmetest;<br />

• procescyclu procescyclustest.<br />

Aanpak<br />

Aanpak<br />

De De keuze keuze van van van de de de testmaat testmaat testmaat hangt hangt hangt hangt af af af van van van de de de complexiteit complexiteit complexiteit en en en het het het het risico risico risico risico van van van de de functies.<br />

functies.<br />

• Testmaat Testmaat 1 1 houdt houdt houdt in in in dat dat dat dat een een een actie actie actie actie slechts slechts slechts slechts wordt wordt wordt wordt beïnvloed beïnvloed beïnvloed beïnvloed beïnvloed door door door de de de de beslissing beslissing beslissing beslissing en en en en niet niet niet niet door door door de de de voorliggende voorliggende voorliggende acties.<br />

acties.<br />

• Testmaat 2 bevat bevat dus altijd altijd k<strong>op</strong>pelingen<br />

k<strong>op</strong>pelingen van van een een actie actie voor voor voor een een beslissing beslissing beslissing en en een een een actie actie na na na een een een beslissing.<br />

beslissing.<br />

Er Er zijn zijn zijn zijn ook ook ook hogere hogere hogere testmaten, testmaten, testmaten, waarbij waarbij waarbij waarbij aangenomen aangenomen aangenomen wordt wordt wordt wordt wordt dat dat dat de de de uitvoering uitvoering uitvoering van van van een een een een actie actie actie doorwerkt doorwerkt doorwerkt doorwerkt in in in in meer meer meer meer dan dan dan dan één<br />

één<br />

één<br />

<strong>op</strong>volgende <strong>op</strong>volgende acties. acties. acties. De De De De hogere hogere hogere hogere testmaten testmaten testmaten worden worden worden meestal meestal alleen alleen gekozen gekozen gekozen voor voor voor ri riskante ri<br />

ri<br />

skante skante en complexe complexe functies. Een<br />

hogere hogere testmaat testmaat betekent betekent betekent vanzelfsprekend vanzelfsprekend meer meer meer (of (of evenveel) evenveel) evenveel) testgevallen.<br />

testgevallen.<br />

Voorbeeld<br />

Voorbeeld<br />

Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur Figuur 35 35 35 35 35 35 35 35 Een Een Een Een voorbeeld voorbeeld voorbeeld voorbeeld voorbeeld voorbeeld van van van van van van van van van van van van testpaden testpaden testpaden testpaden<br />

testpaden<br />

testpaden testpaden testpaden testpaden testpaden testpaden<br />

testpaden<br />

Pagina agina 11 van 19


Testen3.0 TM<br />

Definitie: De testmaat geeft aan hoeveel uitkomsten van determ<br />

worden.<br />

Doel:<br />

Het gebruiken van de juiste detailleringsmaat <strong>op</strong> de juiste plaats van het<br />

systeem.<br />

Principe: Een beslissingstabel heeft de testmaat n als de tabel voor iedere groep van n<br />

determinanten alle mogelijke combinaties beva<br />

n 2<br />

Bruikbaarheid:<br />

n De testmaat geeft geeft aan aan hoeveel hoeveel uitkomsten uitkomsten van van determ<br />

determinanten inanten er er gecombineerd<br />

gecombineerd<br />

worden.<br />

Het Het gebruiken gebruiken gebruiken van van de de juiste juiste detailleringsmaat detailleringsmaat detailleringsmaat <strong>op</strong> <strong>op</strong> <strong>op</strong> de de de juiste juiste plaats plaats van van van het<br />

het<br />

systeem.<br />

Een Een beslissingstabel beslissingstabel beslissingstabel heeft heeft heeft de de testmaat testmaat testmaat n n n als als als de de tabel tabel tabel voor voor voor iedere iedere iedere groep groep van van van n<br />

n<br />

n<br />

determinanten alle mogelijke combinaties combinaties beva bevat. beva t. Dit Dit betekent dat er er bij testmaat<br />

testmaat<br />

situaties in in de de beslissingstabel beslissingstabel bestaan.<br />

bestaan.<br />

Bruikbaarheid: Deze Deze testmaat testmaat wordt wordt gebruikt gebruikt bij bij de de de beslissingstabellentest<br />

beslissingstabellentest<br />

Aanpak<br />

Aanpak<br />

De De keuze keuze van van van de de de testmaat testmaat testmaat hangt hangt hangt hangt af af af van van van de de de complexiteit complexiteit complexiteit en en en het het het het risico risico risico risico van van van de de functies.<br />

functies.<br />

• Testmaat tmaat tmaat 1 1 houdt houdt houdt in in in dat dat dat dat alleen alleen alleen de de de de uitkomsten uitkomsten uitkomsten uitkomsten van van van van determinanten determinanten determinanten determinanten worden worden worden gecontroleerd: gecontroleerd: gecontroleerd: allemaal allemaal allemaal een een een een keer keer keer ‘waar’<br />

‘waar’<br />

‘waar’<br />

en en een een een keer keer keer ‘niet ‘niet ‘niet waar’. waar’. waar’. waar’. Dit Dit Dit Dit betekent betekent betekent betekent dat dat dat dat er er er er altijd altijd altijd maar maar twee twee twee twee logische logische logische testgevallen testgevallen testgevallen ontstaan, ontstaan, onafhankelijk onafhankelijk van van het<br />

het<br />

aantal determinanten.<br />

• Testmaat 2 houdt houdt houdt in in dat dat dat voor voor voor iedere iedere iedere groep groep groep van van van van twee twee twee determinanten determinanten determinanten alle alle alle alle combinaties combinaties combinaties in in in de de de beslissingstabel beslissingstabel beslissingstabel zitten.<br />

zitten.<br />

zitten.<br />

Een Een hogere hogere hogere testmaat testmaat testmaat betekent betekent betekent vanzelfsprekend vanzelfsprekend vanzelfsprekend meer meer meer (of (of evenveel) evenveel) evenveel) evenveel) testgevallen.<br />

testgevallen.<br />

testgevallen.<br />

Voorbeeld<br />

Voorbeeld<br />

De volgende beslissingstabel beslissingstabel bevat bevat drie drie determinanten.<br />

determinanten.<br />

Logische Logische testkolom:<br />

testkolom:<br />

Determinant 1<br />

Determinant 2<br />

Determinant 3<br />

De De testmaat testmaat van van van deze deze deze deze tabel tabel tabel tabel is is is gelijk gelijk gelijk aan aan aan 2, 2, 2, 2, omdat omdat omdat omdat omdat elke elke elke elke groep groep groep groep van van van determinanten determinanten determinanten alle alle alle mogelijke mogelijke mogelijke mogelijke combinaties combinaties combinaties bevat; bevat; bevat; de<br />

de<br />

de<br />

groep van van determinant determinant 1 1 en en determinant determinant 2 2 2 bevatten<br />

bevatten bevatten 00, 00, 01,10 01,10 en en en 11, 11, evenals evenals de de de groep groep van van determinant determinant 2 2 en<br />

en<br />

determinant 3.<br />

De tabel hieronder hieronder toont toont het het het aantal aantal logische logische logische testgevallen testgevallen testgevallen per per testmaat.<br />

testmaat.<br />

Determinanten<br />

Determinanten<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

Testmaat<br />

Testmaat<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Testmaat Testmaat<br />

Testmaat - <strong>Beslissing</strong>sanalyse<br />

<strong>Beslissing</strong>sanalyse<br />

<strong>Beslissing</strong>sanalyse<br />

<strong>Beslissing</strong>sanalyse<br />

1<br />

0<br />

0<br />

1<br />

1<br />

2<br />

2<br />

2<br />

2<br />

2<br />

2<br />

2<br />

2<br />

2<br />

2<br />

2<br />

0<br />

1<br />

0<br />

2 3<br />

2 2<br />

4 4<br />

4 8<br />

5 8<br />

6 10<br />

7 12<br />

8 14<br />

9 16<br />

10 18<br />

11 20<br />

3<br />

1<br />

0<br />

0<br />

4 5<br />

2 2<br />

4 4<br />

8 8<br />

16 16<br />

16 32<br />

22 32<br />

29 49<br />

37 72<br />

46 102<br />

56 140<br />

Pagina agina 12 van 19<br />

4<br />

1<br />

1<br />

1<br />

6<br />

2<br />

4<br />

8<br />

7 8<br />

2 2<br />

4 4<br />

8 8<br />

16 16 16<br />

32 32 32<br />

64 64 64<br />

9 10<br />

2 2<br />

4 4<br />

8 8<br />

16 16<br />

32 32<br />

64 64<br />

64 128 128 128 128<br />

107 128 256 256 256<br />

172 228 356 512 512<br />

266 392 476 512 1024


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Unit Unit Unit Unit Unit testen testen<br />

testen<br />

testen<br />

testen - Voorbereiding<br />

Voorbereiding<br />

Voorbereiding<br />

Voorbereiding<br />

Voorbereiding<br />

Definitie:<br />

Unit Unit testen testen testen is is is het het het valideren valideren valideren van van van de de werking werking van van van de de kleinst kleinst onderscheidbare<br />

onderscheidbare<br />

eenheden eenheden van van broncode. broncode. broncode. Bij Bij Bij objectgeörienteerd objectgeörienteerd objectgeörienteerd ontwikkelen: ontwikkelen: het het testen testen van<br />

van<br />

individuele methoden methoden van van een kl klasse. kl<br />

Doel:<br />

Het Het <strong>op</strong> <strong>op</strong> het het het laagst laagst laagst mogelijke mogelijke mogelijke mogelijke niveau niveau niveau niveau veiligstellen veiligstellen veiligstellen van van van een een goede goede goede werking werking van van van het<br />

het<br />

het<br />

systeem. systeem. Door Door Door een een een snelle snelle snelle feedback feedback weet weet je je je zeker zeker dat dat dat de de de code code goed goed goed werkt werkt werkt en en en of<br />

of<br />

of<br />

een een aanpassing aanpassing (refactoring) (refactoring) (refactoring) geen geen ongewenste ongewenste ongewenste gevolgen gevolgen gevolgen heeft. heeft. Unit Unit testen<br />

testen<br />

vereenvoudigt de de integratie integratie doordat doordat eenheden eenheden eenheden reeds reeds reeds getest getest getest zijn.<br />

zijn.<br />

zijn.<br />

Principe:<br />

In In een een een agile agile omgeving omgeving omgeving worden worden unittests unittests gebruikt gebruikt om om de de de goede goede werking werking van van van de<br />

de<br />

de<br />

de<br />

code code te te te borgen. borgen. Om Om Om effectief effectief effectief te te kunnen kunnen zijn, zijn, zijn, moeten moeten moeten dergelijke dergelijke testen testen testen veelvuldig<br />

veelvuldig<br />

veelvuldig<br />

kunnen worden worden herhaald, herhaald, bij bij voorkeur voorkeur worden ze in in een een framework framework (bijvoorbeeld<br />

(bijvoorbeeld<br />

JUnit bij bij Java) Java) geautomatiseerd.<br />

geautomatiseerd.<br />

Unittests Unittests moeten moeten moeten moeten snel snel snel kunnen kunnen kunnen worden worden worden worden uitgevoerd; uitgevoerd; uitgevoerd; uitgevoerd; de de de eenheid eenheid eenheid moet moet elementair<br />

elementair<br />

elementair<br />

worden worden getest. getest. getest. Externe Externe Externe afhankelijkheden afhankelijkheden worden worden vervangen vervangen vervangen door door zogenoemde<br />

zogenoemde<br />

stubs of mock objects.<br />

Na iedere bbuild<br />

uild uild van van het het systeem systeem systeem moet moet moet 100% 100% van van van alle alle unittests unittests unittests slagen.<br />

slagen.<br />

slagen.<br />

Bruikbaarheid: Continuous Continuous integration integration (het (het (het (het frequent frequent frequent frequent kunnen kunnen kunnen maken maken maken van van van een een een build) build)<br />

is een must.<br />

Met Met name name in in in omgevingen omgevingen omgevingen voor voor voor voor objectgeörienteerd objectgeörienteerd objectgeörienteerd ontwikkelen ontwikkelen ontwikkelen zijn zijn er er er voldoende<br />

voldoende<br />

voldoende<br />

tools die dit ondersteune<br />

ondersteunen.<br />

Voor Voor een een een een complex complex complex systeem systeem systeem kunnen kunnen kunnen unittests unittests unittests ook ook ook <strong>op</strong> <strong>op</strong> <strong>op</strong> integratieniveau integratieniveau integratieniveau worden<br />

worden<br />

gedefinieerd. gedefinieerd. Het Het vervangen vervangen vervangen van van deelsystemen deelsystemen door door door stubs stubs stubs is is een een dure dure investering,<br />

investering,<br />

mogelijk mogelijk gerechtvaardigd gerechtvaardigd gerechtvaardigd door door door een een een een betere betere betere onderhoudbaarheid onderhoudbaarheid onderhoudbaarheid en en en het het het sneller<br />

sneller<br />

sneller<br />

corrigeren van van fouten.<br />

Engelse term: Unit testing.<br />

Primaire<br />

Doorgaans Doorgaans uitgevoerd uitgevoerd door door de de de ontwikkelaar ontwikkelaar ontwikkelaar zelf, zelf, zeker zeker zeker niet niet door door eindgebruikers.<br />

eindgebruikers.<br />

uitvoerder Testspecialist Testspecialist kan kan kan assisteren assisteren assisteren assisteren of of of reviewen reviewen reviewen om om de de dekkingsgraad dekkingsgraad van van de de test test te<br />

te<br />

te<br />

valideren.<br />

Aandachtspunten<br />

Aandachtspunten<br />

• Voor het uitvoeren van van unittests unittests unittests wordt wordt wordt gebruikgemaakt gebruikgemaakt gebruikgemaakt van van van van tools tools tools tools en en en en libraries, libraries, libraries, libraries, zoals zoals zoals zoals JUnit, JUnit, JUnit, JUnit, TestNG TestNG TestNG TestNG en en en DbUnit.<br />

DbUnit.<br />

DbUnit.<br />

DbUnit.<br />

• Het Het invoeren invoeren van van unittests unittests in in in een een een bestaand bestaand bestaand bestaand project project project project kan kan kan kostbaar kostbaar kostbaar kostbaar zijn. zijn. zijn. Het Het Het Het vergt vergt vergt bovendien bovendien bovendien een een verandering verandering verandering verandering in in de<br />

de<br />

de<br />

mindset van van de de uitvoerenden. uitvoerenden. uitvoerenden. De De werkwijze werkwijze wordt wordt meer meer<br />

uniform uniform en en en meer meer kwaliteitsgedreven kwaliteitsgedreven kwaliteitsgedreven dan dan in in een project<br />

project<br />

zonder unittests.<br />

• De De bij bij unittests unittests unittests gebruikte gebruikte gebruikte dekkingsvormen dekkingsvormen dekkingsvormen (coverages) (coverages) staan staan vermeld vermeld vermeld <strong>op</strong> <strong>op</strong> een een aparte <strong>Q<strong>RC</strong></strong> <strong>Q<strong>RC</strong></strong>.<br />

Voorbereiding<br />

Voorbereiding<br />

Op projectniveau dienen dienen de de volgende volgende zaken zaken te te worden worden geregeld:<br />

geregeld:<br />

1. Continuous integr integration: ation: ation: de de de gehele gehele gehele gehele applicatie applicatie applicatie wordt wordt wordt wordt wordt automatisch automatisch automatisch gecompileerd gecompileerd tot tot tot een een een nieuwe nieuwe nieuwe testbare testbare testbare testbare versie, versie, versie, kort<br />

kort<br />

kort<br />

kort<br />

nadat er er code code is ingecheckt in in het het codebeheersysteem.<br />

codebeheersysteem.<br />

2. Inrichting Inrichting configuratiemanagementsysteem: configuratiemanagementsysteem: configuratiemanagementsysteem: configuratiemanagementsysteem: de de de testconfiguratie testconfiguratie testconfiguratie testconfiguratie (gegevens/database; (gegevens/database; (gegevens/database; invoer/testgevallen) invoer/testgevallen) invoer/testgevallen) mo moet mo<br />

mo<br />

mo<br />

mo<br />

telkens hersteld hersteld of of bijgewerkt bijgewerkt worden.<br />

worden.<br />

3. Automatic Automatic deployment: deployment: installatie installatie installatie van van van de de nieuwe nieuwe nieuwe versie versie versie <strong>op</strong> <strong>op</strong> een een testomgeving.<br />

testomgeving.<br />

testomgeving.<br />

4. Automatische Automatische uitvoering uitvoering uitvoering uitvoering unittests: unittests: unittests: volgend volgend volgend volgend <strong>op</strong> <strong>op</strong> <strong>op</strong> een een een een nieuwe nieuwe nieuwe build build build worden worden worden alle alle unittests unittests geautomatiseerd geautomatiseerd uitgevoerd.<br />

uitgevoerd.<br />

uitgevoerd.<br />

(Voor bovenstaande stappen ppen ppen zijn zijn zijn tools tools beschikbaar beschikbaar die die <strong>op</strong> <strong>op</strong> elkaar elkaar zijn zijn afgestemd.)<br />

afgestemd.)<br />

Afspraken <strong>op</strong> <strong>op</strong> projectniveau:<br />

1. Welke Welke applicatieonderdelen applicatieonderdelen applicatieonderdelen applicatieonderdelen moeten moeten moeten moeten daadwerkelijk daadwerkelijk daadwerkelijk daadwerkelijk van van van van unittests unittests worden worden voorzien? voorzien? In In In verband verband verband met met met de<br />

de<br />

verwerkingssnelheid wordt interactie interactie met met gebruiker/netwerk<br />

gebruiker<br />

netwerk/database database doorgaans uitgesloten uitgesloten.<br />

2. Diepgang Diepgang (coverage) (coverage) van van van de de unittests, unittests, unittests, mogelijk mogelijk mogelijk afhankelijk afhankelijk afhankelijk van van een een een indeling indeling indeling in in in risicoklassen.<br />

risicoklassen.<br />

risicoklassen.<br />

3. Aanvliegroute: Aanvliegroute: unittests unittests unittests parallel parallel parallel met met de de de code code code code <strong>op</strong>stellen, <strong>op</strong>stellen, <strong>op</strong>stellen, <strong>op</strong>stellen, of of of eerst eerst eerst unittests unittests unittests <strong>op</strong>stellen <strong>op</strong>stellen <strong>op</strong>stellen voordat voordat voordat voordat er er er er code code code wordt<br />

wordt<br />

wordt<br />

wordt<br />

geschreven? De laatste werkwijz werkwijze e geniet geniet de de voorkeur, voorkeur, en en wordt wordt Test Test Driven Driven Driven Devel<strong>op</strong>ment Devel<strong>op</strong>ment<br />

genoemd. Een (falende!)<br />

(falende!)<br />

unittest wordt <strong>op</strong>gesteld v vvóórdat<br />

rdat rdat er er er code code code wordt wordt toegevoegd. toegevoegd. toegevoegd. Pas Pas Pas Pas daarna daarna daarna wordt wordt de de code code geschreven, geschreven, zodat zodat zodat de de de test<br />

test<br />

test<br />

slaagt.<br />

Pagina agina 13 van 19


Testen3.0 TM<br />

Aanpak<br />

Aanpak<br />

1. Bedenk een test voor de de gevraagde gevraagde functionaliteit functionaliteit (wat (wat is is de de bedoeling bedoeling bedoeling van van de code).<br />

code).<br />

2. Let ook <strong>op</strong> wat er moet moet gebeuren als het het fout fout gaat.<br />

gaat.<br />

3. Schrijf Schrijf de de de test. test. Controleer Controleer dat dat dat dat de de de test test test faalt. faalt. faalt. (Immers, (Immers, (Immers, (Immers, de de de code code code ontbreekt ontbreekt ontbreekt nog.)<br />

nog.)<br />

4. Schrijf de code.<br />

5. Voer de test test uit uit (ook (ook voor voor de foutsituat foutsituatie).<br />

foutsituat<br />

6. Refactor de code.<br />

7. Voer nogmaals alle tests uit.<br />

8. Controleer Controleer of of of de de de beoogde beoogde beoogde coverage coverage coverage coverage (zie (zie (zie (zie mastertestplan/Definition mastertestplan/Definition mastertestplan/Definition mastertestplan/Definition of of of Done) Done) is is behaald.<br />

behaald.<br />

Aan Aandachtspunt<br />

Aan dachtspunt<br />

dachtspunt<br />

Unit testen moeten zzo<br />

o o min mogelijk elkaar elkaar kunnen kunnen be beïnvloeden.<br />

be<br />

nvloeden. Als ls er objecten objecten worden worden gebruikt, gebruikt, maak maak deze deze deze dan<br />

dan<br />

dan<br />

specifiek voor voor de de test test test aan, aan, aan, en en gooi gooi ze ze na na de de test test test meteen meteen weer weer weg.<br />

weg.<br />

weg.<br />

Voorbeeld Voorbeeld (JUnit 4.x)<br />

Gevraagd: Gevraagd: een een een functie functie die die kan kan vertellen vertellen vertellen of of of een een een getal getal getal al al dan dan dan niet niet niet positief positief positief is.<br />

is.<br />

is.<br />

Coverage: het gebruik van van equivalentieklassen equivalentieklassen wordt wordt voldoende voldoende geacht.<br />

geacht.<br />

public class class Voorbeeld Voorbeeld {<br />

}<br />

public public static static boolean boolean boolean isPositief(int x) {<br />

}<br />

// // 2 2 equivalentieklassen: equivalentieklassen: probeer probeer probeer zowel zowel zowel een een een positief positief positief als als als een een negatief negatief getal.<br />

getal.<br />

// // @Test @Test is is annotatiesyntax, annotatiesyntax, annotatiesyntax, geïntroduceerd geïntroduceerd bij bij JUnit JUnit JUnit 4.0 4.0 4.0 4.0 en en en ondersteund ondersteund ondersteund door door Java Java 5<br />

5<br />

en hoger.<br />

import org.junit.Assert;<br />

org.junit.Assert;<br />

public class class Voorbeeld {<br />

}<br />

public public static static boolean isPositief(int x) {<br />

}<br />

@Test @Test public public void positieveTest() {<br />

int a = 5;<br />

boolean boolean out out = = Voorbeeld.isPositief(a);<br />

Assert.assertTrue("Uitkomst Assert.assertTrue("Uitkomst Assert.assertTrue("Uitkomst zou zou zou true true true moeten moeten zijn zijn want want 5 5 is is positief", out);<br />

out);<br />

}<br />

@Test @Test public public void negatieveTest() {<br />

int a = -3;<br />

boolean boolean out out = = Voorbeeld.isPositief(a);<br />

Assert.assertFalse("Uitkomst Assert.assertFalse("Uitkomst zou false moeten zijn want -3 3 is negatief", out out); out<br />

}<br />

Als invulling van va n de code proberen proberen we:<br />

public static static boolean boolean isPositief(int x) {<br />

return return x>=0;<br />

x>=0;<br />

}<br />

Nu slagen beide tests.<br />

Later Later krijgen krijgen we we het het verzoek verzoek verzoek om om om ook ook de de de grenswaarde grenswaarde grenswaarde grenswaarde (x (x (x = = = 0) 0) 0) <strong>op</strong> <strong>op</strong> te te nemen nemen nemen in in de de de test.<br />

test.<br />

test.<br />

@Test public public void zeroTest() zeroTest() {<br />

int a = 0;<br />

boolean boolean out out out = = Voorbeeld.isPositief(a);<br />

Voorbeeld.isPositief(a);<br />

Assert.assertFalse("Uitkomst Assert.assertFalse("Uitkomst Assert.assertFalse("Uitkomst zou zou false false moeten moeten zijn zijn want 0 0 is niet<br />

niet<br />

positief", out);<br />

}<br />

Die test test faalt. Kennelijk Kennelijk is de de code onjuist.<br />

onjuist.<br />

public public static static boolean boolean isPositief(int x) {<br />

return x>0; x><br />

}<br />

Nu slagen alle alle drie de de tests.<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Unit Unit Unit Unit Unit testen testen<br />

testen<br />

testen<br />

testen – Uitvoering<br />

Uitvoering<br />

Pagina agina 14 van 19


Testen3.0 TM<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Dekkingsgraad Dekkingsgraad Dekkingsgraad Dekkingsgraad Dekkingsgraad Dekkingsgraad / / / / / / / / test test test test test test test test test test test test test coverage<br />

coverage<br />

coverage<br />

coverage<br />

coverage coverage<br />

coverage<br />

Definitie:<br />

Dekkingsgraad Dekkingsgraad = = = aantal aantal aantal geteste geteste geteste geteste combinaties combinaties combinaties / / / benodigd benodigd benodigd aantal aantal combinaties.<br />

combinaties.<br />

Doel:<br />

Kunnen Kunnen bepalen bepalen bepalen bepalen of of of een een een een (unit)test (unit)test (unit)test de de de de complexiteit complexiteit complexiteit van van van de de de code code voldoende voldoende afdekt.<br />

afdekt.<br />

Principe:<br />

Samengestelde Samengestelde condities condities condities uitdrukken uitdrukken uitdrukken in in enkelvoudige enkelvoudige enkelvoudige condities. condities. condities. condities. Selecteren Selecteren van<br />

van de te<br />

testen combinaties. combinaties. In In praktijk: tooling geeft geeft het behaalde percentage percentage aan.<br />

aan.<br />

Bruikbaarheid: Whitebox Whitebox testen, testen, of of of blackbox blackbox in in in geval geval geval van van van een een een zeer zeer formele formele formele of of gestructureerde<br />

gestructureerde<br />

gestructureerde<br />

testbasis.<br />

Engelse term: Test Test coverage coverage (de (de andere andere Engelse Engelse Engelse termen termen termen zijn zijn zijn hieronde hieronder hieronde<br />

hieronder<br />

<strong>op</strong>genomen).<br />

Aandachtspunten<br />

Aandachtspunten<br />

• Context: vertaalslag vertaalslag als als bij bij de de beslissingstabellentechniek.<br />

beslissingstabellentechniek.<br />

• Herhaalbaarheid: Herhaalbaarheid: meerdere meerdere meerdere mogelijkheden mogelijkheden mogelijkheden om om om aan aan aan de de de gevraagde gevraagde gevraagde test test test coverage coverage te te voldoen.<br />

voldoen.<br />

voldoen.<br />

Nadere definities:<br />

• Statement coverage: coverage: ieder ieder ieder statement statement wordt wordt ten ten minste minste éé één éé<br />

één<br />

n keer uitgevoerd → één testgeval.<br />

• Multiple Multiple condition condition coverage: coverage: coverage: iedere iedere iedere combinatie combinatie combinatie van van condities condities wordt wordt wordt getest getest<br />

getest → 2<br />

• Decision coverage coverage (ook: (ook: (ook: branch branch branch coverage): coverage): coverage): de de samengestelde samengestelde determinant determinant wordt wordt één één keer keer waar waar en en één één keer<br />

keer<br />

onwaar getest → altijd maar twee testgevallen.<br />

• Condition coverage: coverage: coverage: iedere iedere enkelvoudige enkelvoudige conditie conditie in in de samengestelde determinant wordt ten minste één keer<br />

keer<br />

waar en en één één keer onwaar gekozen<br />

gekozen → wederom slechts twee testgevallen.<br />

• Decision/condition coverage: coverage: de de samengestelde samengestelde samengestelde determin<br />

determin determinant ant wordt één keer waar en één keer onwaar gekozen,<br />

onder de de voorwaarde voorwaarde dat dat iedere enkelvoudige enkelvoudige conditie conditie conditie ook ook één één keer keer keer waar waar waar en en één één één keer keer onwaar onwaar onwaar is. is. Dit Dit impliceert<br />

impliceert<br />

decision coverage coverage en condition coverage → ook nu slechts twee testgevallen.<br />

• Modified condition condition/decision /decision /decision coverage coverage (MCDC) (MCDC) (condition/determination (condition/determination coverage): coverage): iedere iedere enkelvoudige<br />

enkelvoudige<br />

determinant bepaalt tweemaal tweemaal de de de waarde waarde waarde van van de de de samengestelde samengestelde determinant, determinant, één één één keer keer keer waar waar waar en en en één één één keer keer onwaar.<br />

onwaar.<br />

onwaar.<br />

Dit geschiedt onafhankelijk, onafhankelijk, dat dat wil wil zeggen zeggen door door door andere andere andere determinant<br />

determinanten determinant constant te laten. Modified<br />

condition/decision coverage coverage coverage impliceert impliceert impliceert decision/condition decision/condition decision/condition coverage. coverage. coverage. MCDC MCDC MCDC vergt vergt hooguit hooguit 1+ 1+ 1+ (1½ (1½ (1½ * * n) n) testgevallen,<br />

testgevallen,<br />

testgevallen,<br />

waar n n n het het het aantal aantal enkelvoudige enkelvoudige enkelvoudige determinanten determinanten is.<br />

is.<br />

n één testgeval.<br />

testgevallen.<br />

Decision Decision coverage coverage (ook: (ook: branch branch coverage): coverage): de de samengestelde samengestelde determinant wordt één keer keer waar en één één keer<br />

Condition Condition coverage: coverage: iedere iedere enkelvoudige enkelvoudige conditie in de de samengestelde determinant wordt wordt ten ten minste minste één één keer<br />

keer<br />

wederom slechts twee testgevallen.<br />

ant wordt één één keer keer waar en en één keer keer onwaar onwaar gekozen,<br />

gekozen,<br />

onder onder de voorwaarde dat dat iedere iedere enkelvoudige enkelvoudige conditie conditie ook ook één één keer keer waar waar en en één één keer keer onwaar onwaar is. is. Dit Dit impliceert<br />

impliceert<br />

ook nu slechts twee testgevallen.<br />

/decision coverage (MCDC) (condition/determination coverage): iedere enkelvoudige<br />

determinant determinant bepaalt tweemaal tweemaal de waarde van de samengestelde determinant, determinant, één één keer keer waar waar en en één één keer keer onwaar.<br />

onwaar.<br />

en constant te laten. Modified<br />

condition/decision condition/decision coverage coverage impliceert impliceert decision/condition coverage. coverage. MCDC MCDC vergt vergt hooguit hooguit 1+ 1+ (1½ (1½ * * n) n) testgevallen,<br />

testgevallen,<br />

Voorbereiding<br />

Voorbereiding<br />

Voorafgaand aan aan het het testen testen dient dient het het het volgende volgende v<br />

vvoorbereid<br />

voorbereid<br />

oorbereid te te worden worden worden door door de de de testcoördinator testcoördinator testcoördinator of testmanager:<br />

1. Keuze Keuze voor voor voor voor beoogde beoogde beoogde dekkingsgraad dekkingsgraad dekkingsgraad conform conform conform master master master testplan testplan testplan en en product product risicoanalyse.<br />

risicoanalyse.<br />

risicoanalyse.<br />

2. Bepalen enkelvoudige determinanten.<br />

determinanten.<br />

3. (MCDC) (MCDC) Telkens Telkens voor voor voor één één één enkelvoudige enkelvoudige enkelvoudige determinant determinant determinant twee twee twee combinaties combinaties combinaties selecteren<br />

selecteren die die alleen alleen verschillen verschillen in de<br />

waarde waarde voor voor voor die die die enkelvoudige enkelvoudige enkelvoudige determinant, determinant, determinant, determinant, en en en en wel wel wel zodanig zodanig zodanig dat dat daarmee daarmee daarmee daarmee de de de samengestelde samengestelde samengestelde determinant<br />

determinant<br />

determinant determinant één keer<br />

waar en één keer onwaar onwaar is. is. is. Hergebruik Hergebruik Hergebruik zoveel zoveel zoveel mogelijk mogelijk mogelijk combinaties.<br />

combinaties.<br />

4. Nadere uitwerking uitwerking uitwerking verwachte verwachte resultaten: resultaten: hoe hoe vertaa<br />

vertaalt vertaa vertaalt<br />

lt een waarde waarde van van de de determinanten determinanten zich zich naar naar een een een verifieerbaar<br />

verifieerbaar<br />

gedrag van de de de applicatie. applicatie. (Zie (Zie (Zie beslissingstabellentechniek.)<br />

beslissingstabellentechniek.)<br />

Uitvoering<br />

Uitvoering<br />

Tijdens de de uitvoering houdt houdt de de tester tester tester de de geteste geteste combinaties<br />

combinaties bij, en en vergelijkt waargenomen waargenomen versus versus verwacht<br />

applicatiegedrag. edrag.<br />

Voorbeeld<br />

Voorbeeld<br />

Samengestelde determinant: V = = (A<br />

(A EN B) OF (C EN D) OF (A EN C).<br />

SC (statement coverage):<br />

coverage):<br />

0000 . [V = 0]<br />

DC (decision coverage):<br />

coverage):<br />

0101 0101 en 1110 . [V = = 0; V=1]<br />

CC (condition coverage):<br />

coverage):<br />

0110 0110 en 1001 . [V=0; V=0]<br />

DCC (decision/condition (decision/condition coverage): 0101 en 1010 . [V=0; V= 1]<br />

MCDC:<br />

(A is bepalend) 0100 0100 en 1100.<br />

(B is bepalend) bepalend) 1000 1000 en 1100.<br />

1100.<br />

(C is bepalend) 1000 1000 en 1010.<br />

(D is bepalend) 0110 0110 en 0111.<br />

Na Na wegstrepen wegstrepen duplicaten: duplicaten: 0100, 0100, 0100, 0110, 0110, 0110, 0111, 0111, 0111, 1000, 1000, 1010, 1010, 1100 1100 1100 . . . [V=0;0;1;0;1;1]<br />

[V=0;0;1;0;1;1]<br />

Pagina agina 15 van 19


Testen3.0 TM<br />

Definitie:<br />

Doel:<br />

Principe:<br />

Aandachtspunten Aandachtspunten Aandachtspunten Aandachtspunten bij bij bij bij bij het het het het het formeren formeren formeren formeren formeren formeren formeren van van van van van van een een een agile agile agile agile agile team<br />

team<br />

team<br />

team<br />

team<br />

• Een agile agile team team is is multidisciplinair: multidisciplinair: in principe principe is is iedere iedere stakeho stakeholder stakeho<br />

lder vertegenwoordigd vertegenwoordigd vertegenwoordigd in in het het team. team. Minimaal<br />

bestaat bestaat een een een agile agile agile team team team uit uit een een een klantvertegenwoordiger klantvertegenwoordiger klantvertegenwoordiger klantvertegenwoordiger (product (product (product owner), owner), owner), owner), team team team facilitator facilitator facilitator facilitator (ScrumMaster),<br />

(ScrumMaster),<br />

(ScrumMaster),<br />

ontwerper(s), ontwerper(s), ontwikkelaar(s), ontwikkelaar(s), tester(s), tester(s), tester(s), eindgebruiker(s) eindgebruiker(s) eindgebruiker(s) en en beheerder(s).<br />

beheerder(s).<br />

beheerder(s).<br />

• Ieder teamlid moet mondeling goed kunnen kunnen communiceren communiceren met met zijn teamleden.<br />

teamleden.<br />

• Een agile agile team team zit zit zoveel zoveel mogelijk mogelijk <strong>op</strong> <strong>op</strong> één één locatie.<br />

locatie.<br />

• Bij Bij outsourcing/offshoring: outsourcing/offshoring: zorg zorg zorg voor voor voor multidisciplinaire multidisciplinaire multidisciplinaire teams teams teams <strong>op</strong> <strong>op</strong> <strong>op</strong> iedere iedere locatie.<br />

locatie.<br />

locatie.<br />

• Teamleden Teamleden moeten moeten elkaar elkaar elkaar qua qua qua karakter karakter aanvullen; aanvullen; aanvullen; aanvullen; denk denk denk bijv. bijv. aan aan aan Belbin<br />

Belbin-rollen.<br />

Belbin<br />

• Geadviseerd viseerd viseerd viseerd wordt wordt wordt wordt om om om om om een een een een nieuw nieuw nieuw nieuw team team team minimaal minimaal minimaal minimaal drie drie drie drie iteraties iteraties iteraties de de de tijd tijd te te geven geven geven om om het het het proces proces proces <strong>op</strong> <strong>op</strong> elkaar elkaar elkaar af af te<br />

te<br />

te<br />

stemmen.<br />

• Als Als vuistregel vuistregel vuistregel geldt geldt geldt dat dat dat vooral vooral vooral vooral beginnende beginnende beginnende beginnende teams teams teams teams teams niet niet niet niet te te te groot groot groot groot moeten moeten moeten zijn, zijn, zijn, een een een een teamgrootte teamgrootte teamgrootte teamgrootte van van van van zeven zeven zeven plus plus plus of of of of min<br />

min<br />

min<br />

min<br />

twee leden.<br />

Best presterende teams teams teams ontstaan ontstaan ontstaan niet niet niet vanzelf. vanzelf. vanzelf. Belangrijkste Belangrijkste Belangrijkste voorwaarde voorwaarde voor voor voor voor een een een succesvol succesvol team team is is is dat dat iedereen iedereen iedereen zich<br />

zich<br />

zich<br />

inzet inzet voor voor voor het het het team team team en en en en verstand verstand verstand verstand heeft heeft heeft heeft van van van van softwareontwikkeling. softwareontwikkeling. softwareontwikkeling. In In In In een een een agile agile agile team team team is is is iedereen iedereen iedereen iedereen gericht gericht gericht gericht <strong>op</strong> <strong>op</strong> toename toename toename van<br />

van<br />

van<br />

zowel de individuele competenties competenties als o oook<br />

o ok de teamsamenwerking.<br />

teamsamenwerking.<br />

Om Om agile agile te te te kunnen kunnen kunnen kunnen werken werken werken is is is het het het noodzakelijk noodzakelijk noodzakelijk dat dat dat teams teams teams een een een gemeenschappelijk gemeenschappelijk gemeenschappelijk doel doel doel hebben, hebben, hebben, er er er er wederzijds<br />

wederzijds<br />

wederzijds<br />

wederzijds<br />

vertrouwen vertrouwen en en respect respect is is en en er er er een een een proces proces proces is is is is van van van gezamenlijke gezamenlijke gezamenlijke besluitvorming.<br />

besluitvorming.<br />

Zelforganiserende teams teams zijn zijn geen geen ongeleide ongeleide team teams, team<br />

s, s, maar maar steeds steeds in in staat staat om om zichzelf te te organiseren organiseren om om om tegemoet tegemoet tegemoet te<br />

te<br />

te<br />

komen aan aan nieuwe nieuwe uitdagingen uitdagingen uitdagingen waarvoor waarvoor waarvoor het het het team team team zich zich zich gesteld gesteld ziet.<br />

ziet.<br />

Teamrollen Teamrollen Teamrollen<br />

Teamrollen Teamrollen Teamrollen<br />

Scrum Scrum onderkent drie drie rollen:<br />

Product owner<br />

Teamleden<br />

Projectleider (ScrumMaster)<br />

Een Een agile agile team team team is is een een een team team team dat dat dat in in in in staat staat staat is is is frequent frequent frequent werkende werkende software software <strong>op</strong> <strong>op</strong> te<br />

te<br />

leveren, leveren, iteratief iteratief iteratief te te te werken werken werken en en zich zich zich effectief effectief effectief multidisciplinair multidisciplinair ontwikkelt.<br />

ontwikkelt.<br />

Inzicht Inzicht in in de de de rolverdeling rolverdeling rolverdeling en en en aandachtspunten aandachtspunten aandachtspunten bij bij het het samenstellen samenstellen v vvan<br />

v<br />

v high<br />

performance teams.<br />

Stel Stel een een een zodanig zodanig team team team samen samen samen dat dat dat snel snel snel en en langdurig langdurig langdurig in in staat staat staat is is is klinkende<br />

klinkende<br />

klinkende<br />

resultaten <strong>op</strong> <strong>op</strong> te te leveren.<br />

leveren.<br />

DSDM DSDM Atern Atern<br />

Atern onderkent twaalf twaalf rollen rollen <strong>op</strong> <strong>op</strong> drie drie niveaus:<br />

niveaus:<br />

<strong>Q<strong>RC</strong></strong>: <strong>RC</strong>: <strong>RC</strong>: <strong>RC</strong>: <strong>RC</strong>: <strong>RC</strong>: <strong>RC</strong>: <strong>RC</strong>: <strong>Agile</strong> <strong>Agile</strong> <strong>Agile</strong> <strong>Agile</strong> teams<br />

teams<br />

teams<br />

teams<br />

teams<br />

• de stem van de klant<br />

• eigenaar van requirements<br />

• verantwoordelijk voor prioriteit en return on investment<br />

• de de doeners, doeners, creëren creëren business value<br />

value<br />

• zelforganiserend<br />

• zelfsturend<br />

• gekwalificeerde gekwalificeerde specialisten (multidisciplinaire teams)<br />

teams)<br />

bestaande bestaande uit zeven zeven plus/minus plus/minus twee twee twee leden.<br />

leden.<br />

• proceseigenaar<br />

• faciliteert ciliteert ciliteert het proces proces en procesverbetering<br />

procesverbetering<br />

• beschermer beschermer en en coach coach van van het het team<br />

team<br />

• Projectniveaurollen Projectniveaurollen – de de de managers, managers, coördinatoren coördinatoren en en stuurgroepleden stuurgroepleden stuurgroepleden stuurgroepleden van van van van het het het projectwerk. projectwerk. projectwerk. projectwerk. Ze Ze Ze Ze zijn zijn zijn zijn normaal<br />

normaal<br />

normaal<br />

niet niet betrokken betrokken in in de ddagelijkse<br />

dagelijkse<br />

agelijkse ontwikkeling ontwikkeling ontwikkeling van van van van de de de de <strong>op</strong>lossing, <strong>op</strong>lossing, <strong>op</strong>lossing, hoewel hoewel hoewel hoewel ze ze altijd altijd altijd voldoende voldoende voldoende beeld beeld beeld beeld van van van de<br />

de<br />

de<br />

<strong>op</strong>lossing <strong>op</strong>lossing <strong>op</strong>lossing moeten moeten moeten hebben hebben hebben om om om om het het het het proces proces proces proces te te te te begrijpen begrijpen begrijpen begrijpen en en en en waar waar waar waar nodig nodig nodig nodig strategische strategische strategische sturing sturing te te te geven.<br />

geven.<br />

• Solution Solution devel<strong>op</strong>ment teamrollen<br />

teamrollen – de de vormers vormers vormers en en de de bouwers van van de de <strong>op</strong>lossing. <strong>op</strong>lossing. Ze<br />

Ze zijn collectief<br />

verantwoordelijk verantwoordelijk verantwoordelijk voor voor voor voor de de de dagelijkse dagelijkse dagelijkse ontwikkeling ontwikkeling ontwikkeling van van van de de de <strong>op</strong>lossing <strong>op</strong>lossing <strong>op</strong>lossing en en en de de de geschiktheid geschiktheid geschiktheid ervan ervan ervan voor voor voor voor het<br />

het<br />

het<br />

het<br />

bedrijfsdoel.<br />

• Overige rollen – omvat omvat andere andere stakeholders stakeholders stakeholders stakeholders en en en specialisten. specialisten. Deze Deze Deze rollen rollen rollen voorzien voorzien voorzien in in in het het het assisteren assisteren assisteren en en en hulp<br />

hulp<br />

hulp<br />

bieden bieden aan het pr projectteam ojectteam waar dat nodig is.<br />

Pagina agina 16 van 19


Testen3.0 TM<br />

Figuur Figuur Figuur Figuur 36 36 36 36 Rollen Rollen Rollen Rollen volgens volgens volgens DSDM DSDM DSDM DSDM Atern<br />

Atern<br />

Atern<br />

Atern<br />

Business Business sponsor<br />

sponsor Verantwoordelijk voor voor de<br />

realisatie en en eigenaar eigenaar van van van de de geleverde <strong>op</strong>lossing.<br />

<strong>op</strong>lossing.<br />

Business Business visionary<br />

visionary Meer betrokken bij de<br />

uitvoering en en verantwoordelijk verantwoordelijk voor voor het het interpreteren<br />

interpretere<br />

interpretere<br />

van de de behoefte van van de business business sponsor.<br />

(zie http://www.dsdm.org/atern/roles<br />

http://www.dsdm.org/atern/roles-responsibilities/team<br />

http://www.dsdm.org/atern/roles responsibilities/team-organisation/<br />

organisation/ )<br />

Team overleg<br />

Een agile team kent drie belangrijke overlegsoorten<br />

Start van de iteratie<br />

Dagelijkse stand stand-up<br />

meeting.<br />

Einde van de iteratie<br />

Hierin word worden de de iteratieplanning iteratieplanning bepaald, bepaald<br />

schattingen chattingen chattingen gemaakt gemaakt en en prioriteiten<br />

prioriteiten<br />

gesteld gesteld aan de requirements<br />

requirements. .<br />

Hierin Hierin worden standaard drie zaken<br />

behandeld:<br />

• Wat heb heb ik ik gisteren gisteren gedaan?<br />

• Wat ga ga ik vandaag vandaag doen?<br />

doen?<br />

• Welke belemmering<br />

belemmeringen en ondervind ik?<br />

• Demo van de resultaten<br />

• Retrospective<br />

Pagina agina 17 van 19<br />

Project Project Project manager manager<br />

manager Verantwoordelijk voor voor alle<br />

alle<br />

aspecten aspecten in het <strong>op</strong>leveren van de de <strong>op</strong>lossing.<br />

Technical Technical Technical coordinator<br />

coordinator<br />

coordinator Zorgt dat er een technisch<br />

coherente coherente <strong>op</strong>lossing <strong>op</strong>lossing ontstaat ontstaat die die voldoet voldoet aan<br />

aan<br />

technische technische kwaliteitsstandaarde<br />

kwaliteitsstandaarden.<br />

kwaliteitsstandaarde<br />

Team Team Team Team leader leader<br />

leader Werkt met het team om alle aspecten<br />

van van <strong>op</strong>levering te plannen plannen en te te coördineren. coördineren. Meer Meer een<br />

een<br />

een<br />

leiderschapsrol leiderschapsrol dan dan een een managementrol managementrol en en wordt<br />

wordt<br />

idealiter idealiter gekozen door door teamleden als als als de de beste beste beste persoon<br />

persoon<br />

om om het het team door een bepaalde fase fase van van het het projec project projec<br />

projec te<br />

leiden.<br />

Business Business Business ambassador<br />

ambassador<br />

ambassador Vertegenwoordigt de<br />

businessrol businessrol in in het het solution solution devel<strong>op</strong>ment devel<strong>op</strong>ment team.<br />

team.<br />

Business Business Business analyst analyst Gericht <strong>op</strong> <strong>op</strong> de de relatie relatie tussen business<br />

business- business<br />

en en technische rollen rollen om om juiste juiste richting richting te te te geven geven aan aan het<br />

devel<strong>op</strong>ment devel<strong>op</strong>ment team. team. Vertaalt de de behoefte van dde<br />

d<br />

e<br />

business business naar naar de correcte richting richting voor het<br />

het<br />

devel<strong>op</strong>ment team.<br />

Solution Solution Solution devel<strong>op</strong>er<br />

devel<strong>op</strong>er<br />

devel<strong>op</strong>er Vertaalt de de businessbehoefte<br />

businessbehoefte<br />

in in een werkende werkende <strong>op</strong>lossing <strong>op</strong>lossing die die tegemoet tegemoet komt komt aan<br />

aan<br />

functionele en non-functionele non functionele eisen.<br />

Solution Solution Solution tester tester tester<br />

tester Is geïntegreerd geïntegreerd in het het devel<strong>op</strong>ment<br />

devel<strong>op</strong>ment<br />

team en voert testen uit die die in in overeenstemming overeenstemming zijn<br />

zijn<br />

zijn<br />

met met de de technische technische teststrategie teststrategie gedurende gedurende het het project.<br />

project.<br />

project.<br />

Business Business Business advisor<br />

advisor Collega(’s) van de business<br />

ambassador, ambassador, geeft geeft advies advies <strong>op</strong> <strong>op</strong> specifieke specifieke vraagstukken.<br />

vraagstukken.<br />

Worksh<strong>op</strong> Worksh<strong>op</strong> Worksh<strong>op</strong> Worksh<strong>op</strong> Worksh<strong>op</strong> facilitator facilitator facilitator<br />

facilitator Faciliteert het worksh<strong>op</strong>proces,<br />

katalysator lysator voor voor voorbereiding voorbereiding en en communicatie.<br />

communicatie.<br />

Atern Atern Atern coach coach Helpt het het team team om om het het meeste uit de<br />

Aternaanpak Aternaanpak te halen.<br />

Specialisten Specialisten<br />

Specialisten Naast bovengenoemde kunnen<br />

specifieke specifieke expertrollen expertrollen expertrollen <strong>op</strong> <strong>op</strong> <strong>op</strong> ad ad ad hoc hoc hoc basis basis basis aan aan aan het<br />

het<br />

kernteam kernteam worden worden toegevoegd, bijvoorbeeld technische<br />

technische<br />

experts.


Testen3.0 TM<br />

Scrum is een p<strong>op</strong>ulaire agile<br />

projectmanagementmethode,<br />

met name name gebruikt voor<br />

softwareontwikkeling.<br />

Het team dient dient multidisciplinair<br />

te zijn, uitgerust met al alle le<br />

benodigde vaardigheden, om tot<br />

tot<br />

werkende software te te komen. Er<br />

Er<br />

is geen geen sprake van van een fasering;<br />

alle activiteiten activiteiten vinden binnen de<br />

de<br />

iteratie plaats.<br />

Er wordt gewerkt met iteraties<br />

iteraties<br />

(sprints) van een vaste lengte<br />

(timebox). Er wordt áltijd áltijd <strong>op</strong> tijd<br />

<strong>op</strong>geleverd, rd, en en volgens een vast<br />

kwaliteitskader. Eventuele sturing<br />

sturing<br />

vindt plaats plaats <strong>op</strong> de de <strong>op</strong> te te leveren<br />

functionaliteit.<br />

Er Er Er is is is altijd altijd altijd een een een intensieve intensieve samenwerking samenwerking samenwerking samenwerking met met met met de de de de klant, klant, klant, klant, en en en en de de de de sprints sprints sprints sprints sprints worden worden worden worden worden kort kort kort kort gehouden. gehouden. gehouden. gehouden. Zodoende Zodoende Zodoende Zodoende wordt wordt wordt wordt er er er er veel<br />

veel<br />

veel<br />

veel<br />

feedback gegenereerd, en en kan kan de klant klant zich zich zich ervan ervan verzekeren verzekeren dat dat dat het het het eindresultaat eindresultaat eindresultaat een een hoge hoge hoge waarde waarde heeft heeft voor voor voor de<br />

de<br />

de<br />

business. business. business. Requirements Requirements Requirements met met met de de hoogste hoogste hoogste business business business business value value worden worden worden als als als als eerste eerste eerste geïmplementeerd.<br />

geïmplementeerd.<br />

geïmplementeerd.<br />

geïmplementeerd.<br />

Proces Proces<br />

Proces<br />

Sprint planning meeting<br />

meeting Meeting Meeting van van van team team team en en product product owner, owner, waarin waarin waarin de de requireme<br />

requirements requireme nts worden verduidelijkt, verduidelijkt, en<br />

de sprint backlog backlog wordt wordt <strong>op</strong>gesteld.<br />

<strong>op</strong>gesteld.<br />

Daily stand stand-up up meeting Een Een staande staande staande bespreking bespreking bespreking van van hooguit hooguit vijftien vijftien vijftien vijftien minuten. minuten. minuten. Drie Drie vragen vragen voor voor voor iedereen:<br />

iedereen:<br />

iedereen:<br />

(daily scrum)<br />

1. 1. 1. Wat Wat heb heb ik ik gedaan gedaan sinds sinds sinds de de de vorige vorige vorige meeting?<br />

meeting?<br />

meeting?<br />

2. 2. Wat ga ik ik vandaag vandaag doen? doe<br />

3. 3. Is er er iets wat me me daarbij daarbij hindert?<br />

Demo<br />

Retrospective<br />

Rollen<br />

Rollen<br />

Product owner Neemt beslissingen beslissingen over over de de inhoud inhoud en en de<br />

de<br />

onderlinge prioritering van van requirements. requirements. Hij<br />

Hij<br />

is vertegenwoordiger van van van alle alle stakeholders.<br />

ScrumMaster Faciliteert het het team team onder onder andere door<br />

door<br />

obstakels weg weg te te nemen, nemen, en en ziet ziet toe toe <strong>op</strong> <strong>op</strong> de<br />

de<br />

naleving van van de de Scrumprincipes. Scrumprincipes. Scrumprincipes. Schermt het<br />

het<br />

team af af van van bemoeienissen bemoeienissen van van buitenaf.<br />

buitenaf.<br />

Teamlid<br />

Documenten Documenten Documenten Documenten Documenten Documenten en en producten<br />

producten<br />

producten<br />

producten<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Scrum<br />

Scrum<br />

Scrum<br />

De De teamleden teamleden presenteren presenteren presenteren de de de de gerealiseerde gerealiseerde gerealiseerde functionaliteit functionaliteit functionaliteit functionaliteit en en ontvangen ontvangen ontvangen feedback feedback feedback van<br />

van<br />

van<br />

van<br />

de product product owner en overige stakeholders.<br />

Team Team plus plus plus product product owner owner owner evalueren evalueren het het het proces proces proces en en en definiëren definiëren acties<br />

acties<br />

acties ter verbetering.<br />

Uitvoerende. Neemt Neemt deel deel aan aan alle alle alle meetings<br />

meetings<br />

en pakt pakt pakt taken taken zelfstandig zelfstandig zelfstandig <strong>op</strong>. <strong>op</strong>. Alle Alle teamleden<br />

teamleden<br />

hebben één één gezamenlijk gezamenlijk doel.<br />

doel.<br />

Product backlog Lijst Lijst van requirements in in een ruwe vorm, Ook Ook als er meerdere meerdere teams teams teams zijn, zijn, is is er er slechts slechts één<br />

één<br />

ge geordend door de product owner.<br />

product product backlog backlog en en een een product product owner.<br />

Sprint backlog De requirements requirements di die di e worden worden <strong>op</strong>gepakt <strong>op</strong>gepakt in<br />

in Team Team en product product owner kiezen kiezen samen; samen; team<br />

team<br />

team<br />

de sprint.<br />

committeert committeert <strong>op</strong> <strong>op</strong> basis basis van best-effort. best effort.<br />

Werkende Definition Definition of of Done Done bevat alle<br />

alle<br />

software<br />

kwaliteitscriteria kwaliteitscriteria die die het het team team nastreeft.<br />

Pagina agina 18 van 19<br />

Moet beschikbaar zijn voor het het team.<br />

team.<br />

Mag de backlog aanpassen; aanpassen; wijzigingen wijzigingen gaan<br />

gaan<br />

de volgende sprint in.<br />

Alert <strong>op</strong> <strong>op</strong> het het onderkennen onderkennen van van problemen;<br />

voorzitter voor alle meetings meetings met uitzondering<br />

van de demo.<br />

Werkt eigen eigen tijdsinschattingen tijdsinschattingen bij bij bij tijdens tijdens de de daily<br />

daily<br />

scrum. Proactief Proactief in in het het signaleren van<br />

problemen.<br />

Er Er wordt wordt alleen alleen functionaliteit functionaliteit functionaliteit <strong>op</strong>geleverd, <strong>op</strong>geleverd, <strong>op</strong>geleverd, die<br />

die<br />

voldoet oet aan aan de de Definition Definition of of Done.<br />

Done.


Testen3.0 TM<br />

In In In agile agile agile methoden methoden (in (in (in het het het het bijzonder bijzonder bijzonder bijzonder bijzonder bij bij bij bij Scrum) Scrum) Scrum) Scrum) wordt wordt wordt wordt het het het het nagestreefde nagestreefde nagestreefde nagestreefde kwaliteitsniveau kwaliteitsniveau kwaliteitsniveau kwaliteitsniveau expliciet expliciet expliciet expliciet gemaakt gemaakt gemaakt door door door door alle<br />

alle<br />

alle<br />

alle<br />

kwaliteitscriteria kwaliteitscriteria kwaliteitscriteria en en controlestappen controlestappen controlestappen controlestappen <strong>op</strong> <strong>op</strong> <strong>op</strong> <strong>op</strong> te te te sommen sommen sommen in in in de de de zogenoemde zogenoemde zogenoemde Definition Definition of of Don<br />

Don<br />

Don Done.<br />

Om Om Om eenduidig eenduidig eenduidig te te te zijn zijn zijn en en en bruikbaar bruikbaar bruikbaar voor voor voor voor het het het het maken maken maken van van tijdsinschattingen tijdsinschattingen tijdsinschattingen tijdsinschattingen dient dient dient dient de de de de Definition Definition Definition Definition of of of of Done Done Done Done ook ook ook ook enkele<br />

enkele<br />

enkele<br />

enkele<br />

details details te bevatten bevatten aangaande aangaande aangaande de de de werkwijze werkwijze werkwijze en en de de betrokkenen.<br />

betrokkenen.<br />

Bekn<strong>op</strong>theid Bekn<strong>op</strong>theid is is is eveneens eveneens eveneens gewenst; gewenst; daartoe daartoe daartoe zijn zijn zijn verwijzingen verwijzingen verwijzingen naar naar naar externe externe externe docume documenten docume<br />

nten mogelijk.<br />

Er zijn ten minste drie of vier lagen c.q. niveaus niveaus te te te onderscheiden onderscheiden onderscheiden in in in een een een goede Definition Definition of of Done:<br />

Done: (taak), story,<br />

iteratie, en release. Een Een iteratie iteratie resulteert resulteert resulteert in in een een potentieel potentieel productierijp systeem. systeem. In n n zo’n iteratie worden meerdere user<br />

stories (demonstreerbare brokjes brokjes functionaliteit<br />

functionaliteit met met waarde waarde voor voor voor de de klant) klant) gerealiseerd. gerealiseerd.<br />

Eventueel Eventueel worden user stories<br />

<strong>op</strong>gedeeld in taken. In In de de ideale ideale situatie situatie situatie situatie bevat bevat bevat de de de Definition Definition Definition Definition of of of of Done Done Done alles alles alles alles wat wat wat benodigd benodigd benodigd is is is tot tot tot tot en en met met met het het het uitbrengen<br />

uitbrengen<br />

uitbrengen<br />

van een release na naar r productie.<br />

Werkwijze<br />

Werkwijze<br />

Stap Stap Stap 1. 1. 1. Voordat Voordat Voordat het het het het project project project project goed goed goed en en en wel wel wel aanvang aanvang aanvang kan kan kan vinden, vinden, vinden, komen komen komen ‘het ‘het ‘het team’ team’ team’ team’ en en en en de de de klant klant (zijnde (zijnde de de de <strong>op</strong>drachtgever<br />

<strong>op</strong>drachtgever<br />

<strong>op</strong>drachtgever<br />

plus plus plus de de de de beheerorganisatie) beheerorganisatie) beheerorganisatie) een een een lijst lijst lijst van van van kwaliteitscriteria kwaliteitscriteria kwaliteitscriteria overeen. overeen. overeen. Deze Deze Deze lijst lijst lijst wordt wordt wordt <strong>op</strong> <strong>op</strong> <strong>op</strong> papier papier papier gezet, gezet, gezet, en<br />

en<br />

gecommuni<br />

gecommuniceerd ceerd met alle betrokkenen.<br />

Stap Stap Stap 2. 2. 2. De De De Definition Definition Definition of of of of Done Done Done Done wordt wordt in in in acht acht acht genomen genomen genomen bij bij bij het het maken maken maken van van van tijdsinschattingen, tijdsinschattingen, en en en daarbij daarbij daarbij in in in het het bijzonder<br />

bijzonder<br />

de de samenstelling van van van het het programma programma voor voor de de eerste eerste iteratie.<br />

iteratie.<br />

Stap 3. 3. Gedurende de de iteratie iteratie staat staat de Definitio Definition n n of of of Done Done Done centraal centraal bij bij bij alle alle alle activiteiten. activiteiten. Alleen Alleen Alleen functionaliteit functionaliteit die<br />

die<br />

daadwerkelijk daadwerkelijk daadwerkelijk aan aan aan alle alle alle alle criteria criteria voldoet voldoet voldoet voldoet en en dus dus dus echt echt echt ‘af’ ‘af’ is, is, heeft heeft heeft heeft waarde waarde waarde waarde voor voor voor de de de de business.<br />

business.<br />

business.<br />

Stap 4. 4. Na iedere iteratie iteratie wordt ge geëvalueerd ge valueerd valueerd of of of de de de overeengekomen overeengekomen overeengekomen Definition Definition Definition of of of Done Done inderdaad<br />

inderdaad<br />

inderdaad is gehaald, en of<br />

deze deze deze voldoet. voldoet. voldoet. Ingeval Ingeval Ingeval er er er er een een een een nieuw nieuw nieuw nieuw criterium criterium criterium criterium wordt wordt wordt wordt toegevoegd, toegevoegd, toegevoegd, toegevoegd, toegevoegd, wordt wordt wordt wordt wordt er er er er voor voor voor voor de de de de eerstvolgende eerstvolgende eerstvolgende eerstvolgende iteratie iteratie iteratie een een een inhaalslag<br />

inhaalslag<br />

inhaalslag<br />

<strong>op</strong> het programma gezet.<br />

gezet.<br />

Voorbeeld<br />

Voorbeeld<br />

Taak<br />

Taak<br />

St Story St ory<br />

Iteratie<br />

Iteratie<br />

Release<br />

Release<br />

Doel<br />

Doel<br />

Afgeronde en<br />

geteste activiteit<br />

die waarde heeft<br />

voor het team<br />

Werkende<br />

software<br />

component<br />

Potentieel<br />

productierijp<br />

systeem<br />

Daadwerkelijk in<br />

productie nemen<br />

van het product<br />

<strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: <strong>Q<strong>RC</strong></strong>: Definition Definition Definition Definition Definition of of of of of Done<br />

Done<br />

Done<br />

Done<br />

Acties Acties en en controles<br />

controles<br />

• • Gespecificeerde Gespecificeerde voorbeelden voorbeelden gecontroleerd<br />

gecontroleerd<br />

• • Compilatie Compilatie / / automatische automatische syntactische controle<br />

• Test van eigen werkzaamheden<br />

• Check-in in in versiebeheer<br />

• • Review Review <strong>op</strong> <strong>op</strong> uitvoer uitvoer conform conform standaarden<br />

standaarden<br />

• 100% reviews eviews eviews <strong>op</strong> <strong>op</strong> ontwerpen, ontwerpen, code code en testen<br />

• • Alle Alle specificaties specificaties met met met voorbeelden voorbeelden slagen slagen als als testen<br />

testen<br />

• • Alle Alle unit unit testen slagen; slagen; beoogde beoogde coverage coverage behaald<br />

behaald<br />

• • Unit Unit testen: testen: handgeschreven, handgeschreven, niet gek<strong>op</strong>ieerd<br />

• • Onderzoekende Onderzoekende Onderzoekende testen testen uitgevoerd uitgevoerd parallel parallel aan<br />

aan<br />

implementatie verdere unit- unit en integratietesten<br />

• • Demo Demo aan aan en en testen testen door door product owner owner en gebruikers<br />

• • Geen Geen enkele enkele <strong>op</strong>enstaande <strong>op</strong>enstaande bevinding<br />

bevinding<br />

• Alle testware testware in source source control<br />

control<br />

• Regressiesuite bijgewerkt<br />

bijgewerkt<br />

• Testen <strong>op</strong>geschoond (g (ge-refactored)<br />

(g refactored)<br />

• Indicatieve metingen van van niet-functionele niet functionele attributen ok<br />

ok<br />

• Rapport van Jester (tool) verwerkt<br />

• Product backlog up-to up to-date; date; voldoende voldoende stories Ready<br />

Ready<br />

• Feedback (wensen) van van gebrui gebruikers verwerkt<br />

• Proof Proof of of Concept Concept gevalideerd gevalideerd met metingen<br />

metingen<br />

• Performance tuning uitgevoerd<br />

• Installatieprocedure geoefend<br />

• Gebruikersinstructies <strong>op</strong>gesteld<br />

Pagina agina 19 van 19

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!