During the course of my career I’ve worked on many projects where the relationship between development and testing has been excellent, whilst also having witnessed the other end of the spectrum where the relationship has been poor.
In projects where development and testing collaborate effectively, test design is more effective as the test team have ongoing dialogue with the development team to understand which features have been problematic, which are complex and which are more straightforward. This informs test design by allowing testing to focus and prioritise on areas where the risk of failure is greater, e.g. complex features or where there have been issues during coding and unit testing. Greater emphasis is therefore placed on designing and executing tests for the complex or problematic features. Without this focus effort can be wasted in areas of the system where defects are unlikely to be detected, which can in turn let issues in other areas of the system slip through the net. However, this is not to say that testing should not be carried out where the risk of failure is less, as this is where entirely avoidable errors can arise. Striking the right balance is key.
Good collaboration also improves the efficiency of defect management. Effective working relationships between the development and test teams makes it is easier to describe an issue in terms both parties will understand, or to request clarification or additional information where necessary. When it comes to resolving complex issues where the root cause is hard to identify, good relationships will help to get everyone round a table to work them through to resolution. Where the relationship between testing and development is distant or strained it can be easy to get into a game of “defect ping pong”, with poor descriptions of the issues or lack of clarity on requests for additional information; in turn leading to longer resolution times and poor first time fix success rates. Collaboration in defect management is covered in the Exception blog ‘Planning for Success in Managing Change within Testing’.
As Agile methodologies become more prevalent in organisations collaboration becomes even more important. Agile relies on small to medium teams working together to deliver a working product for each sprint. Agile’s time-boxed deliverables keep the team focussed on delivering what was agreed within the timeframe. The optimal way to reach this aim is as a team working together to get the job done.
The focus of this blog so far has been on collaboration between testing and development but the same principle applies across all teams involved in a project.
My last blog highlighted the importance of early testing involvement and the need for a common understanding of what the project is trying to achieve and that’s where collaboration comes in. Working closely with other areas of the project to understand what they need to do for the project, how that fits with what your team needs to do and how you can both help each other out, not only ensures that you’re all working towards the same goal, but also builds good relationships with the other teams involved in the project. This then means when you, or they, hit an issue and need help from within the project to resolve it, they are happy to ask for help and everyone can get round the table to work out a solution together. When this happens collaboration is truly at work.