Test analyse & -design
Test analyse & -design is het process van het analyseren van de bedoelde werking van software en uit die analyse testgevallen bepalen.
Formele vorm van test analyse & -design
Met de formele vorm van test analyse & -design wordt bedoeld dat de volgende fasen elkaar opvolgen:
- Analyse van documentatie: de eerste stap bij test analyse is het begrijpen wat de applicatie moet doen. Bij ontbreken van documentatie is het uitermate belangrijk om de juiste personen te pakken te krijgen (liefst de eindgebruikers) die aan de hand van interviews kunnen vertellen wat zijn van de applicatie verwachten.
- Opstellen van een test ontwerp (design): tijdens of na de vorige fase kan gestart worden met een test ontwerp, waarbij het eerst belangrijk is om een structuur op te stellen waarin de testgevallen later inpassen (opdelen van de functionaliteit in beheerbare delen). Nadien kunnen afzonderlijke test designs gemaakt worden die één of juist meerdere van die functionaliteiten gaan testen. Deze fase levert test designs of logische testgevallen op.
- Uitwerken van de testgevallen: het test ontwerp is in bepaalde gevallen niet voldoende om de testen uit te voeren. Zeker in het geval dat de testgevallen door iemand anders worden uitgevoerd dan diegenen die ze heeft opgesteld. Test designs zijn een summiere vorm van testgevallen, waarbij niet veel uitleg verschaft wordt hoe deze precies moeten uitgevoerd worden. In het geval meer uitleg vereist is, worden deze test designs uitgewerkt naar testgevallen. Deze vallen ook nog onder de noemen logische testgevallen.
- Testgevallen aanvullen met testgegevens: van zodra de testgevallen aangevuld worden met testgegevens, worden het fysieke testgevallen. Het is echter niet altijd aangeraden om die testgegevens in de testgevallen te verwerken. Dat impliceert immers dat als de testgegevens niet meer kunnen gebruikt worden (bestaan niet meer, zijn door de jaren heen niet meer bruikbaar voor het testgeval,...). Het is in veel gevallen beter om de testgegevens en indien mogelijk zelfs de selectiescripts om die gegevens te vinden apart te bewaren.
- Testgevallen uitvoeren: tot slot moeten de testgevallen uiteraard ook uitgevoerd worden. Dit valt niet echt onder de noemer van test analyse & -design, maar het is wel zo dat tijdens het uitvoeren van de testgevallen nieuwe test designs en testgevallen kunnen ontstaan.
Test designs kunnen in veel gevallen gemaakt worden aan de hand van test technieken. Deze technieken bestaan al geruime tijd en worden in zo goed als elke methodologie gebruikt. Er bestaan voor- en tegenstanders van test technieken en voor de duidelijkheid: ik ben een voorstander. Tenminste zolang deze technieken het werk makkelijker maken terwijl het test design de functionaliteit(en) grondiger afdekt. Er zijn echter ook een aantal test technieken die iedere tester automatisch gebruikt omdat die onderdeel zijn van ons gezond verstand.
De testtechnieken die ik het meest courant gebruik zijn:
Informele vorm van test analyse & -design
Er is niet altijd voldoende tijd om de testuitvoering te laten vooraf gaan door een formele fase van test analyse & -design. Het is dan ook goed dat er een aantal technieken zijn ontstaan die daar een antwoord op bieden.
De volgende technieken heb ik al op één of andere manier toegepast:
- Monkey testing, error guessing, free testing,...: what's in a name? Eender welke vorm van zonder enige voorkennis een applicatie voor het eerst gebruiken en proberen om fouten te vinden. Of misschien juist wél met de nodige voorkennis zonder lijst van voorgedefinieerde testgevallen testen uitvoeren.
- Fault attack: een techniek die uitgaat van een lijst van mogelijke foutboodschappen en die deze foutboodschappen wil veroorzaken aan de hand van specifieke test cases.
- Exploratory testing: deze techniek is een veredelde vorm van free testing. De tester heeft wel kennis en ervaring van het systeem en bij deze techniek wordt wel aangeraden om de testen (zij het minimaal) te documenteren.
Deze vormen worden soms met argusogen bekeken, maar ze hebben zeker en vast hun waarde. Het is niet (altijd) zo dat er geen plan of geen bedoeling is bij het gebruiken van deze technieken. Testen heeft trouwens altijd een doel: fouten opsporen en deze laten oplossen. Deze technieken zijn een mooie aanvulling op de meer gestructureerde testen.