The relationship between developers and testers has been compared to that of a writer and an editor or, worse, a writer and critic. There was a time when conflict between the roles was actively encouraged as a means of instilling healthy competition.
Increasingly, however, there are systems and practices that promote a more transparent and collaborative approach. Let’s explore the rationale behind the transition toward this increasingly symbiotic relationship and how to achieve it in your workplace.
1. Understanding each other’s roles
Levels of stress and conflict are relatively high in this industry. There’s the ongoing pressure of deadlines and goals. Add to that the constant obligation to keep abreast of evolving tech, new systems, and changing consumer habits. This isn’t going to slow down anytime soon with the rollout of 5G and its effects on business practices.
In the sprint toward the next deadline, time is stretched and pressure is high. Fresh bug reports can be disruptive and time-consuming, so, understandably, conflicts can arise. Here’s how to handle them.
Cybersecurity have to ask themselves, “How could I hack into this system?”. Similarly, testers must ask, “How could I crash this program?”.
Testers use stringent processes to identify mistakes and potential problems. It would be understandable to feel a sense of satisfaction upon spotting an issue that everyone else has missed. Similarly, a doctor’s job is to identify health problems, but they wouldn’t relish the task of delivering bad news to a patient.
Diplomacy is a vital virtue for testers. You shouldn’t celebrate finding a bug in a developers’ code. They’re called bugs for a reason!
Developers often blame testers for undermining their hard work and picking faults. This can be demotivating, and nobody would blame you for venting your frustrations outside of work. But diplomacy is vital here too, so take note of back-end developer soft skills.
Testers are the embodiment of your end-users. They specialize in the study of UI/UX. They can also mediate between everyone in the production process.
Utilizing your colleagues
It’s logical that a developer’s emphasis is on code, while testers focus more on the UI. But the front and back end are both vital to the success of the project.
Testers save time and money in the long term by identifying issues early on. They’re often more holistic in their approach than developers and able to see things subjectively. They should therefore be involved from the initial planning stages.
2. Early testing
Testers can help early in the process by identifying what kind of testing is available and which tests should be carried out. This instills team bonding and group motivation.
Developers are then aware of the scrutiny their work will be subjected to and what the desired outcomes are. Issues can be identified before they arise, avoiding unnecessary conflict down the line.
This is also an opportunity for testers to find out what testing the developers will be carrying out themselves. Both sides can speculate on what potential issues may arise.
Storyboarding and wireframes are useful for UIs. This is where developers, testers, IT operations, marketing, and front-end designers should collaborate. They will all work from different perspectives and each have something to contribute.
Together, they should map out the flow of data from UI to API to database, identifying how and where it will be processed. Are the fields in the database optimized for efficiency and functionality? Might a new feature affect the functionality of other features? Celebrate this diversity of thinking, whether you’re working in the office or managing remote teams.
3. Face-to-face and verbal communications
This is an industry in which our work frequently makes it easier for people to communicate. From social media apps to an IT ticketing system, our work improves efficiency and facilitates interactivity.
The irony is that our own communications can sometimes suffer. We’re absorbed in code, technology, and repetitive technical tasks, and we sometimes prefer it that way!
Face-to-face communication matters. It can convey more than just data. Complex thoughts and feelings can be exchanged which builds trust and promotes empathy. If that’s a bit much, here’s some data!
Phone calls can now be recorded using voice intelligence in call history. You can thus notify other team members about relevant conversations.
Even a simple dial-in number call can be preferable to and quicker than drafting a group email. Decisions can be made more quickly and problems discussed in detail and in real-time between developer and tester teams.
4. Transparency and visibility
In a fast-moving environment, problems and solutions present themselves all the time. Decisions might be made quickly via email or phone call. However, it’s worth having a preferred method of communication on which to record these.
This should include progress made and problems encountered. It could be a group chat including all members of the team, increasing visibility and improving communication.
What appears to be an issue to a tester might not be a bug at all, but a feature that will reduce load time when added to the next sprint. Solutions and support can often come from unexpected sources when everyone is in the loop.
Everyone’s role in the process then becomes clearer, improving efficiency and promoting team bonding. Certainly, it’s easier than ever to be productive with the use of cloud services for remote collaboration.
5. Continuous integration/continuous delivery/deployment
Your teams are now collaborating, with robust lines of communication in place.
‘Continuous integration’ involves a system of parallel working. You can automate code to continuously integrate into a shared repository for testing, without affecting the main branch that developers are working on. Developers can then merge code after it has been subject to robust testing. This reduces bugs and saves the time and cost associated with manual testing.
‘Continuous delivery’ means the constant application of additional changes, bug fixes, features, and other updates. Development is kept ‘green’, meaning it’s good-to-go at any time.
‘Continuous deployment’ is the automated process of releasing updates and new versions, for example, to an app store or other endpoints. These processes can be easily integrated into an agile workflow.
6. QAOps: Fully integrated testing
QAOps is a unified approach that integrates the testing and development processes. Much in the way that DevOps integrates developers and IT operations, QAOps goes further by merging QA into the process and integrating it into the CI/CD pipeline.
Not only can the testing be automated, but multiple tests can run on a parallel basis to further speed up the process. Scalability testing can gauge efficiency based on usage to improve performance.
Automation can be used for tasks that are arduous and repetitive to do manually, such as regression, geolocation and cross-browser testing. This saves time and money, freeing up your team for more creative and productive work.
A fully integrated team
Some believe that QA and DevOps are inherently separate, and to crowbar them into the single practice of QAOps is misleading. However, as a concept, this perfectly portrays assimilation among coding teams.
It means developers and testers aren’t locked in perpetual conflict like a writer and critic. Their roles may contrast, but they dovetail and coalesce toward a common objective – perhaps more like a tightrope walker and a juggler!