Test a developer’s software and you’ll find bugs.
Teach a developer to test and they can release their software.
A bit of a twist on the old fish and eating maxim, but the same idea: teaching a skill enables self-reliance and self-confidence. And, while it’s harder than quickly doing someone a big favor, teaching is scaleable in a way that quickly refutes another old adage: we have so many bugs because we don’t have enough testers!
Now, imagine all your developers are also testers. As they realize code quality is now their responsibility, the production of bugs slows to a trickle. Because laziness is their most prized virtue, automated testing tools begin to spread through the team. Cucumber and Selenium enable developers to start thinking like a tester while writing the tests in committable and executable code.
Sure, the initial hit in perceived productivity can turn away the bravest of managers. But push through for just a few months and you will have forever revolutionized your development process. Coupled with Continuous Integration systems like Jenkins or Travis, developers doing automated testing empowers your business to release earlier and more often. Faster time to market is one of the best ways to truly outclass your competitors.
For my team, I purposefully picked a testing language and framework that differed from our application. It had to be fun and intuitive to use but, at the same time, a powerful tool for ensuring code quality. Once the developers realized they got to learn a new language during work hours, their motivation outweighed their reservations of losing the safety net of a testing team. Meanwhile, the testers largely moved on to other areas, while the lead tester stayed on to help write test cases – arguably the most valuable skill of professional QA staff.
This step had a profound effect on the way the team worked together and our capability to do multiple releases per month. Have you challenged your developers to think about automated testing?