Documenteren hoe iets moet werken, zeg maar functionele documentatie, was en is altijd een probleem. Er is bijna niemand die het leuk vindt. Als je geluk hebt, is er nog iemand die het bij de eerste bouw beschrijft. Maar daarna deze documentatie bij elke wijziging weer opnieuw aanpassen, is vaak teveel gevraagd. Soms is er ook nog het omgekeerde probleem: er is zoveel documentatie, dat niemand meer weet wat waar staat. Processen staan beschreven in wel 5 documenten en de documenten spreken elkaar tegen. Als men processen in de vele documentatie nog weet te vinden.
Nu wordt functionele documentatie zeker niet als taak van een tester gezien. Als er al documentatie moet worden geschreven, gebeurt dat voor het testen. En deze documentatie wordt dan tijdens het testen gebruikt. Dus de documentatiefase is bij de functionele test in principe afgerond. Maar juist tijdens het testen blijkt te vaak dat de documentatie mist of niet klopt. Zoals hierboven beschreven, blijkt dit vaak doordat er steeds opnieuw fouten naar boven komen. De belangrijkste oorzaken:
- Het ontwikkelteam is niet voldoende op de hoogte van de domeinkennis om bepaalde processen en gegevens te kunnen controleren
- De programmeurs zijn niet voldoende op de hoogte van processen en business rules in de applicatie om hiermee rekening te kunnen houden tijdens het bouwen of aanpassen van de applicatie
- Er worden regels, verwachtingen of specificaties vergeten. Nieuwe worden niet gebouwd. Bestaande worden niet meegenomen of gecontroleerd bij aanpassingen.
Waarom zou je als tester dan functionele documentatie willen schrijven? Omdat je als tester een kwalitatief goed product wil. Omdat je als tester het fix-traject wil verkorten. Omdat je als tester bij een volgende keer fouten wil voorkomen.
Nu moet je niet denken dat je plotseling de hele applicatie moet gaan documenteren, als dat nog nooit gedaan is. Het is voldoende om datgene vast te leggen wat er getest moet worden. Leg die informatie vast, die je wil testen en waarvoor documentatie nodig blijkt te zijn. Let er wel op dat je niet alleen de wijzigingen vastlegt. Leg ook de informatie vast die je blijkt te missen voor het goed uitvoeren van een regressietest.
Dit mag onzinnig lijken, want wat helpt dat kleine beetje documenteren nu? Mij is echter in de praktijk anders gebleken. Belangrijke functies worden in een bedrijf vaak aangepast of uitgebreid, waardoor ze meestal meer door een testfase heengaan dan minder belangrijke functies. De eisen en wensen voor die functies zijn namelijk zo belangrijk, dat een aanpassing sneller interessant is voor de organisatie. Hierdoor heb je automatisch het merendeel van de risicogebieden bij de belangrijke functies vaak al binnen een jaar vastgelegd. En zal je deze documentatie al vrij snel weer kunnen gebruiken, waardoor het nut zich snel bewijst.
Het allerbelangrijkste bij vastleggen van functionele documentatie: zorg ervoor dat je de documentatie zo vastlegt dat je de documentatie ook weet terug te vinden. Bij voorkeur zelfs zo dat iedereen in je ontwikkelteam de documentatie weet terug te vinden. En nog beter: dat ieder toekomstig lid van je ontwikkelteam, ook een nieuwe tester, de documentatie weet terug te vinden. De regels hiervoor:
- Kies voor een goede basis indeling. Dit kan zijn per proces, per module, per scherm, per menu-item. Maar kies een indeling die logisch is voor jouw applicatie
- Leg informatie over een scherm of een proces maar op 1 plek vast
- Als de informatie in het ene document voor een ander document van belang kan zijn, verwijs dan in het ene document naar het andere document
Stel de documentatie bij voorkeur met hulp van de ontwikkelaar en met de eindgebruiker (of een ander persoon met domeinkennis) op. En start hiermee zeker zodra iets drie keer achter elkaar is gefaald, doordat men zaken niet wist of vergat. Houd je niet strikt aan je rol, maar ga voor de kwaliteit. Durf te documenteren!