Reken jezelf niet rijk met je automatische tests

(Gebaseerd op een oefening tijdens de cursus Rapid Software Testing onder leiding van James Bach)

 

Ik neem een normale rekenmachine.

Ik zet hem aan.

Ik druk achtereenvolgens op de volgende toetsen:

  • 2
  • +
  • 2
  • =

Wat is je verwachting, of uitkomstvoorspelling?

Ik ga er voor het verhaal even vanuit dat jouw verwachting nu ook ‘4’ is.

Dit verhaal zou je als een testgeval kunnen beschrijven en dit testgeval kan je omzetten tot een geautomatiseerd testgeval waarin die uitkomst gecontroleerd wordt. Als er inderdaad 4 uitkomt, dan is de test geslaagd.

De oefening ging echter verder, met de vraag ‘wat verwacht je nog meer?’

De vraag verbaasde ons even, maar na wat denken kwamen er nog andere verwachtingen:

  • De 4 wordt getoond in het zwart (is een aanname, bij een klok is hij bijvoorbeeld vaak rood, aanname gebaseerd op ervaring)
  • Het scherm is verlicht
  • De 4 wordt niet getoond als ‘4’, maar gesegmenteerd, digitaal
  • Het getal blijft staan en verdwijnt niet nadat het getoond wordt

Dit zijn maar een paar verwachtingen maar na wat discussies bleken er nog veel meer te zijn. Waarom verwacht je 4? Verwacht je altijd een 4 nadat op de ‘=’ wordt gedrukt? Nee, je verwacht dat de som van de 2 getallen getoond wordt. Oké, dus niet default een 4 en ook niet de vermenigvuldiging van de 2 getallen (want ook dat zou een 4 opleveren). Maar je verwacht eigenlijk nog veel meer, allemaal zaken die je niet zegt, omdat je er niet vanuit gaat dat dat gaat gebeuren:

  • Dat het apparaat niet gaat roken,
  • Dat er geen ander getal links van de 4 staat,
  • Dat er geen roze olifant op het scherm van links naar rechts loopt

Al die laatste verwachtingen klinken wellicht wat ver gezocht, maar dat is precies het verschil tussen verwachtingen die verwerkt zijn tot een automatische check, en een test.

Als je handmatig dezelfde test doet, en er gebeurt iets wat je niet verwacht (en dus ook niet beschreven of geautomatiseerd) had, dan ontstaat er een “Hé, dat is raar” en dat is precies waar het hier om gaat. Wat nu als het 2 seconden duurt voordat het antwoord verschijnt? Ik denk dat we dan wel een bug te pakken hebben, maar de automatische test zou dit vermoedelijk niet merken, die wacht een vooraf ingestelde tijd om te zien of het antwoord verschijnt en geeft dan aan dat de test geslaagd is.

Of wat als het apparaat inderdaad begint te roken, of jij alle ingevoerde cijfers laat staan en ze over elkaar heen plaatst?

Allemaal zaken die je merkt met handmatig testen en die hoogstwaarschijnlijk niet geconstateerd worden met de automatisch test, of eigenlijk al niet eens verwerkt zijn tot automatische checks.

Kortom, alhoewel automatische checks waarde hebben, reken je niet rijk. De echte waarde zit in het echte testen en het “Hé, dat is raar”-moment!