Today’s software development team involves many players to ensure that the final product responds to a specific business problem. The star role typically belongs to the software developer who actually writes the code and develops the product according to specifications. During this process, an equally important role is filled by the software QA/tester who performs tests along the way to ensure that there are no bugs in the product. Throughout the software development cycle, the developer will test to check if the code is working correctly while the QA/tester will test if the application is not working properly.
This relationship is generally fraught with tension. Once the developer finishes developing his code, he will pass it along to the tester to begin testing for bugs. Upon receiving the code, the tester will generally find several bugs and complain that no unit test has been performed. The developer may then become understandably defensive, retorting that the uncovering of bugs is likely due to user error and not necessarily a vital area of the code.
And so begins the endless push and pull in this dynamic duel, or rather duo. This particular relationship can become tenuous unless each one understands the other’s overarching role in the software development process. In order to achieve a better working relationship, it is necessary that each player contribute towards:
- Breaking down the silos: Both the developer and QA/tester must eliminate the barriers that have traditionally separated them. This will help ease the tension that may exist in the software development team and pave the way for better collaboration.
- Initiating cross-functional learning: Understanding each other’s roles can be beneficial to the overall software development process. If a developer learns more about how to test his code, this will be extremely helpful as he begins designing the code initially. Similarly, if a QA/tester learns more about software development, he can become more adept at identifying bugs.
- Establishing better methods of communication: If and when the QA/tester finds a bug, he should support the developer by providing him with data that will facilitate the fixing of the bug.
By taking a more modern agile approach such as Test-Driven Development (TDD), both the developer and QA/tester can work together throughout the development cycle straight from the beginning to create and test a viable product in the most efficient manner possible.