Unfortunately, during a software project, there will sometimes be tension between the programmers and the testers. This tension comes from a different set of beliefs, or simply, opposing views as to who is responsible for what. The PM may need to explain testing responsibilities.
While a programmer might believe that they do not need to do testing, a tester might believe that the programmer needs to test for most of the defects. While some team members may not know where unit testing ends and where functional testing begins, the manager can clear things up. These types of “boundaries”, or the “separation of work” among team members needs to be cleared up. The manager must be clear about the responsibilities and process.
It is easy to make the assumption that to build software, all you really need is a good programmer. After all, if the software is built, why bother assigning extra resources to work on the software. Also, isn’t it frustrating to spend so much time in the testing, where nothing really happens to the feature set. These type of ideas can cripple the quality of a project. A project manager needs to explain the importance of quality for the success of the project, and why having a shared testing responsibility between the programmers and the testers will ensure that quality is achieved. The testing responsibility needs to be broken down between programmer and tester, with the programmer being responsible for unit testing. This dual responsibility for testing ensures a thorough quality check of the software. First, as part of unit tests, the programmer will ensure that the program works according to how they want it to work. Second, when the testers receive the program, they will ensure that it satisfies the requirements as outlined in the Requirements Specification. The difference is that, whereas the programmers ensure the programs works according to their needs, the testers ensure that the programs will meet the needs of the stakeholders and users. The programmer and the tester approaches differ, and as such, they both need to test the software. The reasons for this approach should be explained by the project manager to the programmers and testers.
The project manager’s role is to ensure that the team understands the reasons for the balanced approach to testing. Programmers need to understand that the manager isn’t trying to punish them with extra work, but that there is a logical reason as to why the programmer should be responsible for unit testing. Before the program is given to the QA team, it should pass each unit test. This will allow the QA team to work with the program as if they are users, rather than programmers. Remember, the QA doesn’t have access to individual program components such as functions, objects and classes. This leads to the problem that a broken component could remain hidden within the program, beneath the user interface. The broken component could remain hidden, until a user activates a complex sequence of steps that then reveals the problem. QA knows about this and they do attempt to use the software in complex ways so as to test units together within the software . However, as the programmer works at a deeper level with the program, they are able to perform tests that which reveal the kinds of problems that may be invisible to QA. By performing unit tests, the programmer is then able to give QA code of sufficient quality.
Interested in Management? Check out our management course!