Onder testers is het idee ontstaan dat testen een creatieve bezigheid is. Dit is een misvatting; testen is in essentie niet creatief maar juist destructief. Het is daarbij wel goed om alle intellectuele vermogens aan te spreken en niet alleen de gebaande paden te begaan, maar het doel is nooit om iets nieuws te maken. De primaire taak van testers is om informatie te verschaffen en het enige dat zij daarmee creëren is duidelijkheid.
De vraag of een plan goed is uitgevoerd is bij softwareontwikkeling vaak niet met alleen met ‘ja’ of ‘nee’ te beantwoorden. In alle situaties waar dit wel zo is, kunnen we stellen dat testen zich beperkt tot het controleren of de software zich conform specificaties gedraagt. Hier komt weinig intellectuele uitdaging aan te pas; deze controles kunnen we dan ook automatiseren. Het uitvoeren van regressietestgevallen, handmatig of geautomatiseerd, is zonder twijfel de minst creatieve bezigheid in het testvak.
Proza over poëzie
Het verzinnen van deze testgevallen is ook niet heel erg creatief. Het toepassen van testtechnieken op specificaties is wel iets dat je moet leren, maar iedereen die dit onder de knie heeft, komt tot dezelfde logische testgevallen. De creativiteit in het testen moeten we dus zoeken in activiteiten die te maken met onvolledige of onduidelijke specificaties. Het is zelfs denkbaar dat testgevallen zelf de specificaties zijn. Dit gebeurt nog niet veel, maar het integreren van testactiviteiten in de ontwikkelcyclus is de enige manier om invloed te hebben op het moment dat software wordt gecreëerd, namelijk het moment dat de code wordt geschreven.
Als we programmeren vergelijken met poëzie dan kun je stellen dat ontwerpen en testen beide proza zijn. Dit proza heeft direct betrekking op de poëzie; het kan niet los daarvan bestaan. Het ontwerpen van software is het opstellen van rijmschema’s en het afbakenen van het onderwerp. Het is meestal de taak van de tester om achteraf een verhaal te maken over het gedicht. In het beste geval ontwikkelen de code en de tests zich tegelijk. Het resultaat is dan een programma met één beschrijving die tegelijkertijd het ontwerp en de test is.
Kunst van de kritiek
Testactiviteiten die het ontwikkelteam helpen om werkende software op te leveren zijn positief; ze dienen om aan te tonen dat de software werkt volgens verwachting. Op een zeker moment bereikt de software een mate van volwassenheid waarin een andere vraag belangrijk wordt: zijn er situaties waarin de software niet volgens verwachting werkt? Dit leidt tot negatieve testactiviteiten die er op gericht zijn om problemen aan het licht te brengen. Negatief testen vergt een totaal ander perspectief dan positief testen, mede omdat het niet uitsluitend gebaseerd is op specificaties. Is het daarmee creatief? Integendeel, negatief testen is gericht op het laten falen van de software; het is destructief.
Door het blootleggen van zwakke punten stellen testers anderen in staat om software te verbeteren. Door het vertellen van een informatief verhaal over de software leveren testers indirect een bijdrage aan het scheppend moment. Dit verhaal moet zo eerlijk mogelijk zijn, dus testers hoeven niets te verzinnen. Wel moeten ze zich continu afvragen hoe betrouwbaar hun informatie is, anders bestaat de kans dat ze sprookjes vertellen; heel creatief, maar ook contraproductief.
Het testvak is niet creatief; testers ondersteunen degenen die het scheppende werk doen. Softwaretesten is wel een kunst, iets waar je goed in kunt worden, maar het is de kunst van de kritiek. Oplossingen testen is problemen zoeken.
[Dit artikel is een bewerking van mijn artikel ‘Oplossingen testen is problemen zoeken’ dat eerder is verschenen in de TestNetNieuws, een uitgave van TestNet, de beroepsvereniging van softwaretesters in Nederland.]
Ik moet zeggen dat ik het creatief vind om een artikel van meer dan een A4tje te schrijven zonder dat je iets zegt. Ik krijg de indruk dat de heer Wijgers het testvak beu is of gewoon een slechte dag heeft gehad.
Als hij realistisch naar zijn vak zou kijken (volgens zijn linkedin pagina is hij wel degelijk gewoon een tester), zou hij constateren dat testers een duidelijk standpunt innemen, iets dat hij in dit artikel achterwege laat.
Om een lang verhaal kort te maken: Wat is nu eigenlijk het standpunt dat de heer Wijgers in dit artikel aanneemt? Een A4tje vol afzwakkingen van zijn eigen argumenten.
Je kunt testen ook zien als het vinden van openingen in het verbeterproces (positief) eerder dan het gatenschieten (negatief).
Ik zou dus eerder zeggen dat testen een creatief proces is om met alle intellectuele vermogens buiten de gebaande paden te treden teneinde informatie te verstrekken om de wereld te verbeteren.
Bert, je creeert een onzuivere tegenstelling: creatief en destructief zijn geen tegenpolen maar gaan in deze context juist samen. Ik zeg het liever zo: een goede tester is “constructief kwaadaardig”. Lees hoofdstuk 6 van “SmarTEST, slim testen van informatiesystemen” eens, ik ben benieuwd wat je daarvan vindt.
In tegenstelling tot Reginald ben ik het overigens wel met je eens dat testen of iets conform specs is in essentie niet creatief is. Ik ben ook met je eens dat veel testers op deze wereld niet uitblinken in creativiteit. Dat hoeft ook niet altijd: van je accountant verwacht je ook niet elke dag nieuwe sprongen.
Maar 1. een slim testontwerp en een slimme exploratieve strategie vergen wel degelijk creativiteit en 2. goede testers zijn goed in negatief testen: doet het NIET wat het NIET mag doen. Dat vergt ‘Out of The box’ denken en creatief verbanden leggen en daar zijn veel mensen niet zo goed in.
Misschien is de moraal: testers zijn niet altijd even creatief, maar goede testers zijn dat wel.
Waarom moeten creativiteit en destructiviteit elkaar in deze context uitsluiten? Als ik voor het handmatige deel van het testen een applicatie moet laten omvallen, dan zou ik daar met reproduceerbaarheid als randvoorwaarde zo creatief mogelijk in willen zijn, des te groter de kans dat je ergens tegenaan loopt. Uiteraard leg je een aantal testscenario’s vooraf vast maar daar zou ik me niet door laten beperken.
Michiel, je zou het niet zeggen als je onze openingszinnen vergelijkt, maar ik las jouw bijdrage echt pas na het plaatsen van de mijne :-).
Wat is nu de zin om zo een denigrerend artikel over testen te schrijven? Het is naar mijn mening wel degelijk een creatief vak om goede testgevallen voor applicaties te bedenken en daarbij misschien ook extremen te testen en applicaties onder druk te zetten. En ook iets waar de ontwikkelaar aan kan bijdragen om de juiste testgevallen te bepalen. Kan zelfs nog heel leerzaam voor de ontwikkelaar zijn want die hebben misschien ook wel niet alle wijsheid in pacht of iets over het hoofd gezien. Ontwikkelen is een gezamenlijk activiteit waarin de testers ook hun belangrijke rol spelen.
Goede timing Egbert! En mooi wat je zegt over het negatief testen (een dubbele ontkenning is normaal gesproken ongewenst, je stelt terecht dat out(side) of the box denken van belang is).
Het opiniestuk nogmaals lezende kom ik nog tot het volgende:
Bert geeft in zijn inleiding aan dat het nooit het doel is om “iets nieuws” te maken. Daar kan ik me op zich wat bij voorstellen.
Creativiteit kun je echter zowel aanwenden voor het resultaat dat je oplevert, maar ook voor de weg daarnaartoe (het proces). En dat sluit dan weer mooi aan bij jouw opmerking over een exploratieve strategie.
Het artikel is wellicht bedoelt om reacties uit te lokken, nou hierbij dan ook de mijne. Ik zie het als volgt:
Als ik in een vliegtuig plaatneem dan heb ik liever niet een creatieve piloot maar iemand die gestructureerd alle pre-takeoff checks doet. Dus problemen voorkomt i.p.v. ze op te lossen onderweg.
Overigens wordt met toepassing van Agile processen in softwareontwikkeling er veel meer creativiteit vereist van alle betrokkenen, ontwikkelaars, architecten en testers. Dus het artikel is wellicht alweer verouderd.
Ik ben het met Egbert eens, testers zijn niet altijd creatief, goede testers zijn dat wel!
Dat testen conform specs geen creatieve bezigheid is weten we. Sterker nog er zijn mensen (zoals bijvoorbeeld Michael Bolton) die het onderscheid maken tussen testen en checken. Waarbij checken het “simpelweg” nalopen van de specs is. Zeg maar valideren.
Testen daarentegen is een creatief proces waarin je probeert nog onbekende informatie in te winnen over het product waar je aan test. Onderzoeken, ontdekken en leren zijn daarin van belang.
Ik hoop dat er steeds meer mensen gaan testen…
Een tester moet wel creatief zijn. Ik vindt dat een programmeur en tester heel dicht bij elkaar liggen. Eigenlijk vindt ik het testen een onderdeel van het programmeur zijn.