It's free to join Gamasutra!|Have a question? Want to know who runs this site? Here you go.|Targeting the game development market with your product or service? Get info on advertising here.||For altering your contact information or changing email subscription preferences.
Registered members can log in here.Back to the home page.

Search articles, jobs, buyers guide, and more.

By Pål Frogner Hansen
[Author's Bio]

Gamasutra
November 20, 2003

Introduction

Utilities And Custom Reports

Printer Friendly Version
   

 

Change Login/Pwd
Post A Job
Post A Project
Post Resume
Post An Event
Post A Contractor
Post A Product
Write An Article
Get In Art Gallery
Submit News

 


 


[Submit Letter]

[View All...]
  



Upcoming Events:
Workshop on Network and Systems Support for Games (NetGames 2009)
Paris, France
11.23.09

EVA 09 - Exposicion de Videojuegos Argentina
Buenos Aires, Argentina
12.04.09

Flash GAMM Kyiv 2009
Kyiv, Ukraine
12.05.09

Game Connect: Asia Pacific (GCAP)
Melbourne, Australia
12.06.09

ICIDS 2009 – Interactive Storytelling
Guimaraes, Portugal
12.09.09

[Submit Event]
[View All...]

 


[Enter Forums...]

Note: Discussion forums for Gamasutra are hosted by the IGDA, which is free to join.
 

 

 


Features

How Funcom Squashed Bugs With Bugzilla

Utilities And Custom Reports

The Reopen Tool. Shown in Figure 3, the Reopen tool is typically used by our QA team. It is used to spot weak testing in our organization. It can answer questions like:

  • "What department reopened the most tasks/bugs?"
  • "Regarding the reopened tasks on milestone 14.7.8, what department owns these tasks?"
  • "Who owns the most recently reopened tasks?"

This tool is mostly used when we close in on milestones (when QA is in its most active period). There can be valid reasons for a bug to be reopened, so these statistics aren't used as a pillory, just a feedback mechanism. We use the amount of reopened tasks to see if we can make our deadlines. We can also see what a change in the build process (or the whole production process) does to the amount of reopened tasks.


Figure 3: The query interface in the Reopen tool. Seemingly rather complicated, but it is very powerful.

Task Bouncing. Like the Reopen tool, tracking our task bouncing helps us improve the quality of our work. It looks at the history of reassignments, and answers questions like:

  • "How many reassignments from a designer to a coder were done on milestone 14.6 and 14.7? And who most often reassigns tasks?"
  • "In any department, any milestone, at any time: who took another person's task and reassigned it to himself? Maybe group it on profession, and then user?"
  • "What departments did the design department reassign tasks to? And which people in those departments received the most reassigned tasks?"

The Microsoft Project Exporter. When we have the routines in place for entering meaningful estimates into the bugs, the link between Bugzilla and Microsoft Project is our most valuable planning tool. The export process is semi-automated. From a web page interface, we first choose what bugs we want to export from Bugzilla. The results from the page are then pasted into Project, which has a blank template and correct date set. This template is customized for our company, with every person's vacation and working hours included.

We then analyze the data in Project. Project can order and prioritize the tasks (a process called "leveling"), but to do this correctly requires realistic data about each bug. To have Project prioritize tasks and calculate the optimal timeline for your project, it uses a numbering system in which tasks are given a priority score between 1 and 1000. When exporting data from Bugzilla, we calculate a task's priority score based on its milestone and its priority. For example; all tasks on milestone 14.4 have higher priority than any on milestone 14.5. A P5 task (Bugzilla term for Priority 5) on milestone 14.5 has a lower priority than a P3 task on the same milestone.

In Project, you can have up to 30 custom fields, in addition to the built-in ones the application comes with. We use these fields to capture Bugzilla fields like "milestone", "status whiteboard", "production pipeline", "last updated" and other fields we need sort the bugs by during our analysis. Figure 4 shows how we view things in Microsoft Project.


Figure 4: Using Microsoft Project to analyze Bugzilla data and assign the task order, you can determine whether you will make it to the next milestone under current conditions.

The Hours Report. The hours report, shown in Figure 5, helps prompt our developers to enter correct estimates. It can tell you the total number of hours developers spent fixing bugs during a given time period, and the number of times a user or department has updated their estimates. Importantly, this tool tells us whether the data in the database is up to date or not. It's important to know whether we can trust the time-related data in the database, and we can easily see whether there's someone on the team that needs to be more vigilant about updating their project data. In this tool the query-interface is very much like the reopen and bounce tools.


Figure 5: This page shows the total hours spent fixing tasks per week, as reported by our developers in Bugzilla.

The Automatic Bug Hunter. This is a tool we have had for a long time on AO. Our servers create logs all the time, which are parsed by a daemon to create different reports. A crash on a server will generate a Bugzilla bug, accompanied by a log and full stack trace. If an identical bug is already in the db, the bug is just marked as a duplicate. The tool finds asserts, crashes, allocation failures, undefined shutdowns, and it creates charts showing this nasty activity. Once a bug is created in Bugzilla, the normal procedure is followed whereby the owner(s) of those components gets an email about the new bug. The automatic bug hunter is also used to keep statistics on the crash-rate, as shown in Figure 6.


Figure 6: The game's crash rate, as generated by the automatic bug hunter. Watch depressing statistics hour by hour!

Task Statistics. Our ability to track task statistics has proved to be very handy when it comes to measuring the state of the project. This report counts open tasks on given milestone(s) over time, and generates a graphical representation of it (see Figure 7). Usually the usage of this tool increases when we get close to a milestone. Comparing current milestone with last gives you a good indication of where you are going.


Figure 7: Snapshot of the number of tasks on a milestone from the past. The Bugzilla database is queried directly to create this overview.

Task Creation Overview page. The task creation overview is similar to the task statistics tool. In the past, the AO team had problems whereby some departments assign lots of tasks to other departments at the wrong time -- e.g., after reaching the feature-complete stage. To easily spot and visualize this problem, we created a simple page that displays a grid showing the number of tasks and links to them (see Figure 8). Clicking on a number for a specific week shows you a task list, using the normal Bugzilla query.


Figure 8: The task creation page. Control the amount of work going into the pipeline. With a list like this it is easy to make charts for even better overview.

Work Yet To Be Done

Because we aren't always using Bugzilla the way it was intended, we've discovered some undesirable effects, and there are modifications we want to make to the tool. These include:

Calendar Round Trips. I'd like Bugzilla to better integrate with our calendar. A task could have a start and end date, but currently we can't export tasks to Microsoft Project, change them there, and then import these modifications with calculated start/finish dates back into Bugzilla.

Task Clean-Up. Our team leads have to fix many incorrectly submitted bugs, which I'd like to address in the product and/or our processes. Granted, cleaning up the data here and there will probably never go away.

We also want to address the situation in which a task is sent around to different developers, each of whom helps complete the task. Our current system credits all hours devoted to a task to the task owner, but tasks like this should be split up into subtasks. We've repeatedly lectured our staff about subdividing tasks in Bugzilla when this occurs, but the problem continues.

Help Team Leads Manage The Information Bugzilla Provides. Team leads have to track many tasks. If you are the lead and you want to follow everything on your project, you need to be cc'ed on a lot of tasks; this means that you'll get lots of email every day. You have to have a good mail filtering system to survive this.

Latest Updates To Bugzilla. The latest version of Bugzilla (v2.17.4) contains many improvements over the older version we built our system upon. Examples of what's new include:

  • Graphical representations of your queries
  • Security fixes
  • Templatization of the pages
  • Accompanying "reason-for-getting-mail" explanation on Bugzilla-mails.
  • Improved attachment handling and editing.
  • A built-in method for tracking time spent on bugs that differs from Funcom's solution

Threaded Discussions. It would be easier to understand comments about bugs if we could implement a threaded discussion for each bug. I'm sure that this is a requested feature in bugzilla.org's own (publicly available) Bugzilla.

Time Estimate Analysis. We would like to be able to track and report statistics regarding how well a developer (or all the team members) estimates the time needed to complete a given task. This data could be used to help us better plan our schedules going forward. This shouldn't be hard to do, since all the data is in the system already. It's just a matter of making the tools to report the data.

Consider Bugzilla

Whatever you do, whatever solution you use, there's no dodging the fact that project management is hard. Hopefully this description of Funcom's Bugzilla system will help you craft a similar system for your team, or inspire you to add functionality to your existing tools. If you're in the market for an extensible, simple to use tool for this purpose, consider Bugzilla. In the hands of someone who knows Perl and SQL, it's a cheap and simple solution.


______________________________________________________

[back to] Introduction


join | contact us | advertise | write | my profile
news | features | companies | jobs | resumes | education | product guide | projects | store



Copyright © 2003 CMP Media LLC

privacy policy
| terms of service