Bug Tracking
I don't know of any really good bug tracking packages for .NET. There is FogBugz (which I would like to use), but it isn't .NET based, so it is out of the picture for our projects which are generally 100% managed code.
Today, I started working on a bug tracking module for us to use in our ongoing projects. The basic idea is pretty simple, regardless of the amount of testing you do, your code will probably have a few bugs when it hits production (or, beta if you pre-release your products). You want to resolve these bugs before your customers notice them. So, how do we go about doing this?
Well, the first step is really easy, you catch all the unhandled exceptions in your app and redirect them to the bug tracking system. In an ASP.NET app, the code goes something like this:
protected void Application_Error(object sender, EventArgs e)
{
bugTracker.SubmitBugReport(new BugReport(ex.InnerException, User.Identity.Name, Request.RawUrl));
}
One little line of code is all it takes. Behind the scenes, the bug report is checked against a list of known bugs and appropriate events are fired depending on if the bug is a new bug, an existing bug, or even if an existing bug that you thought was resolved has been reopened. This allows us to process only the bug reports we want to deal with. After all, if you are heavily using a site (especially during dev), you don't want to send out an email, or do whatever it is you do for notification, every time an already known exception gets fired, you only want to know about new bugs as well as bugs you thought you resolved that aren't actually resolved.
The system also allows swapable bug reporting components, so we can actually integrate it with a third party tool like FogBugz if we really wanted to, or send bug reports back to our servers via a webservice and provide resolution information to the client if the bug has already been resolved.
We log the user that experienced the error allong with the url that caused the error, which allows for some great scenarios. One of the guys here was involved on one of those high dollar e-waste-of-money.com projects. The idea behind their system was flawed to begin with (IMO), but they did have a very cool customer support feature. They logged errors in a similar fashion and by examining the logs in real time, so they could tell if a customer was having problems using the site. When a customer was experiencing difficulting, they had live support teams on hand to contact that customer and resolve any issues they were encountering. Their customers loved the feature and where always pleasantly suprised that the company actually cared enough about them to give them a call.