Whenever I face a group of fresh graduates for the first session of Software Testing, I come cross this question very often while imparting trainings that, “Why a developer should undergo the training for software testing?” This is an obvious thought especially for a person who is new in the industry and has a mindset set to be in Development. The fear of moving towards the other side of table scares them. On investigating about the source of this fear, we figure out that the institutes, colleges and universities are still teaching with the age-old curriculum and the mindset. They still have not adapted Software Testing as the new and improved “career opportunity”. Software Testing is still considered as
Software testing is still considered as an inferior job especially for those who are not good with the development skills.
Software Testing is a process of checking the quality of the software deliverable by doing certain checks against the client requirements and provide the gaps to the developer of the deliverable to get it fixed. With the due course of time, this process has improved by including the internal organization-level requirements along with the client business requirements. The ultimate purpose of the testing process is to provide the customer the best quality product.
To improve the quality and to save on cost, the testing process has moved up in the ladder and the reviews are embedded along with various phases of the SDLC (Software Development Life Cycle). Improving the quality of the deliverables is the responsibility of the team as whole, and not only of testers.
The developers are supposed to write the code, to develop the application/ functionality, to make tweaks and changes in the application/ functionality. The question is then, “why developers need to know about testing?” The answer is simple, “to do better development”. As per our traditional thought process, a tester is supposed to test the application for defects against the business requirements. But the scenario has changed a lot since a decade. Now, software testing is not just limited to finding defects.
The expectation from software testing can be illustrated as below –
The developers can always be a part of Software Testing by contributing in the best possible manner. Software testing process does not only include the testing of the finished product, but also the reviews, unit testing and white box testing. If a developer knows, how the testing is done and what factors are kept in mind while doing the test execution, then they can focus on such kind of errors and make sure they are fixed before the code goes into testing. The developers are not expected to start finding defects in their work, but they can contribute via:
The process of reviews in place, to capture the defects in the early stages of the project, which in turn saves cost on rework. Not only the source code, but also design documents, the requirement documents and many other similar deliverables should also be reviewed with the same motto.
The unit testing is the first level of testing which should be done by the development team. The unit testing should be done thoroughly to avoid unnecessary defects in integration and system testing level. The purpose of unit testing is to detect all UI specific defects and to have smooth execution of basic flows of functional requirements.
For doing white box testing, the tester need to have the good knowledge of the programming language. Moreover, who else knows the code better than the developer. Hence, the developer can impersonate as a tester for white box testing. The white box testing can be part of the review process.
By doing their share of testing, the developers are going to spend more time in development instead bug-fixing. Let’s accept, no one loves rework. The moment the piece of code is checked-in to the repository, the feeling of peace and happiness can easily be seen on a developer’s face. But, when the same piece of code is doing rounds between development and testing team in the form of a defect, the feeling changes to hatred. Hence, why not put some effort in beginning to avoid the multiple rounds of hatred afterwards.
To summarize, by testing their own piece of code via reviews, unit testing and white box testing, developers are ensuring to deliver better quality product to the testing team. This will, in turn, enforce the testing team to focus on better quality defects instead of mere cosmetic defects. Together, they both can help in delivering the best-possible quality of the deliverables to the end-customer.