As development progresses we inevitably run into functionality gaps that are either deemed as enhancements.
These issues often get captured by QA in the bug tracker and assigned to a developer.
Enhancements should not be managed from the bug tracker
The life cycle of a defect and the life-cycle of a enhancement are two entirely different things. A defect is a difference between a stated requirement and the code. If there is no documentation there is no code defect (see It’s not a bug, it’s…) — in fact, most enhancements will eventually be coded by some developer; they just should not be managed from the bug tracker.
The defect life-cycle is well known:
- Defect is identified as a departure from the requirements
- Defect is assigned to a developer
- Defect is corrected
- Correct is verified
- If not corrected re-open and re-assign to developer
- The defect is closed
This is the incorrect way to manage enhancements. When a functionality gap is determined by QA and it is not covered by the requirements then we have an issue. It is rarely the case that the issue can be resolved by the developer.
If enhancements are assigned to a developer then they are likely to try to resolve the issue. The problem is that “enhancements” determined at the QA level may be phantom problems caused by either:
- Insufficient requirements
- Correct requirements but incorrect test plans
Enhancements may or may not become code changes. Even when enhancements turn into code change requests they will generally not be implemented as the developer or QA think they should be implemented.
Enhancements are really requirement defects. Enhancements should be logged as such in the bug tracker and assigned to the person in charge of requirements (business analyst or product manager). Those individuals should be responsible to track down how these issues should be handled.
If the requirements are correct and the test plans are defective then it should be logged as a test defect. This is tricky because QA often controls the bug tracker and will not log errors that they have made.
At a minimum, the implementation of requirements and test defects can do several positive things for you:
- It removes the responsibility to find a solution from development.
- It makes it clear how many defects are in the requirements or test plans.
- It reduces stress; no developer wants to be blamed for an issue that is not his.
- Many enhancements call for updated project plans and pushing back the deadline.
Put Responsibility Where it Belongs
The creation of requirements and test defects in the bug tracker goes a long way to cleaning up the bug tracker. In fact, requirements and test defects represent about 25% of defects in most systems (see Bug Tracker Hell and How to Get Out!). The percentages break down as follows:
- Requirements defects: 9.58%
- Testing defects: 15.42%
The creation of requirement and test defects in the bug-tracker alleviate pressure on the engineering department and redirect it to either the product manager or QA. Eventually enough data will accumulate in the bug-tracker to get management’s attention.
At a minimum, these categories should help reduce the amount of fire-fighting in late projects (Root cause of ‘Fire-Fighting’ in Software Projects)