バグ追跡システムまたは欠陥追跡システムとは、ソフトウェア開発プロジェクトで報告されたソフトウェアのバグを追跡するソフトウェアアプリケーションです。これは、課題追跡システムの一種とみなすことができます。
多くのバグ追跡システム(ほとんどのオープンソースソフトウェアプロジェクトで使用されているものなど)では、エンドユーザーがバグレポートを直接入力できます。[ 1 ]他のシステムは、ソフトウェア開発を行っている企業や組織の内部でのみ使用されます。通常、バグ追跡システムは他のプロジェクト管理ソフトウェアと統合されています。
バグ追跡システムは通常、プロフェッショナルなソフトウェア開発インフラストラクチャの必須コンポーネントであり、バグまたは問題追跡システムを一貫して使用することは、「優れたソフトウェアチームの特徴」の1つと考えられています。[ 2 ]
バグ追跡システムの主要な構成要素は、既知のバグに関する事実を記録するデータベースです。事実には、バグが報告された時間、その深刻度、誤ったプログラム動作、バグを再現する方法の詳細、報告した人物の身元、および修正に取り組んでいるプログラマーなどが含まれます。[ 3 ]
一般的なバグ追跡システムは、バグに割り当てられたステータスを通じて追跡されるバグのライフサイクルという概念をサポートしています。バグ追跡システムでは、管理者がステータスに基づいて権限を設定したり、バグを別のステータスに移動したり、バグを削除したりできるようにする必要があります。また、バグのステータスを設定したり、特定のステータスにあるバグをどの程度移動できるかを設定したりできるようにする必要があります。一部のシステムでは、新しいレコードが追加されたりステータスが変更されたりした際に、提出者や担当プログラマーなどの関係者に電子メールで通知します。
バグ追跡システムの主な利点は、開発要求(バグと改善の両方を含み、その境界は曖昧な場合が多い)とその状態を、明確かつ一元的に把握できることです。優先順位付けされた保留項目リスト(バックログと呼ばれることが多い)は、製品ロードマップ、あるいは単に「次のリリース」を定義する際に貴重な情報源となります。
企業環境において、バグ追跡システムは、プログラマーのバグ修正生産性に関するレポートを作成するために使用されることがあります。しかし、バグの種類によって深刻度や複雑さが異なるため、このシステムは時に不正確な結果をもたらす可能性があります。バグの深刻度は、バグ修正の複雑さと直接的に関連しているとは限りません。また、管理者とアーキテクトの間で意見の相違が生じる可能性もあります。
ローカルバグトラッカー(LBT)とは、通常、アプリケーションサポート担当者(多くの場合ヘルプデスク)のチームが、ソフトウェア開発者に伝えられた問題を追跡するために使用するコンピュータプログラムです。LBTを使用することで、サポート担当者は開発者の専門用語ではなく、自分たちの専門用語でバグを追跡できます。さらに、LBTを使用すると、サポート担当者は苦情を申し立てたユーザーに関する特定の情報を追跡できます。この情報は、実際の開発キューでは必ずしも必要ではありません。したがって、LBTが導入されている場合、2つの追跡システムが存在することになります。
バグおよび課題追跡システムは、統合プロジェクト管理システムの一部として導入されることが多い。このアプローチにより、バグの追跡と修正を一般的な製品開発プロセスに組み込み、複数の製品バージョンにわたるバグ修正、製品ナレッジベースおよびリリースノートの自動生成が可能になる。
バグトラッカーの中には、分散型リビジョン管理ソフトウェアと連携して使用できるように設計されているものもあります。これらの分散型バグトラッカーを使用すると、開発者がオフラインのときでも、バグレポートを簡単に読み取ったり、データベースに追加したり、更新したりできます。[ 4 ] FossilとVeracityはどちらも分散型バグトラッカーを備えています。
最近では、商用バグ追跡システムも分散バージョン管理との統合を開始している。 例えば、 FogBugz はソース管理ツール Kiln を介してこの機能を実現している。[ 5 ]
wikiとバグ追跡システムは従来、異なる種類のソフトウェアと見なされてきましたが、 ikiwikiは分散型バグトラッカーとしても使用できます。統合された分散方式でドキュメントとコードを管理することもできます。ただし、クエリ機能は、Bugzillaなどの他の非分散型バグトラッカーほど高度ではなく、ユーザーフレンドリーではありません。[ 6 ] org-modeについても同様のことが言えますが、これはwikiソフトウェアではありません。
HP Quality CenterやIBM Rational Quality Managerといった従来のテスト管理ツールには独自のバグ追跡システムが付属しているが、他のツールは一般的なバグ追跡システムと統合できる。