修正したと思うバグを処理する方法


13

いくつかの種類のバグがあり、それらは再現するのが非常に難しく、ごくまれに、ランダムに発生します。考えられる原因を見つけて修正し、プログラムをテストしても、バグを再現できないことがあります。ただし、バグを確実に再現することは不可能であり、まれにしか発生しなかったため、バグトラッカーでこれをどのように示すことができますか?それを行う一般的な方法は何ですか?

statusを固定に設定すると、solution完全に固定されたものになりますか?

「固定」と「開く」を設定しstatussolution、テスターに​​「おそらく修正されているが、確認するにはもっと注意が必要」であることを示すのは一般的な習慣ですか?

編集:ほとんどの(すべてではないにしても)バグトラッカーには、バグのステータスに関する2つのプロパティがあります。名前は同じではない可能性があります。ことでstatus私が意味する、固定、割り当てられ、新しいなど、閉じられ、そしてによってsolution私が意味する、(新)オープン固定、バグ、複製、再現性のない、解けないなど、


3
これは、バグ追跡システムに特有のものです。ステータスソリューションに割り当てることができる他の値は何ですか?
スカーフリッジ

一部のバグ追跡システムでは、解決済みのステータスと終了済みの別のステータスがあります。ステータスをクローズに設定できるのはQAの人だけですが、開発者はステータスを解決済みに設定できます。
ブライアン

回答:


8

ステータスを固定に、ソリューションをオープンに設定し、テスターに​​「おそらく修正されているが、確認するにはもっと注意が必要」であることを示すのが一般的な方法ですか?

よくあるかどうかにかかわらず、これはとにかく行うべき正しいことであり、あなたはなぜあなた自身をレイアウトしました:どのように、それは良いアプローチです

「おそらく修正されているが、確認するにはもっと注意が必要」とテスターに​​示す


特定のバグトラッカーにのようなフィールドがなくてもsolution、開発者は少なくとも上記の自由形式のコメントを追加できます。

...バグトラッカーが問題にコメントを追加することを許可しない場合は、コメントを追加するものに置き換える必要があります。自由形式の説明を追加する機能は非常に重要な機能です。これは、定義済みのフォームに収まるには問題が多すぎるためです。


6

テストチームは、問題が解決されたかどうか、および問題を解決できるかどうかを判断します。さらなる回帰、修正の副作用がある場合、または修正自体が別のシナリオで効果的でない場合、問題は再開されます。ただし、十分な開発者テストを行った場合は、修正済みとしてマークする方が適切です。


+1-これは最も単純な答えです。懸命に試してみて、テストチームのテストスイートの強度が十分であれば、さらに何ができるでしょうか?
オズ

3

再現するのが非常に難しく、ランダムに発生することは非常にまれであるように見えるバグのタイプがあります。考えられる原因を見つけて修正し、プログラムをテストしても、バグを再現できないことがあります。

実際、再現可能なテストシナリオがない場合は、そのようなバグを事前に修正しようとさえしません。テスターに​​もっと注意してもらいたい場合は、再現可能なシナリオを作成する機会を与えます。

たとえば、プログラムを変更し、テスターがバグの再現に1時間を費やし、バグがポップアップしないとしましょう-1時間で十分でしたか?または、バグはすでに修正されているため、テストはさらに時間の無駄になりますか?

一方、プログラムを変更せず、バグが1時間以内にポップアップしない場合、テスターはおそらく別のことを試すためにさらに1時間を費やす必要があります。そして、テスターがいつか投資して、それ以上バグを再現できなくなったとき、それを修正しようとするのは本当に価値がありますか?

つまり、バグ追跡システムでそのプロセスをどのようにモデル化するかを考えることができます。それを修正しようとしてテスターに​​引き渡すのは、「オープン」のようなバグステータスかもしれません。テスターがそれを再現できない場合、明らかに「再現不可能」です。うまくいけば、これは起こらず、再現可能なシナリオが見つかり、バグの根本原因を見つけて修正し、ステータスを「修正済み」に設定できます。「それが修正されたかどうかわからない」のようなものに入らないようにしてください。


4
特定のバグタイプでは、再現可能なテストシナリオは存在しません。たとえば、タイミング関連のバグは、平均で 100万回発生する可能性がありますが、3回目または532454回目に実行されるかどうかを予測することはできません。それでも、そのようなバグはバグであり、修正する必要があります。
ジョナスプラッカ

3
@Joonas Pulakka:同意します。そして、そのようなバグは外部環境に依存する可能性があります。組み込みの場合、制御不能な何かによって引き起こされる電力サージに依存する可能性があります。それを修正しようとしないことは、必ずしも最良の解決策ではありません。特に、そのバグの原因になりそうなコードの匂いを見つけた場合です。この場合、なぜ修正しないのですか?
-vsz

2
@JoonasPulakka:再現可能なシナリオについての私の経験では、ほとんどの場合、人々は「それは不可能だ」と言いますが、彼らは物事を可能にするための正しいアイデアを失っています。あなたの例では、「1000万回の実行」ループを使用してシナリオを設定し、妥当な時間内にバグを表示する可能性を少なくとも高めることができます。
Doc Brown

2
@vsz:もちろん修正する必要がありますが、私が提案しているのは、最初にテストを作成し(またはテスターに​​テストのヒントを提供し)、次に修正することです。
Doc Brown

2
@DocBrownが正しい、それを考えるもう1つの方法は、バグを「再現」するために統計的なアプローチが必要になることです。バグを再現する入力/環境の非常に特定のセットがあることは非常によくあるかもしれませんが、これらの入力が何であるかがわからない場合があり、可能な入力のセットは反復するには大きすぎる可能性があります。これらの場合、1つのアプローチは、バグに対処しようとするたびに、バグの発生に関する統計を収集することです。時間がかかる場合があり、その結果は統計的な意味で100%の「信頼」を与えないかもしれませんが、時にはそれがすべてです。
アンジェロ

0

時々、あなたが持っている唯一の証拠は純粋に統計的です。例えば、それは月に1回か2回発生しますが、それ以外は何にも関連していないようです。これらは、修正が確実に効果を発揮するかどうかを判断できないため、私が遭遇したことを診断して解決するのに最も悪いタイプのバグです。私が解決しなければならなかったこれらの最後の1つは、統計的な修正で終了しました。症状の頻度は、当初の10%に低下しました。最終的な作品は発見されなかった、または発見されたかもしれないが、誰にも伝える方法がなかった。

私が持っている2つのアドバイスは、(1)別の方法でわかるまで複数の原因が有効であると仮定し、(2)症状がどのように存在する可能性があるかを仮定し、リモートに関係するすべての論理行を切り離します。満足のいく結果を得るには、詳細なウォークスルーが唯一の手段であることがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.