Developers vs. Testers
Who Should Write Test Scripts?
Frankly, when we posed this question to our Development Manager and Testing Manager, we expected a healthy debate—but we found these two engineers were actually on the same page. Rather than fireworks, we saw the positive effect of collaboration between two functional areas working from the same core beliefs, something that can only bode well for the end product.
Developers and Testers: Differing Strengths, Important Roles
Writing test scripts is a team effort and the answer to who should do it isn’t black and white. The best strategy is to team up developers and testers to enhance the work of two very different functions. Testers will know a test case inside and out while developers will not just know the code, but also the best practices in writing scalable and maintainable code.
Developers are code review experts, while testers write test scenarios or the steps to take to test the code—in essence, the test script. We may start with a basic test script, but over time scripts need to be enhanced and become more complex. Testers will need developers’ help to ensure the code is up to snuff, i.e., does it meet development standards? Code review is really important.
Complexity Requires Strategic Planning
The reality is that in modern applications, writing the test scripts can be just as complex as writing the code itself.
A good question to start with is whether your Software Quality Engineers (SQEs) have the skill level required to write really complex scripts. If yes, then have them write the scripts. One option is to assign a developer to testing. This person’s background is in development, but he is assigned to write test scripts. Another possibility is rotating the test writing effort between your developers. One may write test case A and implement the code, while the other writes the script.
The Value of Isolation
We do believe that there’s a big benefit to isolating the person who writes the code from the person who tests the code. It’s just human nature. If the same person builds the code and writes the test case for it, there’s a good chance something will be missed. A pro tester is only focused on the inputs, outputs, and domain.
What About Assigning the Test Script Writing to the Same Person Who Wrote the Code?
A good developer—the guy who wrote the code—really understands the requirements and scope, so one benefit is that you won’t have the wasted effort of test cases that are out of scope or miss requirements.
Also, as was mentioned before, test scripts can be really complex. Obviously a developer will have a stronger and deeper background in development and that will give him an edge.
Keep in mind that testers and developers think differently. In testing, it’s necessary to be able to think of various scenarios that would occur in the real world. It’s tough to think “outside of the box” and anticipate every possible scenario, but that’s the core responsibility of a good tester and it’s one of the most important skills we look for.
How About the Benefits of Building Your Own Framework?
How Does That Relate to Testing Automation?
There are tons of ready-made frameworks—and it can save time to use one—but often they aren’t a perfect fit and can be overkill. This is yet another good argument for getting testers involved in your test automation strategy.
- It forces the engineers—both developers and testers—to really understand every area of the application and your test strategy.
- It ensures that it’s built for the future – that it’s extensible and reusable.
- It’s another area where we need developers and testers to collaborate. The SQEs will design the framework, but need the help of developers to ensure it’s built according to standards.
Has the Question Been Answered?
Following the tenets of Agile development, our developers and testers truly display the effort to work as one team. The short answer is that the tasks can be done by anyone with the right skills. At the end of the day, if you have people with good skills and they embrace collaboration, the team will get it all done together.