The common context for all these defect tracking patterns is that the bug database and the defect tracking system are internal, and used by the development team members, which may include someone in a customer-facing role who takes reports via the telephone or email and enters them into the system. A general-purpose customer support problem reporting system is outside the scope of these patterns. Some aspects of defect tracking within the development process are either too low-level or irrelevant to the general user population.
The patterns frequently reference four roles that development team members may play. These named roles have specific definitions within the patterns.
- Customer
- The Customer role may be played by a real end user customer, but more likely it will be a QA Tester, or another team member. The individual entering the bug report is the system is playing the Customer Role.
- Programmer
- The Programmer is the role taken by the person who is assigned to write code or otherwise modify system to fix the defect. A Programmer would at a minimum unit test the fix, and run any unit test suites, and may, depending on the team, run regression and integration tests.
- Tester
- The role of Tester is to verify the fix and validate it against the bug report. The same person may take both the Programmer and Tester roles, but the goals are different. For the Tester, the implemented fix is not considered done until it provides a satisfactory resolution to the bug report.
- Dispatcher
- The Dispatcher has the role of setting priorities and assigning bugs to be worked on, then following up on work. The Dispatcher also coordinates the life cycle events of a bug report between various other roles.
Keeping these roles in mind while reading the patterns is an important aid in understanding them.