The ultimate goal of every organization is to prevent the defects in the product and eradicate them before they take form. This is achieved by implementing good processes, rather than finding and fixing them. The testing should be reduced dramatically to "qualify a product," with less focus on finding defects and more focus on "defect prevention." This article was published in S|E|A| Software journal June 2003 and was also presented at the ASIASTAR-2002 testing conference.
Addressing the perceptions
It is very important to address incorrect perceptions about testing. Testing doesn't stop with the finding of defects. In fact, that's where the task begins. A test engineer should get involved at the beginning of the product life cycle in order to understand the product, contribute in each phase of product development, and review and prevent defects. This makes the job of a test engineer very difficult, but also interesting.
Firstly, a test engineer should have good listening, communication and conflict management skills. The test engineer should have highly developed technical skills in the product and testing domains and in software development processes. These points need to be explained to the test engineers in order to emphasise how important testing is in product development.
The following actions, with clear understanding and convictions from the management team, would help in addressing this issue:
- Avoid inducting engineers fresh from university into the testing team.
- Never entertain the notion that people with lesser skill sets can become testers. If you assume that test engineers of any calibre can do justice to testing, it is dangerous and detrimental to the success of the final product itself.
- Always remember the maxim–if a person is not suitable for development, for the same or similar reasons they may not be suitable for testing.
- There is testing in all development and there is development in all testing. Developing code is not only the responsibility of the developers. They also have to do unit testing to ensure the code is correct. Similarly, automation and test suite development are part of testing, which requires very good development skills.
- Rotate your best development engineers into testing and make your whole engineering community understand and appreciate that testing is important.
- Define clear roles and responsibilities. It helps to have clear and precise role definitions for these areas, such as test execution engineer, test strategy engineer and test automation engineer. This will reinforce the notion that testing doesn't mean only test execution where an engineer takes the test cases and keeps on executing them.
Getting the team together
As testing may be the last or penultimate phase of product development, it is important to realise that contribution by a few individuals in the team would not make the product successful every time. Effective teamwork is needed to share skills and work to ensure that the product releases on time. A high degree of optimisation is needed in test teams to absorb the delays in product development. This absorption has to be done without affecting the quality of the product, and that is where creativity and innovation play a major role. Creative teaming is simply pooling ideas from all individuals of the team and implementation by everyone in the team.
The following actions would help in taking the team forward together:
- Train the team on the importance and benefits of working together as one team.
- While you are recognising individuals for achievements, recognise the team.
- Address issues that affect the team working together on a priority basis.
- Provide forums for team members to share concerns, feedback and ideas.
- Always involve the team in making critical decisions such as the schedule and release of the product. In situations where the decisions are taken by the manager or an individual, ask the team whether they have any concerns with the decision and address those issues.
- Provide the team with goals and encourage team members to decide on their own actions to meet those goals.
A set of test engineers can’t be called a team. It is only a sub team. Finding all defects