In any software development life cycle defects are inevitable. Managing their number and minimising their impact on a project are the primary goals of a successful defect management process. Investment in this process can yield significant benefits by reducing the time, cost and resources required for any rework, as well as dramatically improving the user’s ability to deliver software projects on time and to budget.
Common Mistakes & Best Practices Defect Process
Common Mistake: Testing teams are only involved in a project’s testing phase once development is complete. As such, they can detect the presence of a defect, but can’t prevent it.
Best Practice: A holistic approach to defect management means that the testing team would be actively involved in the whole development lifecycle from inception to delivery. Including the team’s expertise in the design phase means that they will have a good understanding of the functionality that is going to be delivered. The testing team should also be able to identify critical risks that could jeopardise the successful delivery of a component or project early in the process because the further down the line a defect remains, the more expensive it is to address. They will be able to devise test cases in collaboration with the development team, which can then be refined and extended as the functionality evolves. As a result, entry and exit criteria for each test would be clearly defined. Once development is complete, the testing team can then focus on high-risk issues and edge cases because other defects should have been eliminated or mitigated throughout the development cycle.
Having the testing team integrated into the development lifecycle offers an efficient mechanism to improve the quality of software development as well as ensure the successful delivery of projects.
Defect Tracking Tools
Common Mistake: The defect management process is conducted via email or spreadsheets in an ad hoc way. The complexity of systems, magnitude of projects and number of people involved makes it difficult to manage an effective process in this manner. There is no standardisation in the capture of the defect’s details and it is very inefficient to attempt to track the status of a defect via email between multiple parties with numerous updates. There is also no way to flag up the importance of a defect in a developer’s already overcrowded inbox.
Best Practice: Ideally the project team will have a common defect management tool, which all members of the team can access and update. Details about a defect should be captured in a standard way with a minimum amount of information. This data would include the defect’s identifier, steps that need to be taken to reproduce the defect, its severity and priority, and its potential impact, including the degree of risk it poses. The tool would provide the ability to assign defects to other parties as part of the defect management workflow. All updates would be captured in this system to provide a central repository of information and an audit trail of the progress of the issues. It would also contain a prioritised list of pending requests. Additionally, there should be a means by which to produce reports as needed, to provide status, information or measurements for interested parties. Jira and Bugzilla are examples of defect management tools commonly used within organisations.
Common Mistake: As teams are busy doing their jobs, little time is given to reviewing and improving the defect management process.
Best Practice: To continually improve the efficiency of the defect management process, time has to be invested to continuously make improvements. Communication between the various team members is essential in any project. As part of the Agile development lifecycle, development teams often hold retrospectives once a project or component has been released or completed. These discussions address the successes and failures of a release or project, and review any potential changes in the process that would improve the next release. The testing team should be included in these discussions.
A review of the defects detected could show any potential oversights in the design, development or test processes. Resolutions or workarounds to bugs should be documented and would form part of the handover to production support people and end-users.
Overall, it is clear that pursuing a holistic approach to testing where it’s fully integrated into the whole development lifecycle provides an effective and efficient way of ensuring the quality of the components released and improving the delivery schedule for future releases.