Professional Documents
Culture Documents
Pagina 1 van 19
Testen2.0TM - de praktijk van agile testen
Aanpak
De aanpak van het opzetten van een blinktest kan per situatie verschillen. Het algemene patroon is:
Stap 1. Voer een willekeurig aantal testscenario's uit zodat er een bepaalde uitvoer geproduceerd wordt (logging,
output op een scherm, een document, records in een database of iets dergelijks).
Stap 2. Geef het afwijkend patroon een bepaalde kleur (bijv. via tekstverwerker of spreadsheet) of zorg dat het op
een ander wijze visueel herkenbaar is.
Stap 3. Analyseer de uitvoer op patronen en zoek naar onderbrekingen in het gevonden patroon.
Stap 4. Bespreek de waarnemingen met een specialist.
Voorbeelden
• Blader snel door een lang logbestand (door bijvoorbeeld page down ingedrukt te houden) en kijk naar het patroon
van wat er voorbij komt en kijk of er vreemde variaties in zitten.
• Plak een grote logfile in een spreadsheet en zoom uit. Kijk of er een patroon in de lengte van de regels zit.
Gebruik de voorwaardelijke opmaak op bepaalde regels om het patroon makkelijker te herkennen. Als er een
patroon herkend wordt, zoek dan naar onderbrekingen van dit patroon. Indien gevonden, zoom hier weer in om te
eigenaardigheden te traceren
• Open twee schermprinten en ‘alt-tab’ deze heel snel heen en weer. Wat valt op?
• Print een groot document uit (technische documentatie, databaserecords, output van een applicatie) en blader er
snel doorheen, zoekend naar patronen.
• Converteer een grote hoeveelheid data naar geluid. Luister naar patronen en onderbrekingen daarvan.
Pagina 2 van 19
Testen2.0TM - de praktijk van agile testen
QRC: Equivalentieklassen
Definitie: Het onderverdelen van mogelijke in- en outputvariabelen in verschillende
klassen die logischerwijs hetzelfde systeemgedrag hebben.
Doel: Het verhogen van de dekkingsgraad van inputwaarden.
Principe: Door testgevallen te baseren op equivalentieklassen in plaats van op elke
mogelijke invoerwaarde, blijft het aantal testgevallen beperkt, terwijl toch een
goede dekking verkregen wordt (elke waarde uit een klasse heeft dezelfde kans
op het vinden van een fout).
Bruikbaarheid: Onder andere voor:
• unittest;
• integratietest;
• acceptatietest.
Engelse term: Equivalence partitioning of domain testing.
Er wordt onderscheid gemaakt tussen geldige en ongeldige equivalentieklassen: ongeldige klassen leiden tot
foutmeldingen, geldige klassen worden correct verwerkt.
Types waarden
Er kunnen verschillende types waarden van invoerklassen worden gehanteerd:
Aanpak
Stap 1. Bepaal de attributen: van welke gegevens moeten de inputwaarden worden vastgesteld?
Stap 2. Bepaal de geldige attribuutklassen: welke waarden leiden tot andere gegevensverwerking of
systeemgedrag?
Stap 3. Bepaal de ongeldige attribuutklassen: welke waarden moeten niet door het systeem geaccepteerd worden?
Stap 4. Stel de testgevallen op: welke fysieke waarden ga je gebruiken?
Voorbeeld
Creditcardautorisatie: op welke manier wordt de juistheid van creditcardinvoer gecontroleerd?
Pagina 3 van 19
Testen2.0TM - de praktijk van agile testen
Aandachtspunten
• De primaire tester is iemand die het systeem goed kent, of een specialist in zijn vakgebied (bijv. usabilitytesten of
performancetesten).
• De diepgang van de test wordt bepaald door de ervaring van de tester(s) en de hoeveelheid tijd (hoe meer
diepgang gewenst, alloceer des te meer tijd).
• Maximale testtijd voor een opdracht is vier uur (client/server of webbased omgeving).
• Pair testing (samen met andere tester, ontwikkelaar, ontwerper of klant) is een optie om de dekkingsgraad te
verhogen.
Voorbereiding
Voorafgaand aan het testen dient het volgende voorbereid te worden door de testcoördinator of testmanager:
1. Scope: bepaal welke module of welk aspect je gaat testen. Baken de scope af door ook te noemen wat je níet
test.
2. Doel: omschrijf met welk doel/waarom je gaat testen: naar welke informatie over het systeem ben je op zoek?
3. Tijdsindicatie: hoeveel tijd mag er maximaal aan de opdracht besteed worden?
Uitvoering
Tijdens de uitvoering houdt de tester de volgende aspecten bij:
1. Hoe: op welke manier worden de fouten gezocht (bijv. gebruikt tool, logisch pad, de focus). Houd eventuele
wijzigingen in aanpak bij.
2. Bevindingen: welke bevindingen zijn geconstateerd (verwijs naar bevindingentool).
3. Verslag: wat is je algemene oordeel over de module/het aspect. Benoem eventueel nieuw ontdekte risico’s.
Voorbeeld
ET opdracht ‘ARKA’
Scope: Rapportagemodule systeem ‘ARKA’, uitsluitend pdf-uitvoer.
Doel: De lay-out van alle pdf’s dient consistent te zijn, de data die op de pdf
getoond wordt komt overeen met die op het scherm staan.
Tijd: Maximaal vier uur.
Hoe: Klantnrs 1001001 t/m 1001099 gehanteerd, beoordeeld of de klant
volledige gegevens per rapportage had, screendump gemaakt, pdf
gegenereerd en die afgedrukt. Screendump met pdf vergeleken.
Bevindingen: 111, 112, 114, 116, 118, 119, 121.
Verslag: De berekeningen rechtsonder worden niet goed getoond. Alle waardes
wel correct. Aanpassing pdf-generator.
Pagina 4 van 19
Testen2.0TM - de praktijk van agile testen
QRC: FitNesse
Doel: FitNesse maakt het mogelijk voor klanten, testers en programmeurs om (lerenderwijs) te
bepalen wat de software moet doen. De opgestelde verwachtingen kunnen automatisch
vergeleken worden met de daadwerkelijke output van het systeem. Testen kunnen desgewenst
samengevoegd worden waardoor een compleet geautomatiseerde (regressie) testset ontstaat.
Principe: In het algemeen kan gesteld worden dat hoe lager het niveau waarop getest wordt des te meer
technische kennis en vaardigheden de tester dient te bezitten. FitNesse lost dit probleem op
door een gebruikersvriendelijke voorkant (in de vorm van een wiki) te koppelen aan de te
testen module(s).
Bruikbaarheid: FitNesse kan gebruikt worden in de volgende situaties:
• vroeg testen en accepteren van belangrijke modulen en interfaces;
• Test Driven Development;
• testen als er überhaupt nog geen voorkant gebouwd is;
• opstellen en uitvoeren van geautomatiseerde regressietesten.
FitNesse is voor iedereen eenvoudig in gebruik als het framework eenmaal goed is ingericht.
Voor het koppelen van te testen modules aan FitNesse is echter kennis nodig van Java of C#.
URL: www.fitnesse.org.
Voorbereiding
Alvorens met FitNesse te kunnen starten dienen er fixtures geschreven te worden. Dit zijn de koppelingen tussen het
FitNesse framework en de te testen software. De koppelingen dienen zo ‘dun’ mogelijk te zijn om te voorkomen dat
het testresultaat wordt beïnvloed door de code van de fixture.
Uitvoering
Testcases kunnen via de geïntegreerde wiki opgevoerd en beheerd worden. De testcases worden in tabelvorm
opgeslagen. Er zijn diverse tabelvormen mogelijk afhankelijk van de gewenste verwerking. Hieronder staat een
voorbeeld van de meest eenvoudige tabelvariant.
Voorbeeld
Er wordt een module geschreven die input A deelt door B en de waarde C terugstuurt. Een test in FitNesse zou er
dan als volgt uit kunnen zien:
Module optellen
WaardeA WaardeB ?Uitkomst
10 2 5
3 1 3
8 0 8
2 2 2
Als de test wordt uigevoerd dan zal FitNesse de eerste waarde A en waarde B verzenden en de uitkomst vergelijken
met de verwachte uitkomst. Hierna wordt de volgende regel verwerkt etc. Als de verwachting en de retourwaarde
overeenkomen wordt de uitkomst groen gekleurd. Als dit niet het geval is wordt de cel rood gekleurd. Als er iets
misgaat bij de verwerking wordt de cel geel gekleurd.
Module optellen
WaardeA WaardeB ?Uitkomst
10 2 5
3 1 3
8 0 8 (error)
2 2 2 (expected)
1 (actual)
Op basis van de output kan er besloten worden om de verwachting van een testcase aan te passen of een
codewijziging door te voeren. Op deze manier leert het team van de uitkomsten van de test en kunnen het systeem
en het testproces verbeterd worden.
Pagina 5 van 19
Testen2.0TM - de praktijk van agile testen
Aanpak
Stap 1. Definieer het aantal variabelen en bepaal het aantal waarden per variabele.
Stap 2. Kies een van de tools: Allpairs of Pict 33.
• Allpairs kan worden altijd worden toegepast. De kracht van dit tool is dat de tester extra informatie krijgt over de
dekking per testgeval. Deze informatie wordt gebruikt bij de afweging of een testgeval wel of niet moet worden
uitgevoerd, wanneer als gevolg van tijdsgebrek blijkt dat niet alle testgevallen uitgevoerd kunnen worden.
• Pict33 kan worden toegepast als alle testgevallen uitgevoerd (kunnen) worden.
Voorbeeld
Een administratie moet maandelijks loonberekeningen voor tien personen maken en een keer per jaar moet een
jaaropgave gegenereerd worden. De personen zijn onderverdeeld in drie loonschalen (schaal 1, schaal 2 en schaal
3) en voor iedere schaal geldt dat er drie verschillende declaraties mogelijk zijn (onkostenvergoeding,
lunchvergoeding en telefoonvergoeding). De personen werken parttime en fulltime.
Stap 1: Definieer het aantal variabelen en bepaal het aantal waarden per variabele
Variabelen Waarden
Soort Maandelijks, jaarlijks
Soort contract Parttime, fulltime
Loonschalen Schaal 1, schaal 2, schaal 3
Declaratie Onkostenvergoeding, lunchvergoeding, telefoonvergoeding
Pagina 6 van 19
Testen2.0TM - de praktijk van agile testen
Declaratie Onkostenvergoeding
Lunchvergoeding
Telefoonvergoeding
In geval van uitwerking via Allpairs ziet de inputfile er als volgt uit:
Soort Soort Contract Loonschalen Declaratie
Maandelijks Parttime Schaal 1 Onkostenvergoeding
Jaarlijks Fulltime Schaal 2 Lunchvergoeding
Schaal 3 Telefoonvergoeding
Voorbeeld
Testgeval Omschrijving
1 Een jaarlijkse berekening van een parttimer uit schaal 3 wordt gemaakt. De parttimer
heeft een onkostenvergoeding.
2 Een maandelijkse berekening van een fulltimer uit schaal 1 wordt gemaakt. De fulltimer
heeft een telefoonvergoeding.
Etc. Etc.
Pagina 7 van 19
Testen2.0TM - de praktijk van agile testen
QRC: Procescyclustest
Definitie: Het testen van de inpassing van het systeem in de bedrijfsprocessen door
opeenvolgende logische acties te doorlopen.
Doel: Vaststellen of de geautomatiseerde processen voldoende informatie leveren voor de
werkprocessen en vice versa.
Principe: Testgevallen worden gebaseerd op de benodigde acties voor het doorlopen van een
proces.
Bruikbaarheid: • Blackboxtesten
• Meerdere eindgebruikers met verschillende rollen in het proces dienen deze test
(mede) uit te voeren
Aanpak
Stap 1. Stel de beslispunten vast op basis van de werkprocessen.
Stap 2. a. Bepaal de padcombinaties, gevormd uit één tak vóór een beslispunt en één tak ná dat beslispunt.
b. Knoop padcombinaties aan elkaar tot paden door het werkproces.
Stap 3. Stel de testgevallen op: voorzie elk pad van de benodigde waarden voor de beslispunten, dit is gelijk de
basis voor de initiële gegevensverzameling en het testscript.
Voorbeeld
Uitverkoop kledingzaak.
Uitverkoop is alleen van toepassing op artikelen die langer dan drie maanden in voorraad zijn. Op broeken krijgt men
30%, op overhemden 20% en op sokken 50% korting.
Procesflow
Pagina 8 van 19
Testen2.0TM - de praktijk van agile testen
QRC: Productrisicoanalyse
Definitie: Een productrisicoanalyse is de inventarisatie van de productrisico’s voor die
items/gebieden die het hoogste risiconiveau hebben en die daarom het
belangrijkst zijn om te testen.
Doel: Het met alle stakeholders gezamenlijk tot één beeld komen van wat de meer of
minder risicovolle kenmerken en delen van het te testen product zijn. Deze
analyse dient als basis voor de teststrategie waardoor onderdelen met het
hoogste risico als eerste en meer intensief worden getest dan die met lagere
risico’s.
Principe: De productrisico’s worden bepaald door alle belanghebbenden. Er vindt een
inschatting plaats van de gevolgen van mogelijke fouten en op basis daarvan
wordt er geprioriteerd.
Bruikbaarheid: De productrisicoanalyse wordt uitgevoerd als onderdeel van het op te stellen
(master)testplan. Hiermee wordt de testinspanning gericht op die onderdelen
waar de grootste risico’s zijn aangegeven.
Engelse term: Product Risk Analysis.
Aandachtspunten
• Een productrisicoanalyse kan zowel eendimensionaal als tweedimensionaal worden uitgevoerd. Bij een
eendimensionale aanpak wordt slechts één dimensie, meestal een functionele opdeling van het
informatiesysteem, geprioriteerd. Deze is hieronder uitgewerkt.
• Bij de tweedimensionale aanpak worden ook kwaliteitscriteria meegenomen in de risicoanalyse.
• Faalkans: hierbij wordt bepaald in hoeverre het mogelijke (technisch) risico zich kan voordoen. De overwegingen
hierbij zijn onder andere complexiteit en frequentie van gebruik.
• Impact: hierbij wordt bepaald wat de mogelijke schade van falen is. De overwegingen hierbij zijn
gebruikersbelang en procesdoorwerking.
Aanpak
• Er wordt geïnventariseerd welke consequenties de productrisico’s mogelijk hebben.
• Vervolgens wordt gekeken naar het gevolg: heeft dit betrekking op één klant of op alle klanten, of is er al dan niet
een workaround beschikbaar?
• Op basis van de risico’s en hun impact wordt de prioriteit van het testen bepaald: Must test, Should test, Could
test en Would test.
• Bij de voorbereidingen van de nieuwe requirements voor de iteratie kan vervolgens bepaald worden in welke
risicocategorie de requirements vallen. De risicocategorie bepaalt de prioriteit en diepgang waarmee er getest
moet worden.
Voorbeeld
Als er een risico Wat gebeurt er? Voor wie? Categorie
optreedt, dan… Ontstaat er een Alle klanten Must test
levensbedreigende Eén klant Must test
situatie
Ontstaat er geen Alle klanten Should test
levensbedreigende
situatie
Eén klant Could test
Ontstaan er financiële Alle klanten Should test
consequenties Eén klant Could test
Ontstaan er niet- Alle klanten Could test
financiële Eén klant Would test
consequenties
Pagina 9 van 19
Testen2.0TM - de praktijk van agile testen
QRC: Proefgevallenanalyse
Definitie: Het op basis van een stroomschema uitwerken van testgevallen tot realistische
situaties, waarbij dekkingsgraad en overdraagbaarheid hoog zijn.
Doel: Het creëren van realistische situaties op basis van de informatiestromen door
het systeem.
Principe: De functionaliteiten van het systeem worden in een stroomschema beschreven,
waarna de verschillende mogelijkheden worden getest op basis van de
testmaat. De testmaat bepaalt hierbij de diepgang.
Bruikbaarheid: De proefgevallenanalyse is bruikbaar voor onderstaande testsoorten:
• unittest;
• acceptatietest;
• blackboxtesten.
Aanpak
Stap 1. Stroomschema opstellen; geef weer welke keuzes achtereenvolgens worden gemaakt en welke acties uit
deze keuzes volgen.
Stap 2. Inventariseren van beslispunten; geef weer welke beslissingen worden genomen.
Stap 3. Opstellen van padcombinaties en testpaden op basis van het stroomschema.
Stap 4. Uitwerken naar realistische situaties.
Voorbeeld
Uitverkoop kledingzaak
Uitverkoop is alleen van toepassing op artikelen die langer dan drie maanden in voorraad zijn. Op broeken krijgt men
30%, op overhemden 20% en op sokken 50% korting.
Testpaden:
Pad 1: 1, 3, 5, 7.
Pad 2: 1, 3, 4.
Pad 3: 1, 3, 5, 6.
Pad 4: 1, 2.
Pagina 10 van 19
Testen2.0TM
Aanpak
De keuze van de testmaat hangt af van de complexiteit en het risico van de functies.
• Testmaat 1 houdt in dat een actie slechts wordt beïnvloed door de beslissing en niet door de voorliggende acties.
• Testmaat 2 bevat dus altijd koppelingen van een actie voor een beslissing en een actie na een beslissing.
Er zijn ook hogere testmaten, waarbij aangenomen wordt dat de uitvoering van een actie doorwerkt in meer dan één
opvolgende acties. De hogere testmaten worden meestal alleen gekozen voor riskante en complexe functies. Een
hogere testmaat betekent vanzelfsprekend meer (of evenveel) testgevallen.
Voorbeeld
Pagina 11 van 19
Testen2.0TM
Aanpak
De keuze van de testmaat hangt af van de complexiteit en het risico van de functies.
• Testmaat 1 houdt in dat alleen de uitkomsten van determinanten worden gecontroleerd: allemaal een keer ‘waar’
en een keer ‘niet waar’. Dit betekent dat er altijd maar twee logische testgevallen ontstaan, onafhankelijk van het
aantal determinanten.
• Testmaat 2 houdt in dat voor iedere groep van twee determinanten alle combinaties in de beslissingstabel zitten.
Een hogere testmaat betekent vanzelfsprekend meer (of evenveel) testgevallen.
Voorbeeld
De volgende beslissingstabel bevat drie determinanten.
Logische testkolom: 1 2 3 4
Determinant 1 0 0 1 1
Determinant 2 0 1 0 1
Determinant 3 1 0 0 1
De testmaat van deze tabel is gelijk aan 2, omdat elke groep van determinanten alle mogelijke combinaties bevat; de
groep van determinant 1 en determinant 2 bevatten 00, 01,10 en 11, evenals de groep van determinant 2 en
determinant 3.
Testmaat 1 2 3 4 5 6 7 8 9 10
Determinanten
1 2 2 2 2 2 2 2 2 2 2
2 2 4 4 4 4 4 4 4 4 4
3 2 4 8 8 8 8 8 8 8 8
4 2 5 8 16 16 16 16 16 16 16
5 2 6 10 16 32 32 32 32 32 32
6 2 7 12 22 32 64 64 64 64 64
Pagina 12 van 19
Testen2.0TM
Definitie: Unit testen is het valideren van de werking van de kleinst onderscheidbare
eenheden van broncode. Bij objectgeörienteerd ontwikkelen: het testen van
individuele methoden van een klasse.
Doel: Het op het laagst mogelijke niveau veiligstellen van een goede werking van het
systeem. Door een snelle feedback weet je zeker dat de code goed werkt en of
een aanpassing (refactoring) geen ongewenste gevolgen heeft. Unit testen
vereenvoudigt de integratie doordat eenheden reeds getest zijn.
Principe: In een agile omgeving worden unittests gebruikt om de goede werking van de
code te borgen. Om effectief te kunnen zijn, moeten dergelijke testen veelvuldig
kunnen worden herhaald, bij voorkeur worden ze in een framework (bijvoorbeeld
JUnit bij Java) geautomatiseerd.
Unittests moeten snel kunnen worden uitgevoerd; de eenheid moet elementair
worden getest. Externe afhankelijkheden worden vervangen door zogenoemde
stubs of mock objects.
Na iedere build van het systeem moet 100% van alle unittests slagen.
Bruikbaarheid: Continuous integration (het frequent kunnen maken van een build) is een must.
Met name in omgevingen voor objectgeörienteerd ontwikkelen zijn er voldoende
tools die dit ondersteunen.
Voor een complex systeem kunnen unittests ook op integratieniveau worden
gedefinieerd. Het vervangen van deelsystemen door stubs is een dure
investering, mogelijk gerechtvaardigd door een betere onderhoudbaarheid en het
sneller corrigeren van fouten.
Engelse term: Unit testing.
Primaire Doorgaans uitgevoerd door de ontwikkelaar zelf, zeker niet door eindgebruikers.
uitvoerder Testspecialist kan assisteren of reviewen om de dekkingsgraad van de test te
valideren.
Aandachtspunten
• Voor het uitvoeren van unittests wordt gebruikgemaakt van tools en libraries, zoals JUnit, TestNG en DbUnit.
• Het invoeren van unittests in een bestaand project kan kostbaar zijn. Het vergt bovendien een verandering in de
mindset van de uitvoerenden. De werkwijze wordt meer uniform en meer kwaliteitsgedreven dan in een project
zonder unittests.
• De bij unittests gebruikte dekkingsvormen (coverages) staan vermeld op een aparte QRC.
Voorbereiding
Op projectniveau dienen de volgende zaken te worden geregeld:
1. Continuous integration: de gehele applicatie wordt automatisch gecompileerd tot een nieuwe testbare versie, kort
nadat er code is ingecheckt in het codebeheersysteem.
2. Inrichting configuratiemanagementsysteem: de testconfiguratie (gegevens/database; invoer/testgevallen) moet
telkens hersteld of bijgewerkt worden.
3. Automatic deployment: installatie van de nieuwe versie op een testomgeving.
4. Automatische uitvoering unittests: volgend op een nieuwe build worden alle unittests geautomatiseerd uitgevoerd.
(Voor bovenstaande stappen zijn tools beschikbaar die op elkaar zijn afgestemd.)
Afspraken op projectniveau:
1. Welke applicatieonderdelen moeten daadwerkelijk van unittests worden voorzien? In verband met de
verwerkingssnelheid wordt interactie met gebruiker/netwerk/database doorgaans uitgesloten.
2. Diepgang (coverage) van de unittests, mogelijk afhankelijk van een indeling in risicoklassen.
3. Aanvliegroute: unittests parallel met de code opstellen, of eerst unittests opstellen voordat er code wordt
geschreven? De laatste werkwijze geniet de voorkeur, en wordt Test Driven Development genoemd. Een
(falende!) unittest wordt opgesteld vóórdat er code wordt toegevoegd. Pas daarna wordt de code geschreven,
zodat de test slaagt.
Pagina 13 van 19
Testen2.0TM
Aanpak
1. Bedenk een test voor de gevraagde functionaliteit (wat is de bedoeling van de code).
2. Let ook op wat er moet gebeuren als het fout gaat.
3. Schrijf de test. Controleer dat de test faalt. (Immers, de code ontbreekt nog.)
4. Schrijf de code.
5. Voer de test uit (ook voor de foutsituatie).
6. Refactor de code.
7. Voer nogmaals alle tests uit.
8. Controleer of de beoogde coverage (zie mastertestplan/Definition of Done) is behaald.
Pagina 14 van 19
Testen2.0TM
Aandachtspunten
• Context: vertaalslag als bij de beslissingstabellentechniek.
• Herhaalbaarheid: meerdere mogelijkheden om aan de gevraagde test coverage te voldoen.
Nadere definities:
• Statement coverage: ieder statement wordt ten minste één keer uitgevoerd → één testgeval.
• Multiple condition coverage: iedere combinatie van condities wordt getest → 2n testgevallen.
• Decision coverage (ook: branch coverage): de samengestelde determinant wordt één keer waar en één keer
onwaar getest → altijd maar twee testgevallen.
• Condition coverage: iedere enkelvoudige conditie in de samengestelde determinant wordt ten minste één keer
waar en één keer onwaar gekozen → wederom slechts twee testgevallen.
• Decision/condition coverage: de samengestelde determinant wordt één keer waar en één keer onwaar gekozen,
onder de voorwaarde dat iedere enkelvoudige conditie ook één keer waar en één keer onwaar is. Dit impliceert
decision coverage en condition coverage → ook nu slechts twee testgevallen.
• Modified condition/decision coverage (MCDC) (condition/determination coverage): iedere enkelvoudige
determinant bepaalt tweemaal de waarde van de samengestelde determinant, één keer waar en één keer
onwaar. Dit geschiedt onafhankelijk, dat wil zeggen door andere determinanten constant te laten. Modified
condition/decision coverage impliceert decision/condition coverage. MCDC vergt hooguit 1+ (1½ * n) testgevallen,
waar n het aantal enkelvoudige determinanten is.
Voorbereiding
Voorafgaand aan het testen dient het volgende voorbereid te worden door de testcoördinator of testmanager:
1. Keuze voor beoogde dekkingsgraad conform master testplan en product risicoanalyse.
2. Bepalen enkelvoudige determinanten.
3. (MCDC) Telkens voor één enkelvoudige determinant twee combinaties selecteren die alleen verschillen in de
waarde voor die enkelvoudige determinant, en wel zodanig dat daarmee de samengestelde determinant één keer
waar en één keer onwaar is. Hergebruik zoveel mogelijk combinaties.
4. Nadere uitwerking verwachte resultaten: hoe vertaalt een waarde van de determinanten zich naar een
verifieerbaar gedrag van de applicatie. (Zie beslissingstabellentechniek.)
Uitvoering
Tijdens de uitvoering houdt de tester de geteste combinaties bij, en vergelijkt waargenomen versus verwacht
applicatiegedrag.
Voorbeeld
Samengestelde determinant: V = (A EN B) OF (C EN D) OF (A EN C).
SC (statement coverage): 0000 . [V = 0]
DC (decision coverage): 0101 en 1110 . [V = 0; V=1]
CC (condition coverage): 0110 en 1001 . [V=0; V=0]
DCC (decision/condition coverage): 0101 en 1010 . [V=0; V= 1]
MCDC:
Pagina 15 van 19
Testen2.0TM
Best presterende teams ontstaan niet vanzelf. Belangrijkste voorwaarde voor een succesvol team is dat iedereen
zich inzet voor het team en verstand heeft van softwareontwikkeling. In een agile team is iedereen gericht op
toename van zowel de individuele competenties als ook de teamsamenwerking.
Om agile te kunnen werken is het noodzakelijk dat teams een gemeenschappelijk doel hebben, er wederzijds
vertrouwen en respect is en er een proces is van gezamenlijke besluitvorming.
Zelforganiserende teams zijn geen ongeleide teams, maar steeds in staat om zichzelf te organiseren om tegemoet te
komen aan nieuwe uitdagingen waarvoor het team zich gesteld ziet.
Teamrollen
Scrum onderkent drie rollen:
• de stem van de klant
Product owner • eigenaar van requirements
• verantwoordelijk voor prioriteit en return on investment
• de doeners, creëren business value
• zelforganiserend
Teamleden • zelfsturend
• gekwalificeerde specialisten (multidisciplinaire teams)
bestaande uit zeven plus/minus twee leden.
• proceseigenaar
Projectleider (ScrumMaster) • faciliteert het proces en procesverbetering
• beschermer en coach van het team
Pagina 16 van 19
Testen2.0TM
(zie http://www.dsdm.org/atern/roles-responsibilities/team-organisation/ )
Team overleg
Een agile team kent drie belangrijke overlegsoorten
Hierin worden de iteratieplanning bepaald,
Start van de iteratie schattingen gemaakt en prioriteiten
gesteld aan de requirements.
Hierin worden standaard drie zaken
behandeld:
Dagelijkse stand-up • Wat heb ik gisteren gedaan?
meeting. • Wat ga ik vandaag doen?
• Welke belemmeringen ondervind ik?
Pagina 17 van 19
Testen2.0TM
QRC: Scrum
Scrum is een populaire agile projectmanagementmethode, met name gebruikt voor softwareontwikkeling.
Het team dient multidisciplinair te zijn, uitgerust met alle benodigde vaardigheden, om tot werkende software te
komen. Er is geen sprake van een fasering; alle activiteiten vinden binnen de iteratie plaats.
Er wordt gewerkt met iteraties (sprints) van een vaste lengte (timebox). Er wordt áltijd op tijd opgeleverd, en volgens
een vast kwaliteitskader. Eventuele sturing vindt plaats op de op te leveren functionaliteit.
Er is altijd een intensieve samenwerking met de klant, en de sprints worden kort gehouden. Zodoende wordt er veel
feedback gegenereerd, en kan de klant zich ervan verzekeren dat het eindresultaat een hoge waarde heeft voor de
business. Requirements met de hoogste business value worden als eerste geïmplementeerd.
Proces
Sprint planning meeting Meeting van team en product owner, waarin de requirements worden verduidelijkt, en
de sprint backlog wordt opgesteld.
Daily stand-up meeting Een staande bespreking van hooguit vijftien minuten. Drie vragen voor iedereen:
(daily scrum) 1. Wat heb ik gedaan sinds de vorige meeting?
2. Wat ga ik vandaag doen?
3. Is er iets wat me daarbij hindert?
Demo De teamleden presenteren de gerealiseerde functionaliteit en ontvangen feedback
van de product owner en overige stakeholders.
Retrospective Team plus product owner evalueren het proces en definiëren acties ter verbetering.
Rollen
Product owner Neemt beslissingen over de inhoud en de Moet beschikbaar zijn voor het team.
onderlinge prioritering van requirements. Hij Mag de backlog aanpassen; wijzigingen gaan
is vertegenwoordiger van alle stakeholders. de volgende sprint in.
ScrumMaster Faciliteert het team onder andere door Alert op het onderkennen van problemen;
obstakels weg te nemen, en ziet toe op de voorzitter voor alle meetings met uitzondering
naleving van de Scrumprincipes. Schermt van de demo.
het team af van bemoeienissen van buitenaf.
Teamlid Uitvoerende. Neemt deel aan alle meetings Werkt eigen tijdsinschattingen bij tijdens de
en pakt taken zelfstandig op. Alle teamleden daily scrum. Proactief in het signaleren van
hebben één gezamenlijk doel. problemen.
Documenten en producten
Product backlog Lijst van requirements in een ruwe vorm, Ook als er meerdere teams zijn, is er slechts
geprioriteerd door de product owner. één product backlog en een product owner.
Sprint backlog De requirements die worden opgepakt in Team en product owner kiezen samen; team
de sprint. committeert op basis van best-effort.
Werkende Definition of Done bevat alle Er wordt alleen functionaliteit opgeleverd, die
software kwaliteitscriteria die het team nastreeft. voldoet aan de Definition of Done.
Pagina 18 van 19
Testen2.0TM
Werkwijze
Stap 1. Voordat het project goed en wel aanvang kan vinden, komen ‘het team’ en de klant (zijnde de opdrachtgever
plus de beheerorganisatie) een lijst van kwaliteitscriteria overeen. Deze lijst wordt op papier gezet, en
gecommuniceerd met alle betrokkenen.
Stap 2. De Definition of Done wordt in acht genomen bij het maken van tijdsinschattingen, en daarbij in het bijzonder
de samenstelling van het programma voor de eerste iteratie.
Stap 3. Gedurende de iteratie staat de Definition of Done centraal bij alle activiteiten. Alleen functionaliteit die
daadwerkelijk aan alle criteria voldoet en dus echt ‘af’ is, heeft waarde voor de business.
Stap 4. Na iedere iteratie wordt geëvalueerd of de overeengekomen Definition of Done inderdaad is gehaald, en of
deze voldoet. Ingeval er een nieuw criterium wordt toegevoegd, wordt er voor de eerstvolgende iteratie een
inhaalslag op het programma gezet.
Voorbeeld
# Criterium Uitleg Uitvoerende Opmerkingen
1 Bouw op build server Alle code is ingecheckt, en Ontwikkelaar. Bouw op een
compileert zonder fouten. gereserveerde
machine.
2 Gereed voor Versie neergezet in een Teamleider. Lijst met functionele
acceptatietest afzonderlijke omgeving voor wijzigingen
acceptatietesten. beschikbaar in
documentvorm.
3 Unittest Unit testen op Ontwikkelaar; voor 100% van de unittests
datacomponenten en kritische onderdelen moet slagen.
bedrijfslogica; níet op de (hoogste risico) Diepgang/coverage
interface. bijgestaan door afhankelijk van
testspecialist. technische
complexiteit en
bedrijfsrisico, als
beschreven in
mastertestplan.
4 Test Driven Iedere toevoeging wordt Ontwikkelaar.
Development voorafgegaan door een
(falende!) unittest.
5 Systeemtest Functionele systeemtest Tester, waar nodig
uitgevoerd; alle meldingen bijgestaan door
uit de categorie ‘blokkerend’ overige teamleden.
en ‘hoog’ zijn afgehandeld.
6 Regressietest Systeemtest wordt uitgebreid Testspecialist. Gefaciliteerd met
met een script, dat middels virtuele servers
speciale tools en vanwege
configuratiemanagement kan afhankelijkheid
worden herhaald. systeemklok.
Pagina 19 van 19