Een externalistische kijk op testen

Externalisme is een stroming in de wetenschap waarbij men concludeert dat functies (bijvoorbeeld het bewustzijn of het geheugen) niet louter te begrijpen zijn in termen van de materiële ondergrond (hersenen) maar moet worden gezien als een proces waarbij de materiële basis reageert op een buitenwereld, functioneert in een omgeving.  Het bewustzijn of de geest  “zit” volgens het externalisme dan niet in de hersenen maar zit in de wisselwerking tussen hersenen, lichaam, zintuigen en omgeving.

Internalisme is de opvatting dat mentale processen, zoals denken, voelen, zien, voornamelijk te begrijpen zijn als toestanden of inhoud van hersenactiviteit. Hieruit volgt vaak een deterministische kijk op de geest. Een voorbeeld hiervan is Dick Swaab’s “Wij zijn ons brein”. Hoewel de meeste van de gedachten in dit boek gebaseerd zijn op in feite juiste resultaten en observaties uit de neurologie schieten de conclusies van Swaab vaak tekort om mentale verschijnselen en processen te begrijpen. Ze zijn niet volledig. Door in de hersenen te kijken zul je namelijk nooit een gedachte of een gevoel  zien. Je ziet (slechts) het neurologische correlaat van een gedachte.

Dit denkprobleem is relevant voor de IT, en dus ook voor testers. Internalistische vooroordelen zijn wijdverspreid en leiden er toe dat systemen niet goed worden ontworpen en beoordeeld en risico’s worden gemist. Zit het proces in de hardware of de software? Zit het proces in een keten van alle hardware en software, of zit de keten van hardware en software in het proces dat gebruik maakt van deze keten? Als je systemen alleen maar beschouwd vanuit hun interne werking, en voornamelijk alleen maar “in” de systemen kijkt dan mis je het grote plaatje. Een mooi voorbeeld van hedendaags “internalisme”, waarbij alleen maar  in de systemen wordt gekeken is James Bach. James Bach is een hedendaagse testgoeroe, die veel zinnige dingen zegt. Zie voor een college door James Bach: http://www.youtube.com/watch?v=ILkT_HV9DVU.

Ook in dit college zegt James Bach een aantal interessante dingen, waar ik het meestal onverkort mee eens ben. Zo wijst hij op het verschil tussen “Checking” en “Testing”.  Checking is het uitvoeren van controles, gebaseerd op vastgelegde criteria. Het is hersenloos verifiëren. Testautomatisering is een vorm van “checking”. Maar ook testen waarbij men als enige testbasis functionele of technische specificaties neemt zijn “checking”.  “Testing” hoort echter een kritisch denkproces te zijn, waarbij de tester  constant op zijn hoede is en het systeem probeert te onderwerpen aan situaties waar het in het nauw wordt gebracht. Ik vindt dit een erg goed punt. Echter: in het college, maar ook in zijn  publicaties, geeft James Bach als enige voorbeelden van dergelijk kritisch “Testing”, testgevallen die op component- en systeemniveau zijn bedacht en uitgevoerd. Bevindingen die zo worden gevonden betreffen alleen interne bugs. Nergens kom ik in zijn betoog “Testing” tegen op het niveau van ketens van systeemintegratie of het testen vanuit processen of vanuit de daadwerkelijke gebeurtenissen in de wereld.

Ik wil niets af doen aan de ideeën van James Bach: ze zijn waardevol, maar incompleet. Door zijn internalistische houding wekt James Bach de indruk dat testen een vak is van mijnwerkers die de krochten van softwarecode ingaan om daar buitenissige fouten en effecten op te sporen. Dit moet ook gebeuren, als deze fouten niet worden opgespoord zal het proces ook niet werken. Echter: om de samenhang van systemen in relatie met processen en gebeurtenissen te testen, zal de mijnwerker moeten opstijgen en dezelfde kritische, creatieve houding moeten inzetten om de wereld rondom de software mee te nemen in zijn beoordeling van de software.

Een keten van geautomatiseerde systemen staat niet op zichzelf, maar heeft pas betekenis ten opzichte van de wereld buiten die keten: een tekstverwerker is alleen maar een tekstverwerker omdat mensen met behulp van de tekstverwerker teksten schrijven. Dit lijkt zo simpel maar het is heel gemakkelijk om de tekstverwerker uitsluitend te beschouwen als de verzameling bits en bytes ,die het ook is, en het alleen maar te beoordelen op criteria die heel concreet zijn vastgelegd voor hoe de verzameling bits en bytes zich gegeven bepaalde input moet gedragen en wat voor output er dan uit moet komen.

Het systeem, als systeem dat een proces ondersteunt, is niet denkbaar zonder het te zien in termen van de functie die het vervult voor iets buiten het systeem. Deze breedst mogelijke context, waarin systemen worden beoordeeld vanuit het gehele proces, is de expliciete focus van de E2E-test (en vaak ook van acceptatietesten). De acceptatiecriteria voor zo’n test zijn dan geen optelsom van de acceptatiecriteria of specificaties voor elk van de deelsystemen, maar moeten worden opgesteld vanuit het gehele proces waarin de systemen functioneren én vanuit mogelijke gebeurtenissen en situaties die het systeem, het proces en de gegevens kunnen overkomen. Met name de laatste staan niet in procesbeschrijvingen of specificaties en hebben een externalistische kijk nodig vanuit testers op processen en systemen .

 

Advertenties

Geef een reactie

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit /  Bijwerken )

Google+ photo

Je reageert onder je Google+ account. Log uit /  Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit /  Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit /  Bijwerken )

Verbinden met %s