Software testing has been gaining more and more value in the IT industry over the past years, especially as applications and architectures become increasingly complex. Want to know why? I'll try to point out a few simple reasons:
- When done at the right time, tests can detect those nasty failures that could be very expensive to fix in later stages of development.
- Testing helps in ensuring the quality of a product, which enhances customers' confidence and satisfaction, as well as the team's trust in their deliverables.
- Delivering high quality products increases an organisation’s reliability.
Unit tests VS Integration tests
I believe that developers should mainly create unit tests, and do integration tests only to a limited extent, while qualified testers should be responsible for the remaining panoply of tests. Why is this? Mostly due to the nature of the tests. Unit testing is a more analytical approach to content and its structure within the code; integration testing can take things one step further by mocking actual user interaction, thus unleashing a whole new bag of potential scenarios to test.
In their roles, testers and developers have distinct perspectives over a problem and its solution. Each one with its relevance in the process.
Developers: ‘How can I make it?’
Testers: ‘How can I break it?’
Building the best solution for a certain problem is one of the main purposes of any developer. However, when someone is focused on making a product, they might not notice some flaws that may exist. That is completely normal!
Everybody makes mistakes!
This is where testers come to action. Unlike developers, testers have a different creative top-down approach to the solution. They interact with the built solution, trying to reproduce the final users’ actions. Testers try to test multiple case scenarios, many of which were never considered by the developers.
Break it, so the user does not!
When combined, these two perspectives can add much more value to the final solution, which will enhance the user experience.
Same Final Goal
Despite their different perspectives, we can all agree that both testers and developers crave the same goal.
Deliver the best product!
After all, testers and developers are part of the same team, thriving off the same objectives - delivering nothing less than excellence. I mean, who doesn’t get proud when delivering something well done?
Communication is crucial
In the tester-developer relationship, as in any other relationship in life, communication plays an essential role. But when it comes to pointing out flaws, it is even more delicate.
Don’t take it personally!
One of the most frequent struggles is when someone starts to take the testing process too personally, and it can happen on both sides. Developers should never take the testers' criticisms about their work personally, and equally the testers should never make their criticisms a personal attack. They should rely on professional and constructive critiques.
Developers and testers relationships can sometimes be compared to a cat and mouse relationship, especially when the tester keeps throwing back a feature ticket that never seems to get done. Regardless, we all know that the best solution is achieved when everyone works together for the greater good.
Be kind to one another!