Share the post "Waarom automatisch testen niet de heilige graal is."
Langzaam maar zeker zien we automatisch testen een steeds grotere rol gaan spelen bij het testen van software. Één van de belangrijkste reden hiervan is waarschijnlijk de opkomst van een agile. De agile werkwijze wordt gezien al een zeer geschikte werkwijze om automatisch te testen.
In deze blog zal ik aangeven waarom ik denk dat automatisch testen niet de heilige graal is die veel mensen denken dat het is.
Waarom automatisch testen niet automatisch testen zou moeten heten.
Vanaf het moment dat we bepaalde “testen” zijn gaan automatiseren noemen we deze “testen” al automatisch testen. Ik denk dat een beter naam voor automatisch testen zou zijn automatisch checken.
Er is namelijk een groot verschil tussen testen en checken. Wanneer je iets checked doe je dat om te verifiëren dat een verwachting die je hebt juist is. Tevens ligt bij checken de focus op controleren of de software die je test niet faalt.
Testen daar in tegen is iets wat we doen met een heel andere motivatie namelijk voor het vinden van nieuwe informatie. Wanneer we een stuk software gebruiken of observeren met de intentie om problemen te herkennen die we niet hadden verwacht zijn we aan het testen.
Natuurlijk is een deel van het testen wat we doen checken maar dit is zeker niet hetzelfde te noemen.
Tot op heden zijn automatische testen niet in staat om testen zoals een tester dit zou doen, wel zijn automatisch testen prima in staat om te verifiëren of een verwachting juist is (Checken). Wat mij betreft zouden we automatisch testen daarom vanaf nu automatisch checken moeten noemen.
Er is niks mis met automatisch checken, zolang je het als een tool wordt gebruikt.
Er zijn wel degelijk momenten waarop automatisch checken een erg nuttige kan zijn, een aantal voorbeelden waar dit het geval is zijn:
- Voor het checken van regressie
- Voor het checken van pure input/output testen
- Bepaalde performance checks
We moeten uitkijken dat automatisch testen/checken verwachtingen schept die het niet waar kan maken.
Nadelen van automatisch checken
Zoals hierboven benoemd kan automatisch checken erg nuttig zijn, maar er zitten ook zeker nadelen aan. In de praktijk blijkt het onderhoud wat automatische testtools met zich mee brengt vaak hoger ligt dan aanvankelijk gedacht. Daarom is het goed om altijd wel overwogen te kiezen om een automatische testtool in te zetten.
Het tweede nadeel is dat met automatisch testtools vaak problemen niet worden gevonden die met handmatige testen wel gevonden zouden worden. Een goed voorbeeld hiervan gaf James Bach (1 van de bekendste testers) tijdens 1 van zijn presentaties. Hij gaf aan dat bij Facebook 1 performance testers werkte die er onder andere verantwoordelijk voor was om elke dag een grafiek te controleren die aangaf of de performance van Facebook nog steeds goed was. Nu werd er een automatische testtool gemaakt om deze taak van de tester over te nemen. Het volgende ging mis met deze tool, wat bleek was dat deze automatische check zo geschreven was dat hij alleen controleerde of de performance van Facebook slechter werd maar niet wanneer hij beter werd. op een dag bleek de performance van Facebook volgens de grafiek erg verbeterd te zijn, de automatische test was gewoon groen geworden (de performance was immers niet slechter geworden). Er bleek echter wel een probleem te zijn omdat Facebook voor verschillende gebruiker niet goed wou laden waardoor de grafiek aangaf dat de performance erg was verbeterd. Een goede tester zou vragen gaan stellen wanneer er een performance verbetering zichtbaar is die niet direct te verklaren is, en er zo achter komen dat er een probleem is. Doordat de automatische testtool dit niet controleerde werd deze gewoon groen.
Nu kun je zeggen dat dit iets is wat ook in de automatische testtool gecontroleerd had kunnen worden. Hier heb je ook gelijk in maar het is voor sommige complexe systemen vrijwel onmogelijk om alles te controleren wat een tester impliciet ook test.
Testtools hebben zeker wel een plek in de wereld van een goede tester.
Er is zeker een plek is voor automatische testtools bij het testen van software. Ik wil alleen aangeven dat automatisch testen vaak niet de heilige graal is die veel mensen het vinden. Het is erg belangrijk om goed na te denken over de testtools die je gebruikt en of het verstandig is om testtools te gebruiken of het slimmer is om gewoon zelf bepaalde testen uit te voeren.
het gebruik van testtools zou een middel moeten zijn en niet een doel op zich.
Leuk stukje, Roy. We lopen bij Activium ook aan tegen de grenzen van automatisch testen. We hebben besloten dat ATF alleen test of de werking van standaard onderdelen niet is omgevallen. Userstories worden nog steeds door een menselijke tester getest, en alleen in de ATF testset opgenomen waneer dit een integraal en generiek werkend onderdeel van onze oplossing is geworden. Meestal gaat er wel wat tijd over de laatste stappen heen.
Bedankt Wilko, Ik denk zelf dat de aanpak die jullie op dit moment bij Activium hebben ook de aanpak zou zijn waar ik voor zou kiezen. Op die manier is je regressietest-set als tester goed te behappen, hou je het onderhoud aan je automatische checks binnen de perken en is er genoeg ruimte voor de tester om ook nog handmatig testen uit te kunnen voeren.
Ik ben het helemaal met je eens Roy! Maar vergeet niet dat aut. checken als onderdeel van je CI proces eigenlijk niet optioneel meer is maar een must. Maar nogmaals: wat je zegt onderschrijf ik voor 100%, goed gesproken!
@Egbert bedankt een leuk compliment om te ontvangen. Ik ben het er ook mee eens dat automatisch checken in een continuous integration bijna een must is. Als het dan maar automatisch checken wordt genoemd en niet automatisch testen.
Mijn ervaring is dat testers in een CI omgeving pas in de laatste fase van een sprints hun geautomatiseerde scripts kunnen opstellen. Ze zijn dan ook meer bezig met de werking van deze scripts dan met daadwerkelijk testen. Daarnaast gaat er door verkeerd gebruik van ttooling zoals Git vaak van alles mis waardoor de testen überhaupt niet meer draaien.