開発中(機能またはバグ修正)、たまに、自分が取り組んでいることに直接関連しないバグを発見することがあります。そのような状況ではどうすればよいですか。修正するだけですか?後で修正することを忘れないでください。どこかに書き留めますか?または、バグ追跡システムに入力しますか?
私は通常、それをバグ追跡システムに入力し、プロセスを実行させます(つまり、トリアージ、割り当てなど)。ただし、他の開発者がバグを入力することはほとんどありません。 (何故ですか?)
バグを発見した場合、修正するかどうかに関係なく、バグ追跡システムに入力する理由notは考えられません。結局のところ、それがバグ追跡システムの目的です。
場合によっては、システムの処理経験が豊富なQA担当者に報告する方が理にかなっていますが、いずれにせよ、バグを追跡する必要があります。
開発者がバグを入力してはならない理由が正当であるかどうかにかかわらず、ある可能性があります。考えられる理由の1つは、バグ追跡システムが部外者に見えるため、報告されたバグが多すぎると見栄えが悪いことです。これは非常に悪い理由です。バグを追跡できる他の方法で対処する必要があります。上司にお尋ねください。
(もちろん、まだ作業中のコードにバグがあり、リリースされたものに表示されない場合は、システムで追跡する必要はありませんが、ソースコードのTODOコメントは極端な場合を考えると、「このコードは、この行の最後にセミコロンをまだ入力していないため、コンパイルできません」とは、報告可能なバグではありません。
他の開発者がバグを入力しない理由については、あなたはそれらを尋ねる必要があります。彼らはおそらくそうすべきです。
どちらの場合も、バグ追跡システムにバグを入力する必要があります。
バグが作業中のコードに直接関係する場合
バグが、現在作業していないコードまたは別の開発者が作業している部分に関係している場合。
バグ追跡システムは...バグを追跡するように作られているため、これは不可欠です。すべてのバグ。何か問題を発見した場合は、修正するだけではありません。バグ追跡システムを通じてそれを文書化します。後で、以前のバージョンのソフトウェアを実行している顧客が完全に重複するバグを報告する場合、それをレポートにリンクすることができます。リンクするものが何もない場合は、以前のリビジョンのバグを検索する時間(または同僚)を無駄にして、それを解決しようとすると、最終的にバグがすでに魔法のように解決されていることがわかります。
これは、フリーランサーがバージョン管理とバグ追跡システムの両方を使用しなければならない理由も説明しています。これらの2つのツールはチームだけのものではありません。
欠陥を欠陥追跡システムに入力しない正当な理由はありません。追跡なしで適用されたバグ修正を見た唯一の場所は、プロセスが根本的に壊れたためです。この場合は、プロセスを修正してください。
入力しない理由は次のとおりです。
すぐにバグを修正することはおそらく悪い考えです。まず、他の誰かが同じ修正に取り組んでいる可能性があり、その結果、作業が重複します。また、フォローしている開発方法論によっては、次に取り組むべき作業を優先する(バグの修正または新しい機能の実装)のは、管理決定、そして開発決定。
決定は明確なものではなく、トレードオフを伴います。
((一部)PROS
バグ追跡は、特に大規模なチームでのコミュニケーションに不可欠です。コードを複数の目で見ることの最大の利点の1つは、問題を早期に検出できることです。開発中にバグがログに記録または追跡されない場合、その利点は失われます。
一般に、バグを見つけたときにログを取ることは良い習慣です。
((some)CONS
バグ追跡システムにバグを入力することは面倒で時間がかかる可能性があり、開発作業を本当に混乱させる可能性があります-多くの場合、大規模なチームで作業する場合はそうです。次のことが期待できます。
時々バグ追跡はあなたの時間の最も効率的な使用ではありません。
これらは、バランスを取るのが難しい2つの一般的な原則です。優れた戦略を見つけることは、ちょっとした芸術です。このような状況では、特定のプロジェクト、チーム、作業環境、および一般的なスキルに応じて、必要に応じて微調整する柔軟なヒューリスティックを採用するのが最善だと思います。私の戦略は通常、次のようなパターンに従います。
付箋を処理するために、仕事のウォームアップの一環として、新しい各就業日の初めに時間を取ってください。私は前日から検出された問題のリストを確認するのに10〜15分かかり、次のいずれかが最も迅速です。
時が経つにつれ、あらゆる種類の調整が有用であることがわかりました。例えば:
一般的に、このタイプの戦略に従うと、同僚や他の会社のメンバーのますます多くがあなたの仕事を尊重し始め、品質への取り組みを始めます。十分な時間が経過すると、プロセス全体を好みに合わせて最適化するために必要な尊敬と権限が与えられます。そのような機会に目を光らせ、必要に応じてそれらをとってください。
開発者が自分の作業に関係のないバグに遭遇し、修正されない場合は、someの記録を得るためだけにシステムに入力する必要があると思います。そうすることで、QAがテストを開始したときに(まだ修正されていない場合)、このリストのバグを「既知の欠陥」として提供し、同じバグの報告を開始しないようにすることができます。
おそらく、バグを見つけた他の開発者は、それを修正する予定であれば、自分で追跡しますが、その場合、2人の開発者が同じバグを個別に見つけて修正するリスクがあります。
バグが既に修正されていても(Issue Trackerに記録する前に発生してはならないはずですが)、追跡することをお勧めします。
このようにして、問題が将来再び発生する場合(回帰が発生します!)、問題は「すでに対処済み」であると認識し、最初に修正された方法を読むのは比較的簡単です。
何故ですか?ほとんどの開発者は、提起しなければならない問題と作成しなければならないコードを見て、気にしない方が簡単だと考えているためです。
しかし、それが正しいことかどうかは、プロセスによって異なります。 QAチームはいますか?追跡されないコードを変更するだけでも構わないと思いますか?コードレビューはどうですか?その亀裂でスキップしますか?ビジネスはどうですか?後で同じバグが発生しないように、バグを修正したことを知っている必要がありますか?
他の開発者はどうですか?彼らが同時に別の方法で修正した場合はどうなりますか?彼らが後で同様のバグを見つけ、あなたができることは、「ああ、いまいましい、私たちは以前にこのようなものを持っていることを知っています-今それは何でしたか?」
バグ追跡システムにバグを記録する理由は約100万あります。あなたがこれらの問題のどれにも該当しないと確信しているなら、ぜひとも、気にしないでください。しかし、もしあなたがまったくわからない場合は、ほとんどの人が知らない場合でも、それを記録する必要があります。
もちろん入力してください。または、それが通常のプロセスであれば、少なくともQA担当者に報告してください。
自分でバグを修正するだけでも、変更を記録してテストを行い、修正が実際に機能し、回帰が発生していないことを確認できます。ユーザーがいつかバグを報告する可能性もあり、それがシステム内にあり、修正済みとマークされている場合、サポート担当者はすでに対処済みであることを伝えることができます。
プログラミングは基本的に複雑な作業です。バグは複雑です。だから私は2つの要因でバグを評価するために使用しました:
バグを次のいずれかのタイプに分類します。
ケース1では、クックブックまたはFAQは、チームが将来このようなバグを修正するのに適したデバイスです。
ケース2では、別のプログラマーがそのようなバグに再度耐えるのは労力の浪費であるため、精巧で理解しやすい記録がチームにとって必要です。例:メモリリーク。
ケース3では、簡単なバグを修正するのにあまり時間をかけないため、記録に残されたものがないことは大したことではないと思います。たとえば、HTMLの要素のIDのタイプミス。
ケース4では、そのようなバグがジレンマを引き起こします。そのようなバグを説明するための精巧で理解しやすい記録を書くには、少し時間が必要です。ただし、このレコードが将来使用されることはほとんどありません。しかし、記録がなければ、そのようなバグの出現は再び苦労するでしょう。たとえば、そのようなバグは誰かのコンピュータのコンピュータウイルスが原因で発生します。
何かを見たら、何か言ってください!
現在のタスクを中断したくないので、自分のモジュールに関するバグレポートも入力します。そして、私は再現するすべてのステップが含まれていることを確認できます:-)
そして、あなたが何かを既知のバグとしてリストしたことを他の誰かが見ることができるなら、それはさらに良いです。彼らは他の誰かがそれを見つけたことも知りたいです。
実際、それらをシステムに記録する必要があり、それが実践されていない場合は、最初から開始することをお勧めします。
私は以前、製品チームの一員でしたが、私たちは新製品のベータリリースを行っていました。時々、その時点で、モジュールを扱う各担当者にメモをとってメールで送信するバグを発見しました(バグ追跡システムですが、そこにプッシュすることは考えていませんでした)。後日、メールのアイテムが過ぎ去ったとき、他の優先事項のために無視され始め、最終的にいくつかの眠れない夜につながりました。
その後、ある日、強打します、ニルヴァーナ!バグのように思われ、それではない可能性がある場合でも、バグトラッカーを使用しないのはなぜですか(プロセスについてのあなたの考えが間違っているか、欠陥があります)。それは少なくともリストで構成され、次にテストすることができますすべての中で最も重要なぜそれが重要であるか、または裏側でそれが完璧であるかについてのフィードバックであり、それが理由により動作する方法です1 ... 2 ....
これでリストができました。また、アプリケーションの一部を誤解している人のために、彼らは彼らの考えを明確にすることができるフィードバックに基づいています。双方に有利な状況。
これは、ベストプラクティスについての質問というより、政治的な質問の方が多いと思います。
私の考えでは、重要でないバグをトラッカーシステムに追加することは良い習慣ですが、管理者はこれに対処する方法を決定する必要があります。
自明でない場合は、誰かに相談して問題を修正しないでください。
すでにテスト済み(特にリリースされている場合)のコードを完全に想定しています。
これにはいくつかの理由があります。
メモリ-システムがバグを忘れる可能性は非常に低いです。
Metrics-見つかったバグ、クローズされたバグの数、およびかかった時間は、コードの品質がどのように進んでいるかを示す、キャプチャしやすい優れたメトリックです
緊急度-開発者にとって、これは世界で最も重要なことのように思われるかもしれませんが、この問題の修正に費やされる時間は、エンドユーザーが最初に望むものに費やすほうがよい場合があります(メモリも参照)。
複製-多分それはすでに発見されており、他の誰かによって調査/修正中です。あるいは、緊急ルールに違反して延期されたのかもしれません。もちろん、あなたがそれを再び見つけたという事実は、それが実行されるべきではないということを意味するだけでなく、それは(それが次々と出現するので)修正することがより緊急であるということを意味するかもしれません。
根本原因の分析-修正が最も簡単なバグは、これまでになかったものです。チームがこのバグを調べて、それがどのようになったかを調べる必要があるかもしれません。これは、責任のある人(決して役に立たない人)を罰するのではなく、将来状況を回避する方法を見つけるための決定的な方法です。
より大きな影響分析-findの最も安価なバグは、発見する前に知っていたバグです。このバグを見ると(特に根本原因分析を行った後)、この問題がコードの他の場所に存在している可能性があることがすぐに明らかになる場合があります。その結果、チームは、恥ずかしい瞬間に醜い頭を上げる前に、それを見つけに行くことを選択できます。
これらに費やされる時間(ある場合)は、コードの成熟度と品質レベルに大きく依存します。根本原因の分析は、デモンストレーションコードに取り組んでいる小さなチームにとってはやり過ぎになる可能性がありますが、ビジネスクリティカルな開発を行う大規模なチームは、レッスンを効果的かつ効率的に学習する必要があります。
経験上、開発者がツールの使用を避けている理由は2つあります。
項目1は、より良い/より単純なシステムが必要になる可能性があることを示しています。あるいは、既存のシステムのより説得力のある正当化が適切かもしれません。
項目2は、現在のタスク割り当てに関する開発リーダーへの有用な警告サインでなければなりません。
私はほとんどFrustratedWithFormsDesignに同意しますが、問題全体を2つの領域に分類するとさらに明確になると思います。
これらはしばしば同じものとして扱われ、それらを分離することはほぼ間違いなく多くの助けになります。
これらは次の方法で処理できます:バグ報告:-みんなが言うように、システムに入れてください。
バグ修正:-毎週または2週間(開発スケジュールに合わせて調整など)誰もがプロジェクトに参加し、何を修正するか、誰が修正するかを決定します。終わり。アジャイル開発では、これはスプリント計画会議です。
人々が使用する優れたツールwantも大きな違いを生みます。私はPivotal Trackerが好きで、自分のプライベートプロジェクトでやりたいことや修正したいことを追跡するためだけに使い始めたとき、「本当に便利なツール」テストに合格しました。