On many software teams, developers are responsible for writing unit and component tests, and software testers are responsible for writing API and UI tests. It’s great that teams have so much test coverage, but problems can arise when test automation is siloed in this way. For one thing, developers and software testers often don’t know how each other’s tests work, which means if a developer makes a change that breaks a test, they don’t know how to fix it. And if only one person on the team knows how the deployment smoke tests work, then that person will need to be on call for every single deployment.
I recommend that every developer and software tester on the team know how to write and maintain every type of test automation for their product. Here are three good reasons to break down automation silos:
No more test overlap: If automated tests are siloed between developers and testers, it’s possible that there is work that is duplicated. Why have several UI tests that exercise business logic when there are already integration tests that do this?
No more bottlenecks: Testers are often required to create and maintain all the UI automation while at the same time doing all the testing. If a developer pushes a change that breaks a UI test, it’s often up to the tester to figure out what’s wrong. If developers know how the UI automation works, they can fix any tests they break, and even add new tests when needed, allowing testers to finish testing new features.
Knowledge sharing: Software testers have a very special skill set; they can look at application features and think of ways to test the limits of those features. By learning from testers, developers will become better at testing their own code. Developers have a very special skill set as well; they are very familiar with good coding patterns. Many software testers arrive at QA from diverse backgrounds, and don’t always have formal training in coding. They can benefit from learning clean coding skills from developers.
By breaking down automation silos and taking responsibility for test automation together, software developers and software testers can benefit from and help each other, speeding up development and improving the quality of the application.