TEDxDelft 2015 | Andy Zaidman | Making testing fun
“My two-year old son is the best tester in the world. He drops stuff on the floor, throws it against the wall and he watches what happens,” Andy Zaidman says. Though it might seem like a playful attitude, it is the thought behind it that counts and what he feels has been largely lost nowadays.
Zaidman has been interested in computer science and software in particular since he was a teenager, and that led him to earn a PhD at the University of Antwerp before becoming Associate Professor Software Engineering at TU Delft. His curiosity helped him appreciate the complexity of software, but also made him question why relatively little is being done to facilitate the testing of such complex systems.
Software updates have become more common in recent years to the point that people have become accustomed to simply accepting them. These are, for the most part, to fix bugs that exist within the current software version,which seems quite strange to Zaidman. “If car manufacturers would have to recall all their cars to fix a mistake, the costs of the recall would be huge,” he argues. In contrast, the process of releasing software that works properly straight out of the box has decreased to the point that it has become a nuisance when a bug has been found and needs to be fixed.
Testing software before its release is important, but undervalued by many. This could lead to costly errors such as the Ariane space vehicle blowing up within seconds after its launch or medication being applied in wrong doses. “It has become an intrinsic part in our lives, whether it is to pay at the cash register or to keep up with our social lives online,” Zaidman says. So why not test software? Zaidman believes gamification -essentially turning the testing process into a game that rewards good results based on identifying errors- could help make testing become fun again. It is a crucial part of the process and identifying mistakes will only help to improve the programmer and the software in the end – essentially using software to make software better.