git bisect コマンドを使用するときは、Java プログラムの各二分点で失敗したテストのみを実行します。ただし、git bisect に関連する多くのチュートリアルでは、「make; make test」の実行が提案されています。各ステップですべてのテストを実行する必要がある理由はありますか? よろしくお願いします。
2 に答える
@bcmcfc が言及した条件は必要ですが、十分ではないと言わざるを得ません。参考までに彼の条件は
- すべてのテストは、良好とマークされたコミットで合格します
- 一部のテストは、悪いとマークされたコミットで失敗します
私の問題は、good
コミットとbad
. たとえば、介在するコミットで発見され修正された別のバグはありましたか? そのバグまたはその修正がこのバグに影響を与えたと考えられます。
もう 1 つの問題は、履歴に「ダーティ」コミットが存在する可能性があることです。あなたの使用パターンはわかりませんが、テストに失敗したコミットが機能ブランチに存在することを許可する人もいます。bisect
失敗することが予想されるテストのみを実行すると、そのコミットで何が起こっているのかを完全には理解できず、バグの修正に迷う可能性があります。バグが導入され、その機能ブランチで修正された後、少し異なる方法で別の機能ブランチに再び導入された可能性もあります。これは、修正するための努力を本当に混乱させるでしょう.
これは、「理論上は理論と実践の間に違いはないが、実際には違いがある」という古い格言の一例のように思えます。私は毎回すべてのテストを実行します。そして、それらすべてが期待どおりに進んだ場合、努力を無駄にしたと感じるべきではありません。何が起こっているのかを知っていることを知って、自信を持って輝かなければなりません。
もしも:
- すべてのテストは、良好とマークされたコミットで合格します
- 一部のテストは、悪いとマークされたコミットで失敗します
そうです、二分プロセスを高速化するために、失敗したテストのみを実行しても安全です。良いコミットと悪いコミットのテスト結果から、残りのテストに合格する必要があると推測できます。
どのような場合でも、問題のバグを修正した後、おそらく完全なテスト スイートを再実行するでしょう。これにより、バグ修正によってリグレッションが発生する場合がカバーされます。