web-dev-qa-db-ja.com

開発者はバグ追跡システムにバグを入力する必要がありますか?

開発中(機能またはバグ修正)、たまに、自分が取り組んでいることに直接関連しないバグを発見することがあります。そのような状況ではどうすればよいですか。修正するだけですか?後で修正することを忘れないでください。どこかに書き留めますか?または、バグ追跡システムに入力しますか?

私は通常、それをバグ追跡システムに入力し、プロセスを実行させます(つまり、トリアージ、割り当てなど)。ただし、他の開発者がバグを入力することはほとんどありません。 (何故ですか?)

79
JoelFan

バグを発見した場合、修正するかどうかに関係なく、バグ追跡システムに入力する理由notは考えられません。結局のところ、それがバグ追跡システムの目的です。

場合によっては、システムの処理経験が豊富なQA担当者に報告する方が理にかなっていますが、いずれにせよ、バグを追跡する必要があります。

開発者がバグを入力してはならない理由が正当であるかどうかにかかわらず、ある可能性があります。考えられる理由の1つは、バグ追跡システムが部外者に見えるため、報告されたバグが多すぎると見栄えが悪いことです。これは非常に悪い理由です。バグを追跡できる他の方法で対処する必要があります。上司にお尋ねください。

(もちろん、まだ作業中のコードにバグがあり、リリースされたものに表示されない場合は、システムで追跡する必要はありませんが、ソースコードのTODOコメントは極端な場合を考えると、「このコードは、この行の最後にセミコロンをまだ入力していないため、コンパイルできません」とは、報告可能なバグではありません。

他の開発者がバグを入力しない理由については、あなたはそれらを尋ねる必要があります。彼らはおそらくそうすべきです。

119
Keith Thompson

どちらの場合も、バグ追跡システムにバグを入力する必要があります。

  • バグが作業中のコードに直接関係する場合

  • バグが、現在作業していないコードまたは別の開発者が作業している部分に関係している場合。

バグ追跡システムは...バグを追跡するように作られているため、これは不可欠です。すべてのバグ。何か問題を発見した場合は、修正するだけではありません。バグ追跡システムを通じてそれを文書化します。後で、以前のバージョンのソフトウェアを実行している顧客が完全に重複するバグを報告する場合、それをレポートにリンクすることができます。リンクするものが何もない場合は、以前のリビジョンのバグを検索する時間(または同僚)を無駄にして、それを解決しようとすると、最終的にバグがすでに魔法のように解決されていることがわかります。

これは、フリーランサーがバージョン管理とバグ追跡システムの両方を使用しなければならない理由も説明しています。これらの2つのツールはチームだけのものではありません。

23

欠陥を欠陥追跡システムに入力しない正当な理由はありません。追跡なしで適用されたバグ修正を見た唯一の場所は、プロセスが根本的に壊れたためです。この場合は、プロセスを修正してください。

入力しない理由は次のとおりです。

  • プロセスは欠陥の報告に基づいて測定し、罰します-報告しないでください、罰せられません。この場合、組織を離れます
  • プロセスは負担です-欠陥を入力してそれを修正するポイントに到達するには、非常に多くの労力と時間がかかります。開発者がトリアージ/受け入れ/修正プロセスを通じて軽量のバグを迅速に追跡できるように、プロセスを変更する必要があります。
  • 一部の開発者は、怠惰/ずさんな/ハッカーであり、他の開発者が他の人に及ぼす影響が何であるかを気にしません。プロの開発者を募集します。
  • 私は一人のバンドです。要点はわかりません。 2人のバンドのために仕事に行くと、あなたは….
18
mattnz

すぐにバグを修正することはおそらく悪い考えです。まず、他の誰かが同じ修正に取り組んでいる可能性があり、その結果、作業が重複します。また、フォローしている開発方法論によっては、次に取り組むべき作業を優先する(バグの修正または新しい機能の実装)のは、管理決定、そして開発決定。

14
Daniel Serodio

決定は明確なものではなく、トレードオフを伴います。

((一部)PROS

バグ追跡は、特に大規模なチームでのコミュニケーションに不可欠です。コードを複数の目で見ることの最大の利点の1つは、問題を早期に検出できることです。開発中にバグがログに記録または追跡されない場合、その利点は失われます。

  • 多くの場合、すでにコードの一部にいて、それを理解しようとしているときに、バグは最も簡単に修正されます。
  • 小規模なチームであっても、バグを一覧表示し、バグの修正を進めることができることで、士気を上げるには多くのメリットがあります。たった1人のプロジェクトであっても、士気のメリットが重要になる場合があります。
  • 正確なバグ検出は、事後に非常に困難になる可能性があります-コード内のバグを確認することで、後で問題が発生した場所を突き止めようとして、探偵を演じる多くの作業を節約できます。
  • 開発者としてのあなたの一般的な開発にとって、バグを見つけたら注意を払い、コードの改善/クリーンアップ/読み取りを批判的に行うことは良いことです。

一般に、バグを見つけたときにログを取ることは良い習慣です。

((some)CONS

バグ追跡システムにバグを入力することは面倒で時間がかかる可能性があり、開発作業を本当に混乱させる可能性があります-多くの場合、大規模なチームで作業する場合はそうです。次のことが期待できます。

  • 入力する前に、エントリが重複していないか確認してください(これは暗黙の可能性もあります。バグをキューに入れてクローズすることはお勧めしません)。
  • レポートに繰り返し可能なテストケースを提供する
  • バグの詳細についての質問で中断を受け入れ、書かれた修正を受け入れ/検証する
  • 最も影響を受ける可能性が高い製品、バグの優先度など、バグ追跡システムで頻繁に収集される無関係な情報について考えます。

時々バグ追跡はあなたの時間の最も効率的な使用ではありません。


これらは、バランスを取るのが難しい2つの一般的な原則です。優れた戦略を見つけることは、ちょっとした芸術です。このような状況では、特定のプロジェクト、チーム、作業環境、および一般的なスキルに応じて、必要に応じて微調整する柔軟なヒューリスティックを採用するのが最善だと思います。私の戦略は通常、次のようなパターンに従います。

  • 問題を1日中どこかで見たときに、常にログに記録します。多分ねばねばしたり、ファイルの横に置いたりします。ログに記録されるのはファイル名と行番号だけかもしれません。問題があなたの現在の考え方をあまり妨げないようにしてください。
  • 付箋を処理するために、仕事のウォームアップの一環として、新しい各就業日の初めに時間を取ってください。私は前日から検出された問題のリストを確認するのに10〜15分かかり、次のいずれかが最も迅速です。

    • 問題を修正してコミットします(おそらく1つのライナーの修正またはタイプミスの場合)。バグレポートなしでコミットすることが許可されていない場合は、小さなコミット用のサイドプロジェクトを作成してください。サイドプロジェクトに十分な修正が蓄積されたら、それらを文書化してコミットするのに必要な数時間かかります。
    • バグ追跡システムに問題を記録します(修正に時間がかかりますが、煩わしいオーバーヘッドはありません)。
    • 「ビジーでないときに確認する」ドキュメントに問題を記録します(通常、「// TODO-これは壊れているように見えますが、修正する」タイプのコメントをソースに追加します)。定期的にリスト(1か月に1回)を1日かけてリストを確認し、必要に応じて記録します-機能のリクエスト、バグレポート、マネージャーとの話し合いなど...

時が経つにつれ、あらゆる種類の調整が有用であることがわかりました。例えば:

  • より厳格な環境では、バグ報告作業をテストチームに任せます-テスターに​​時々1時間会ってもらい、問題のリストを渡して、ロギングを依頼します。ロギングテストが重要な環境では、通常、テスターは生産性を無料で向上させて喜んでいます。
  • 一部のチームは、背後に顧客のバグレポートがない修正を許可しません。私はプロジェクトを修正で一杯にしておき、関連する問題がクライアントから報告されたらすぐに無料でブラウニーポイントをコミットします。
  • 一部のチームでは、コードのチャンクを「所有」している人が修正を実行する人である必要があります。私はコードの「所有者」をテストリードのように扱い、非公式に会って問題を時々引き渡します

一般的に、このタイプの戦略に従うと、同僚や他の会社のメンバーのますます多くがあなたの仕事を尊重し始め、品質への取り組みを始めます。十分な時間が経過すると、プロセス全体を好みに合わせて最適化するために必要な尊敬と権限が与えられます。そのような機会に目を光らせ、必要に応じてそれらをとってください。

12
blueberryfields

開発者が自分の作業に関係のないバグに遭遇し、修正されない場合は、someの記録を得るためだけにシステムに入力する必要があると思います。そうすることで、QAがテストを開始したときに(まだ修正されていない場合)、このリストのバグを「既知の欠陥」として提供し、同じバグの報告を開始しないようにすることができます。

おそらく、バグを見つけた他の開発者は、それを修正する予定であれば、自分で追跡しますが、その場合、2人の開発者が同じバグを個別に見つけて修正するリスクがあります。

バグが既に修正されていても(Issue Trackerに記録する前に発生してはならないはずですが)、追跡することをお勧めします。

このようにして、問題が将来再び発生する場合(回帰が発生します!)、問題は「すでに対処済み」であると認識し、最初に修正された方法を読むのは比較的簡単です。

2
fdierre

何故ですか?ほとんどの開発者は、提起しなければならない問題と作成しなければならないコードを見て、気にしない方が簡単だと考えているためです。

しかし、それが正しいことかどうかは、プロセスによって異なります。 QAチームはいますか?追跡されないコードを変更するだけでも構わないと思いますか?コードレビューはどうですか?その亀裂でスキップしますか?ビジネスはどうですか?後で同じバグが発生しないように、バグを修正したことを知っている必要がありますか?

他の開発者はどうですか?彼らが同時に別の方法で修正した場合はどうなりますか?彼らが後で同様のバグを見つけ、あなたができることは、「ああ、いまいましい、私たちは以前にこのようなものを持っていることを知っています-今それは何でしたか?」

バグ追跡システムにバグを記録する理由は約100万あります。あなたがこれらの問題のどれにも該当しないと確信しているなら、ぜひとも、気にしないでください。しかし、もしあなたがまったくわからない場合は、ほとんどの人が知らない場合でも、それを記録する必要があります。

1
pdr

もちろん入力してください。または、それが通常のプロセスであれば、少なくともQA担当者に報告してください。

自分でバグを修正するだけでも、変更を記録してテストを行い、修正が実際に機能し、回帰が発生していないことを確認できます。ユーザーがいつかバグを報告する可能性もあり、それがシステム内にあり、修正済みとマークされている場合、サポート担当者はすでに対処済みであることを伝えることができます。

1
GrandmasterB

プログラミングは基本的に複雑な作業です。バグは複雑です。だから私は2つの要因でバグを評価するために使用しました:

  1. そのような種類のバグが将来どのくらいの頻度で再発する可能性がありますか?この見積もりが正確であるかどうかにかかわらず、見積もりを続けます。
  2. そんなバグがまた現れると、わかりやすいですか?このバグを分析して修正すると、これは正確です。

バグを次のいずれかのタイプに分類します。

  1. 今後また登場する可能性が高く、わかりやすい
  2. 将来また登場する可能性が高いが、理解しにくい
  3. 今後もめったに出現せず、わかりやすい
  4. 今後はめったに出現しないが、わかりにくい

ケース1では、クックブックまたはFAQは、チームが将来このようなバグを修正するのに適したデバイスです。

ケース2では、別のプログラマーがそのようなバグに再度耐えるのは労力の浪費であるため、精巧で理解しやすい記録がチームにとって必要です。例:メモリリーク。

ケース3では、簡単なバグを修正するのにあまり時間をかけないため、記録に残されたものがないことは大したことではないと思います。たとえば、HTMLの要素のIDのタイプミス。

ケース4では、そのようなバグがジレンマを引き起こします。そのようなバグを説明するための精巧で理解しやすい記録を書くには、少し時間が必要です。ただし、このレコードが将来使用されることはほとんどありません。しかし、記録がなければ、そのようなバグの出現は再び苦労するでしょう。たとえば、そのようなバグは誰かのコンピュータのコンピュータウイルスが原因で発生します。

1
Mike Lue

何かを見たら、何か言ってください!

現在のタスクを中断したくないので、自分のモジュールに関するバグレポートも入力します。そして、私は再現するすべてのステップが含まれていることを確認できます:-)

そして、あなたが何かを既知のバグとしてリストしたことを他の誰かが見ることができるなら、それはさらに良いです。彼らは他の誰かがそれを見つけたことも知りたいです。

0
jqa

実際、それらをシステムに記録する必要があり、それが実践されていない場合は、最初から開始することをお勧めします。

私は以前、製品チームの一員でしたが、私たちは新製品のベータリリースを行っていました。時々、その時点で、モジュールを扱う各担当者にメモをとってメールで送信するバグを発見しました(バグ追跡システムですが、そこにプッシュすることは考えていませんでした)。後日、メールのアイテムが過ぎ去ったとき、他の優先事項のために無視され始め、最終的にいくつかの眠れない夜につながりました。

その後、ある日、強打します、ニルヴァーナ!バグのように思われ、それではない可能性がある場合でも、バグトラッカーを使用しないのはなぜですか(プロセスについてのあなたの考えが間違っているか、欠陥があります)。それは少なくともリストで構成され、次にテストすることができますすべての中で最も重要なぜそれが重要であるか、または裏側でそれが完璧であるかについてのフィードバックであり、それが理由により動作する方法です1 ... 2 ....

これでリストができました。また、アプリケーションの一部を誤解している人のために、彼らは彼らの考えを明確にすることができるフィードバックに基づいています。双方に有利な状況。

0
V4Vendetta

これは、ベストプラクティスについての質問というより、政治的な質問の方が多いと思います。

  • バグエントリはsombodyを非難しますか?
  • 顧客がバグのエントリを読んで、追加のエラーがあることを確認できます。これはあなたの会社の評判の問題ですか?
  • これは本当にあなたが気づいていないバグまたは機能ですか?
  • バグ修正は誰が支払うのですか?

私の考えでは、重要でないバグをトラッカーシステムに追加することは良い習慣ですが、管理者はこれに対処する方法を決定する必要があります。

自明でない場合は、誰かに相談して問題を修正しないでください。

  • これは本当にバグであり、機能ではありません
  • 他のsombodyは修正をテストし、修正が新しいバグを導入しないことを確認することができます(回帰)
0
k3b

すでにテスト済み(特にリリースされている場合)のコードを完全に想定しています。

これにはいくつかの理由があります。

メモリ-システムがバグを忘れる可能性は非常に低いです。

Metrics-見つかったバグ、クローズされたバグの数、およびかかった時間は、コードの品質がどのように進んでいるかを示す、キャプチャしやすい優れたメトリックです

緊急度-開発者にとって、これは世界で最も重要なことのように思われるかもしれませんが、この問題の修正に費やされる時間は、エンドユーザーが最初に望むものに費やすほうがよい場合があります(メモリも参照)。

複製-多分それはすでに発見されており、他の誰かによって調査/修正中です。あるいは、緊急ルールに違反して延期されたのかもしれません。もちろん、あなたがそれを再び見つけたという事実は、それが実行されるべきではないということを意味するだけでなく、それは(それが次々と出現するので)修正することがより緊急であるということを意味するかもしれません。

根本原因の分析-修正が最も簡単なバグは、これまでになかったものです。チームがこのバグを調べて、それがどのようになったかを調べる必要があるかもしれません。これは、責任のある人(決して役に立たない人)を罰するのではなく、将来状況を回避する方法を見つけるための決定的な方法です。

より大きな影響分析-findの最も安価なバグは、発見する前に知っていたバグです。このバグを見ると(特に根本原因分析を行った後)、この問題がコードの他の場所に存在している可能性があることがすぐに明らかになる場合があります。その結果、チームは、恥ずかしい瞬間に醜い頭を上げる前に、それを見つけに行くことを選択できます。

これらに費やされる時間(ある場合)は、コードの成熟度と品質レベルに大きく依存します。根本原因の分析は、デモンストレーションコードに取り組んでいる小さなチームにとってはやり過ぎになる可能性がありますが、ビジネスクリティカルな開発を行う大規模なチームは、レッスンを効果的かつ効率的に学習する必要があります。

経験上、開発者がツールの使用を避けている理由は2つあります。

  1. バグ処理ツールまたはプロセス、あるいはその両方は、開発には重すぎると見なされます
  2. 開発者は、バグの修正という精神的な課題が、現在取り組んでいるものよりも興味深いと感じています。

項目1は、より良い/より単純なシステムが必要になる可能性があることを示しています。あるいは、既存のシステムのより説得力のある正当化が適切かもしれません。

項目2は、現在のタスク割り当てに関する開発リーダーへの有用な警告サインでなければなりません。

0
Gavin H

私はほとんどFrustratedWithFormsDesignに同意しますが、問題全体を2つの領域に分類するとさらに明確になると思います。

  • バグ報告。
  • バグ修正。

これらはしばしば同じものとして扱われ、それらを分離することはほぼ間違いなく多くの助けになります。

これらは次の方法で処理できます:バグ報告:-みんなが言うように、システムに入れてください。

バグ修正:-毎週または2週間(開発スケジュールに合わせて調整など)誰もがプロジェクトに参加し、何を修正するか、誰が修正するかを決定します。終わり。アジャイル開発では、これはスプリント計画会議です。

人々が使用する優れたツールwantも大きな違いを生みます。私はPivotal Trackerが好きで、自分のプライベートプロジェクトでやりたいことや修正したいことを追跡するためだけに使い始めたとき、「本当に便利なツール」テストに合格しました。

0
junky