7.2. Bug Tracking ToolsThere are easily a hundred different tools available for tracking bugs. A good place to start if you want to see a list of choices is the Open Directory's Bug Tracking section at http://dmoz.org/Computers/Software/Configuration_Management/Bug_Tracking. Another good location for a list of tools is http://testingfaqs.org/t-track.html. Yet another list of open source bug tracking tools is http://usefulinc.com/edd/notes/IssueTrackers. 7.2.1. SpreadsheetsThe simplest structured way to keep track of a small number of bugs is to use a spreadsheet program, such as Excel or OpenOffice Calc. You could use an ordinary text file or a Wiki, but then it's hard to sort the information. Each row in the spreadsheet is a single bug. Some typical column titles might be Bug Number, Summary, Description, State, Owner, and Priority. Sorting and summarizing by different columns can show the bug counts per person, the highest-priority bugs, and so on. Many spreadsheets will let you restrict the kind of data entered into each fieldfor instance, to make sure that the bug number is unique. The main advantage of this approach is its simplicity. Spreadsheets are commonly available tools and are reasonably well documented. Basic reports are easy enough to produce. Adding a new field to the definition of a bug is as simple as naming another column. However, the disadvantages of this approach are significant. Most of these are the same reasons why people use databases rather than spreadsheets. As a project grows, the first problem that is likely to be encountered is that only one person can modify the spreadsheet at a time. Another problem is that, unlike with a good database, if the machine running the spreadsheet crashes during modification of a bug, then the data can be inconsistent. Also, as the number of bugs in the spreadsheet grows into the thousands, the time taken for the different reports can grow significantly. Using a spreadsheet to keep track of bugs should be viewed as a temporary measure, one that will not scale as a project grows. There are many simple, low-cost bug tracking tools available that will scale better than a spreadsheet. Still, a spreadsheet is better than an email folder of reports of possible bugs or a wall full of Post-it notes, but not by much. 7.2.2. Different Server TechnologiesThere are many bug tracking systems to choose fromperhaps more than all the available SCM tools and build tools combined. Most of these tools meet a fair number of the requirements and goals for a bug tracking system that were listed in Section 7.1, earlier in this chapter. So how to choose tools for evaluation? Some tools are easy to reject because they're no longer actively developedwhen was their last real release? A useful reference for checking up on this is Danny Faught's Boneyard page (http://www.testingfaqs.org/boneyard.html), which is a list of many corporate changes and dead products in this area. Other tools are easy to reject because you can't justify their cost for the project at hand. Between these two extremes there are still hundreds of tools, both commercial and free, all of which have a dozen or so customer sites and a few glowing testimonials. My suggestion is that if you have used one of these tools beforeor even better, if you've administered it and it worked for a similar projectthen use it again if at all possible (and if you still can bear it). That way you'll avoid spending time discovering bugs in a new product. If you are interested in knowing what other people and projects are using, then the next five sections should be helpful to you. The tools in these sections (Bugzilla, GNATS, FogBugz, JIRA, and TestTrack) were chosen because each one is relatively well known and represents a different underlying technology. The different server-side technologies used by each tool are:
7.2.3. BugzillaBugzilla (http://www.bugzilla.org) was one of the first projects to be released by the Mozilla organization. Written entirely in Perl, Bugzilla is licensed under the open source Mozilla Public License. The version described here is 2.18rc3.
Bugzilla has all the basic features that you would expect from any bug tracking system, and a good number of more advanced ones. Interaction is via a web browser, and notification is by email. Configuration is done by modifying Perl source files, so the local source of Bugzilla can (and should) be versioned with an SCM tool. Other features include the following:
The list of projects and companies that use Bugzilla is impressive and includes some of the largest open source projects. The Apache web server, the Linux kernel, and gcc all have thousands of bugs recorded in their Bugzilla systems. There were discussions within Apache about using other bug trackers after Apache's insecurely configured Bugzilla led to the defacing of the main Apache web site, but better security seems to have meant that Bugzilla is still in use there, though some projects are now moving to JIRA. Documentation for Bugzilla is sufficient but improving, and the mailing list and other resources are very active due to the large number of users and system administrators. Consulting is offered from numerous sites all over the world. Another useful page about Bugzilla administration is Byron Jones's http://bugzilla.glob.com.au, especially for Windows servers. References for how to integrate CVS with Bugzilla appear in Section 7.4, later in this chapter. Bugzilla's biggest strength is that it is open source. If you are comfortable with Perl and the Perl ways of doing things, then customization is possible. However, because Bugzilla has grown organically, some of the interfaces are not defined clearly enough to make it easy to maintain your modifications as new versions are released. Also, modifying the workflow by adding new states is not easy at all. That said, the many features that already exist in the newer versions of Bugzilla may well be complete enough so that only minor customizations are necessary for your project. Another approach is to purchase a server already configured with Bugzillafor example, from Bugopolis (http://www.bugopolis.com)or to use a Bugzilla hosting service such as BugHost (http://www.bughost.com). Bugzilla was developed for Unix-based web servers and has only recently begun to support Windows as a server platform. Likewise, it was written to use MySQL as the underlying database and has only recently begun to support other databases (PostgreSQL is one). Documentation of the database schema is sparse. In general, configuration of Bugzilla is still quite complex, even if you are comfortable with Perl and Unix. Bugzilla is the most popular open source bug tracking tool available. It's used by a large number of projects and companies and does provide a wide range of features after careful installation and configuration, preferably by someone who is comfortable with Perl. One area still under careful scrutiny is security (http://www.bugzilla.org/security), so make sure you read all the documentation when using it on a public server. 7.2.4. GNATSGNATS (http://www.gnu.org/software/gnats) is a bug tracking system from the Free Software Foundation and is licensed under the GPL.[1] It's written mainly in C and shell scripts, and has a long history of extensive customizations by each project that has used it. All interaction with GNATS was originally by Unix shell commands and email, but other interfaces also exist. There is a Web interface (Gnatsweb), an Emacs mode, and a GUI written in Tcl/Tk (TkGnats) that runs on Unix and some older versions of Windows. The source's contrib directory also contains a web interface for administering GNATS itself, which is particularly useful since GNATS comes with a fair number of different configuration files.
GNATS is really intended for use on Unix machines, though the Tcl/Tk, email, and web interfaces do allow it to be used from Windows machines. Releases prior to 4.0 used text files to store the data. Release 4.0 changed the data format to a binary one. By default, the states for bugs are:
Large projects and organizations that use GNATS as their bug tracking tool include Juniper Networks and FreeBSD (http://www.freebsd.org/support.html). It was also used by the Apache community until March 2002, when it was replaced with Bugzilla. GCC has also moved from GNATS to Bugzilla. Documentation for GNATS exists and mostly is correct, though not extensive. Reading the source really is the final documentation for GNATS. The mailing lists are all fairly lowvolume as of early 2005. GNATS interacts with the lowest common denominators of open source projects: email and browsers. It even works with text-based browsers, such as Lynx. Since many of the fields are simple text, regular expression queries work well. The latest version has made adding new fields easier and supports using separate database instances (for use by different projects, for example). While GNATS does have an audit trail that can be configured to show the changes in different fields, this is not searchable by default. There is no explicit audit trail for changes to the configuration of the tool itself. Generating historical reports is complicated, though FreeBSD does have some Tcl scripts available to help do this. GNATS is a project that seems to have grown by fits and starts, as each project using it fed their changes back into the GNATS source code. Even though Version 4.0 removed many of the valid concerns about the speed and index-corruption bugs of earlier versions, a number of projects had already stopped using GNATS, usually changing to Bugzilla, the other open source bug tracking system. Still, GNATS seems adequate for most projects and can be extended in many different ways without too much difficulty. If you like your tools to be Unix-based with a terse command line or to be purely email-oriented, GNATS may be worth further investigation. 7.2.5. FogBugzFogBugz, from Fog Creek Software (http://www.fogcreek.com/FogBUGZ), was designed by Joel Spolsky, who also writes thought-provoking articles on development environments at http://www.joelonsoftware.com. Interaction with FogBugz is by web browser or email, and it uses the PHP scripting language and a web server (Apache or IIS) to interact with a database. FogBugz is licensed commercially but is released with source code for modification by system administrators. The cost is approximately $100 per user, with support wittily priced at five cents per day (which works out to be $18.25 per year, in case you were wondering) but available only in blocks of a year. The whole design of FogBugz places a priority on usability over functionality. What this means in practice is that FogBugz is really easy for users to learn and will do 80% of what other, more complicated bug tracking tools will do. Adding new users and changing their preferences is straightforward. Changing the text used as labels for different fields is easy enough, since the PHP files are available. Adding a simple text field is apparently possible but not encouraged, since it leads to too many choices, which discourages people from entering bugs. Adding more complex fields that increase choices, or changing fields' default values or the interactions between fields, is definitely not recommended. Limiting a tool's functionality takes some confidence in these days of bloated software. The following quote from the FogBugz web site demonstrates this confidence:
Of course, you can still write SQL queries to produce any report you wish for, but FogBugz isn't going to make it easy for you to do so. The different platforms supported for FogBugz servers are Windows, GNU/Linux, FreeBSD, and Mac OS X. Required software for Windows are some data access libraries and the Microsoft Jet, Microsoft SQL Server, or MySQL databases. Unix versions require Apache, MySQL, and PHP. Another alternative is to pay Fog Creek to host a FogBugz instance for you on one of its servers. Documentation for FogBugz is clear, and the discussion groups are lively and mostly helpful. Support response is apparently excellent. There is one book about FogBugz so far: Painless Project Management with Fogbugz, by Mike Gunderloy (Apress). Features of FogBugz beyond those usually found in simple bug tracking systems include the following:
FogBugz provides robust and easy-to-use bug tracking, but by design does not have some common features. Whether these matter for your project is up to you to decide:
FogBugz does a few things and does them well. It's simple to learn, doesn't scare customers away from submitting bugs, and is well supported. If this is enough for your project, then its very reasonable pricing may make it just what you want. 7.2.6. JIRAJIRA (http://www.atlassian.com/software/jira) is a Java servlet-based bug tracking tool from Atlassian Software Systems. Interaction is by web browser or email. JIRA is licensed commercially, but the source code is also distributed to commerical users. Prices for commercial use range from $1,200 for the standard edition to $4,800 for the enterprise edition. Academic prices are half the commercial prices; open source and nonprofit use is free. These prices are one-off, per server; they include upgrades and a year's support. Version 3.0.2 was the version tested here. JIRA provides a wide range of features, lets you change them in a number of ways, and then finally encourages you extend JIRA itself and integrate it with other tools. It is clearly very carefully designed to be easy to use. Administration is all performed through the web interface. Just as Bugzilla finds favor with system administrators who use Perl, JIRA fits well with system administrators who are already working with projects that use Java. For example, the build tool used for JIRA is Ant (see Section 5.5.4). Features beyond those usually found in simple bug tracking systems include the following:
The requirements for JIRA are relatively platform independent. For the standalone version, only Java is required, since a pure-Java database and web server are provided. When the bug tracking system needs to grow larger, JIRA works with numerous versions of the OrionServer, Resin, Tomcat, JBoss, Weblogic, Jetty, and Oracle OC4J application servers.[2] The different databases that are supported include Oracle, DB2, MySQL, PostgreSQL, and Sybase. The web pages are said to work with Internet Explorer 5 and 6, Mozilla, Firefox, Opera, and Safari, and they work well with Opera 8.0 for me.
The user and administration documentation for JIRA is excellent, as is the documentation for how to modify it. The support is "legendary," and actually does have a rather good record. One of the reasons for this is that the project information for JIRA itself is publicly available at http://jira.atlassian.com. JIRA's list of customers is extensive and growing rapidly. Features that aren't yet in JIRA that you might want are:
JIRA is a good example of a highly configurable bug tracking system that also works well by default. Entering bugs is simple, but all the abilities for integration and fine-level control are also provided and documented. JIRA is particularly easy to install for a small-scale standalone server. JIRA is a great choice for projects and organizations that want to be able to customize their bug tracking tool more than is permitted by tools such as FogBugz. 7.2.7. TestTrackTestTrack (http://www.seapine.com/ttpro.html) is a commercial bug tracking system from Seapine Software, Inc. Pricing for TestTrack Pro begins at $295.00 for an individual license or $795 for a floating license that everyone in a project can use. Support typically costs 20% of the purchase price per year. The version tested here was TestTrack Pro 7.0. Seapine also sells Surround SCM, an SCM tool that integrates well with TestTrack. TestTrack is highly customizable, but system administrators don't have to see the underlying details of the database to make the changes. Servers are available for Windows (in English and French), GNU/Linux, Solaris, and Mac OS X. The client is available only for Windows, though a Perl API is provided for remote access. Other platforms connect to the servers by using a browser. The backend database can be the default proprietary one (xBase), Oracle (natively for speed), or any other database with an ODBC connector. Features beyond those usually found in simple bug tracking systems include the following:
The list of customers who use TestTrack is in the hundreds, with some good-sized companies listed. Seapine's documentation has received awards from a number of technical documentation societies, and TestTrack has also won Jolt awards from Software Development magazine. There is a moderated discussion site for TestTrack; it has lots of messages, but also plenty of unanswered questions. Some of the drawbacks of TestTrack are:
Two other aspects of TestTrack struck me as unusual, though they're not really problems:
TestTrack is a flexible and reasonably powerful bug tracking system that is not too hard to administer. It's especially attractive if you can use the Windows client, which feels faster than any of the web-based clients. 7.2.8. Custom Bug Tracking ToolsWhen you're frustrated with a particular tool, sometimes it's tempting to oversimplify what the tool involves. For example: SCM is really just copying some files to a safe place; build tools really just run a series of commands; and bug tracking tools are really just a frontend to a database. Don't let yourself be deceived by this shallow thinking! One reason why there are so many bug tracking tools available is that lots of other people thought along these lines, and their tools really are just frontends to databases. These are not the tools you're looking for. The requirements for a bug tracking tool that are listed in Section 7.1, earlier in this chapter, are much harder to achieve. If you feel you have tried all the different tools you can, and none of them do what you want, then why not modify one of the more substantial open source ones? |