Selling automated tests to colleagues, managers and clients
This is not an article to explain what are automated tests and why you should write them. If the title got your attention, chances are you already know that. But you’re having a hard time convincing others why they should invest in a automated test suite. It’s not an easy sell, specially for mobile apps, where testing is harder to do and has been less advocated.
As an external Android developer, I’ve discussed testing with clients, project managers and developer teams. It’s a different conversation every time, but I gathered some tips that have helped me in the process.
Not all developers write automated tests, unfortunately. And if you never done it before, it can be daunting. It’s a new skill to learn and added work. It’s important to onboard them into testing. Rather than start testing everything, discuss with your colleagues where they feel more risk. Which parts of the project they aren’t as confident in? It’s easier to convince to test those parts first.
Be the example
This goes without saying: you need to set the example. Write tests for your new features, write regression tests for bugs you fix, and avoid breaking existing tests.
Keep improving the infrastructure
One of the hard parts of writing automated tests is all the infrastructure required. API calls need to be mocked, dummy objects generated, distinct databases and preference files, etc.. You don’t need to start with everything in place. But it’s important to keep improving the stack, always make the next test easier to write. And spend some time implementing Continuous Integration, it will keep things in shape and save everyone’s time.
Don't hide the overhead, discuss it
Overhead is the main concern of project managers not accustomed to automated testing. They fear spending effort on something invisible to stakeholders. Your reaction might be to write tests anyway and hide it from the manager. Some features might even require that you write tests to check if it’s working correctly. But the best approach is again to discuss where the main challenges of the project lie and to focus the testing efforts there.
Sell stability and predictability
As projects grow in size and complexity, delivering on time and avoiding bugs gets harder. Stability and predictability become key in the manager’s mind. Which means it’s easier to convince managers to spend time writing tests. And the results of those efforts become more noticeable.
Don't skip manual QA
Note that automated tests don’t substitute manual testing. It’s worth having a step where someone other than the developer runs through the application.
No need to discuss it
Unless the client has technical knowledge, I don’t feel the need to discuss automated tests with them. Our project proposals mention it on our Process section. But it’s not something optional and it doesn’t have a specific cost associated with it.
The advantages will be felt
Clients will likely not notice their app has an automated test suite. They will feel the advantages over time. Less bugs appearing or re-appearing, smoother deliveries, but they won’t be able to tell what’s causing it. Unless the client passes the project to another team and they compliment the fact it has tests. :)
After all this talk about writing tests, it’s important to remember they are one part of building software. Don’t spend all of your social capital on it. Other factors like documentation, communication, experience and team cohesion also influence the quality of the app you’re developing.
Good luck selling!